由于Gradle不支持apklib依赖项,如何从apklib依赖项迁移到aar依赖项?是否可以手动或自动将apklib依赖项转换为aar?如果是-怎么做,如果没有-为什么不呢?
在这个问题中,我假设我没有apklib的原始项目,而是文件本身。
发布于 2015-02-20 20:05:37
apklib不包含对象文件,只包含源文件,因此在(任何项目)中包含它的唯一方法是重新编译它。根据一些你可以阅读的文档:
Android dependencies : apklib vs aar files和https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau
apklib格式是作为共享Android code+resources的一种方式而发明的。它本质上是一个经过压缩的安卓库项目,这已经是code+resource共享的现状。
您可以在Chris的文章中看到,生成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知道如何导入像这样的模块。因此,请遵循以下步骤:
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。发布于 2015-02-20 11:45:53
不能将apklib转换为aar。您必须手动更新依赖项以指向aar文件。aar是编译的,包含lint和pro卫士规则,apklib不一定能自动确定这些规则。
您可以在这里阅读更多关于这些差异的内容:
https://stackoverflow.com/questions/27924504
复制相似问题