【发布时间】:2019-11-11 11:19:24
【问题描述】:
我正在编写一个 Android 库。它依赖于另一个 Android 库模块。
- 图书馆
- 库模块
library 依赖于librarymodule,如下所示:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
...
}
dependencies {
...
implementation project(":librarymodule")
}
我想将library 导出为.arr 文件以在应用程序中使用,但librarymodule 的内容未打包到生成的.aar 文件中。
如果我尝试在应用程序中使用此库,则会产生以下错误:
java.lang.ClassNotFoundException:在路径上找不到类“来自 librarymodule 的类”:...
如何将librarymodule 的源代码打包到library.aar 文件中以将其作为一个库发布?
【问题讨论】:
-
gradle 不会将 librarymodule 的代码构建到 library.aar 中,android library module 只是包含自己的源代码和资源。如果你想在应用中正确使用library.aar,你可以将librarymodule上传到maven仓库,让library module通过maven引用它。当您在应用程序中使用 library.aar 时,它会自动下载 librarymodule.aar。
-
感谢您的回复。难道没有别的办法了吗?我的库必须是一个巨大的单体而不能够重用模块吗?
-
如果librarymodule源代码不包含android资源,如布局、字符串、drawables等,你可以将它构建到jar中,然后让library通过jar依赖引用它
-
确实如此。这就是我可能会做的。不幸的是,它限制了我在模块中使用诸如 Retrofit 或 Room 之类的 Android 工具。再次感谢。
标签: android module android-library aar