【发布时间】:2015-04-29 11:03:17
【问题描述】:
我发现了很多类似的问题,但没有人帮助我。
我有下一个问题。我有完整的 Android 项目,我必须将它的功能导出到 .aar 库。首先,我创建了新项目并在放置源项目的位置创建了新模块。在这一步一切顺利,我在/build/outputs/aar/ 文件夹中获得了我的mylib.aar 文件。然后我创建了新项目来测试我的mylib.aar,因此我在Android Studio 中的app 文件夹下创建了libs 文件夹,并在我的测试项目的build.gradle 文件中添加了以下几行:
repositories {
flatDir {dirs 'libs'}
}
dependencies {
compile(name: 'mylib', ext: 'aar')
}
在清单文件中,我从库中添加了 MainActivity 的声明:
<activity android:name="com.testlib.mylib.MainActivity"
android:label="MainActivity"/>
Android Studio 很好地找到了这个文件,我什至可以通过内置的反编译器观看源代码。但是,当我尝试从另一个未放在我的库中的活动开始此活动时,我收到此错误:
3838-3838/com.testapp.testsdkapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.testapp.testsdkapp, PID: 3838
java.lang.NoClassDefFoundError: com.testlib.mylib.MainActivity$RegisterInBackgroundTask
at com.testlib.mylib.MainActivity.registerInBackground(MainActivity.java:1551)
at com.testlib.mylib.MainActivity.onCreate(MainActivity.java:269)
at android.app.Activity.performCreate(Activity.java:5937)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
RegisterInBackgroundTask 是在库中我的 MainActivity 中声明的内部 public AsyncTask 类。我试图将mylib.aar 放在aar 文件夹中并以其他方式在build.gradle 中声明,但这对我没有帮助,我得到了类似的错误。
如果这些信息还不够,我会添加所需的代码部分等。所以请帮助我,如果你知道如何解决我的问题!谢谢。
【问题讨论】:
标签: android android-studio noclassdeffounderror aar