Android 如何将apklib转换为aar
由于Gradle不支持Android 如何将apklib转换为aar,android,android-gradle-plugin,Android,Android Gradle Plugin,由于Gradle不支持apklib依赖项,如何从apklib依赖项迁移到aar依赖项?是否可以手动或自动将apklib依赖项转换为aar?如果是-如何,如果否-为什么不 在这个问题中,我假设我没有apklib的原始项目,而是文件本身。您无法将apklib转换为aar。您必须手动更新依赖项以指向aar文件。aar是编译的,包含apklib不一定能自动确定的lint和proguard规则 您可以在此处阅读更多关于差异的内容: apklib不包含对象文件,只包含源文件,因此它可以包含在任何项目中的唯一
apklib
依赖项,如何从apklib
依赖项迁移到aar
依赖项?是否可以手动或自动将apklib
依赖项转换为aar
?如果是-如何,如果否-为什么不
在这个问题中,我假设我没有apklib的原始项目,而是文件本身。您无法将apklib转换为aar。您必须手动更新依赖项以指向aar文件。aar是编译的,包含apklib不一定能自动确定的lint和proguard规则 您可以在此处阅读更多关于差异的内容:
apklib不包含对象文件,只包含源文件,因此它可以包含在任何项目中的唯一方法是重新编译它。根据一些文档,您可以在以下位置阅读: 及 apklib格式的发明是为了共享Android代码+资源。它本质上是一个压缩的Android库项目,这已经是代码+资源共享的现状 您可以在Chris Broadfoot的帖子中看到,生成apklib的任务只需将
AndroidManifest.xml
文件和src
和res
目录压缩即可:
task apklib(type: Zip) {
appendix = extension = 'apklib'
from 'AndroidManifest.xml'
into('res') {
from 'res'
}
into('src') {
from 'src'
}
}
请注意,他的文章是关于从Gradle创建一个apklib的,这是一件有点奇怪的事情,但它提供了一个关于这些事情是如何构造的非常清晰的想法
好消息是,这是Eclipse作为主要IDE时的“标准”Android项目结构,Android Studio知道如何导入类似这样的模块。因此,请遵循以下步骤:
解压library.apklib
的东西应该可以工作AndroidManifest.xml
、src
和res
文件夹的目录build.gradle
文件.aar
文件,请检查新模块是否设置为库模块或应用程序模块。在它的build.gradle
中,如果你有apply插件:“com.android.library”
,那么它就是一个库模块,gradle将生成一个.aar
作为构建的一部分:成功构建后,它将位于build/outputs/aar
目录中apply plugin:'com.android.application'
),则更改该apply plugin
语句,您可能还需要从构建文件中删除applicationId
语句。现在,它应该编译为库并生成.aar
谢谢。到目前为止,我知道没有现成的解决方案可以做到这一点,但我仍在寻找如何从
apklib
迁移到aar
,而无需手动重新编译每个库(考虑到它们尚未部署为aar
)。