【问题标题】:Android library modules sources not present in .aar file.aar 文件中不存在 Android 库模块源
【发布时间】: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


【解决方案1】:

尝试创建一个pom.xml 文件,其中包含要在应用中使用的必要资源。

【讨论】:

  • 我做到了。它没有用。也许我做错了,你有一些指导吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-23
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
相关资源
最近更新 更多