由于Gradle不支持apklib
依赖关系,如何从apklib
依赖关系迁移到aar
依赖关系?是否可以手动或自动将apklib
依赖项转换为aar
?如果是-如何-如果不是-为什么不呢?
在这个问题中,我假设我没有apklib
的原始项目,而是文件本身。
最佳答案
apklib不包含目标文件,仅包含源文件,因此,可以将其包含在项目中的唯一方法是重新编译它。根据一些文档,您可以阅读以下内容:
Android dependencies : apklib vs aar files和https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau
您可以在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知道如何导入如下所示的模块。因此,请按照下列步骤操作:
unzip library.apklib
之类的东西。 AndroidManifest.xml
,src
和res
文件夹的目录。 build.gradle
文件。 .aar
文件,请检查新模块是否设置为库模块或应用程序模块。在其build.gradle
中,如果您具有apply plugin: 'com.android.library'
,则它是一个库模块,并且Gradle将生成.aar
作为构建的一部分:成功构建后,它将位于build/outputs/aar
目录中。 apply plugin: 'com.android.application'
)导入的,则更改该apply plugin
语句,您可能还需要从构建文件中删除applicationId
语句。现在它应作为库编译并生成.aar
。