【发布时间】:2016-12-14 15:26:46
【问题描述】:
我有一个 Android 项目,里面有一个库模块,我的项目工作正常,编译项目我将 .aar 包含在测试项目中,一切正常。 现在,我在我的库模块中添加了一个扩展应用程序的 Activity,Y 在库的 manifiest.xml 中添加了这个类
<application
android:allowBackup="true"
android:label="@string/app_name"
android:name=".MyActivityExtendsApplications"
当我测试项目时,它运行良好,但是当我使用 .aar 并在其他项目上测试它时失败。问题是它没有找到活动扩展应用程序......我已经反编译了aar,我看到一切都是正确的,所有类都在文件夹内 错误是
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.mylibrary.MyActivityExtendsApplications" on path: DexPathList[[zip file "/data/app/com.myapplication-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myapplication-1/lib/arm, /vendor/lib, /system/lib]]
Suppressed: java.lang.ClassNotFoundException: com.mylibrary.MyActivityExtendsApplications
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
我在库 .aar 中添加大依赖项在所有情况下都以相同的方式
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
testCompile 'junit:junit:4.12'
compile 'mylibrary-debug.mylibrary-debug@aar'
}
repositories{
flatDir{
dirs 'libs'
}
}
我在我的测试项目中检查了合并的清单,并且活动在那里
application
android:name="com.mylibrary.MyActivityExtendsApplications"
android:allowBackup="true"
我可以在我的测试项目中导入这个活动并查看代码
我在 libs 文件夹中添加了 mylibrary。 当我删除活动 MyActivityExtendsApplications 时,我的库工作正常。
【问题讨论】:
-
让 Activity 扩展应用程序的目的是什么?
-
嗨@petrumo,我需要这个,因为我的 aar 实现了altbeacon.github.io/android-beacon-library/samples.html,我需要从后台开始
-
哇,我很惊讶 Activity 甚至能够扩展 Application。这当然不是 Android 信标库用于后台启动的预期用途。我不想用这个不寻常的应用程序使用问题来回避这个问题,但如果需要,我很乐意在不同的问题中解决它。