gpt4 book ai didi

Android Unity 插件 - 未找到类异常

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:38 26 4
gpt4 key购买 nike

我想导出一个 android 库到 Unity,但是 Android 给出了以下错误:

05-14 12:58:10.601 18408-18408/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.joostverbraeken.weargame, PID: 18408
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.joostverbraeken.weargame/com.joostverbraeken.weargame.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.joostverbraeken.weargame.MainActivity" on path: DexPathList[[zip file "/data/app/com.joostverbraeken.weargame-1/base.apk"],nativeLibraryDirectories=[/data/app/com.joostverbraeken.weargame-1/lib/arm, /data/app/com.joostverbraeken.weargame-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5436)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.joostverbraeken.weargame.MainActivity" on path: DexPathList[[zip file "/data/app/com.joostverbraeken.weargame-1/base.apk"],nativeLibraryDirectories=[/data/app/com.joostverbraeken.weargame-1/lib/arm, /data/app/com.joostverbraeken.weargame-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at android.app.Instrumentation.newActivity(Instrumentation.java:1068)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2322)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 
at android.app.ActivityThread.access$900(ActivityThread.java:153) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1349) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5436) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:735) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
Suppressed: java.lang.NoClassDefFoundError: com.joostverbraeken.weargame.MainActivity
at dalvik.system.DexFile.defineClassNative(Native Method)
at dalvik.system.DexFile.defineClass(DexFile.java:226)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
at dalvik.system.DexPathList.findClass(DexPathList.java:338)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
... 13 more
Suppressed: java.lang.ClassNotFoundException: com.joostverbraeken.weargame.MainActivity
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 12 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

我的 AndroidManifest(我从我的库中复制了一个到 Unity)如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.joostverbraeken.weargame">

<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<application android:icon="@mipmap/ic_launcher" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

依赖关系相当简单,并在 Gradle 中声明:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'], exclude: ['classes.jar'])
provided files('libs/classes.jar')
wearApp project(':wear')
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:support-v4:23.4.0'
}

在一个论坛上,我读到 Unity 需要将依赖项复制到 Assets/Plugins/Android 中,尽管我使用的是 aar 而不是 jar。所以我也将 support-v4-23.3.0-sources.jar 复制到 Assets/Plugins/Android 中,但是 play-services-8.4.0.jar 不是因为它不包含在 Android 系统文件中。包含 play-services-8.4.0.aar,但如果我将其复制到 Unity,则会出现以下错误:

Moving
Temp/StagingArea\android-libraries\play-services-8.4.0\classes.jar to
Temp/StagingArea\android-libraries\play-services-8.4.0\bin\classes.jar:
The system cannot find the file specified.

有人知道如何解决 ClassNotFoundException 吗?

最佳答案

我相信这是由 AndroidManifest.xml 引起的,它与 Unity 生成的 AndroidManiefst.xml 有一些冲突。在这种情况下,unity 不给我们任何错误消息是不友好的,而且只导出 eclipse 项目真的很糟糕。

我今天遇到了同样的异常,所以我做了一些进一步的测试,发现 ClassNotFoundException 只能在 Activity 类中产生。于是我导出了工程,将工程导入到AndriodStudio中重新编译。我在 AndroidManifest.xml 中遇到一些错误,例如主题不正确或图标不正确等。

在更新 AndriodManifest.xml 中所有不正确的配置并重建 AAR 后,一切正常。

希望对您有所帮助。

关于Android Unity 插件 - 未找到类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37225920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com