[英]How to convert apklib to aar
由于Gradle不支持apklib
依赖项,如何从apklib
依赖项迁移到aar
依赖项? 是否可以手动或自动将apklib
依赖项转换为aar
? 如果是 - 如果没有 - 为什么不呢?
在这个问题中,我假设我没有apklib
原始项目,而是文件本身。
apklib不包含目标文件,只包含源文件,因此它可以包含在任何项目中的唯一方法是重新编译它。 根据一些文档,您可以阅读:
Android依赖项:apklib vs aar文件和https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau
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知道如何导入这样的模块。 请按照以下步骤操作:
将apklib解压缩到临时目录中。 它是zip格式,所以像unzip library.apklib
应该可以工作。
看看什么是解压缩的。 您应该看到一个包含AndroidManifest.xml
, src
和res
文件夹的目录。
在Android Studio中,在现有项目中,选择“文件”>“导入模块”,然后将其指向步骤2中的目录。
Android Studio应该通过在新模块中将文件复制到项目中,将它们安排在首选目录结构中来管理导入,并为模块添加build.gradle
文件。
此时你已经开始运行了。 如果您确实需要.aar
文件,请检查新模块是否设置为库模块或应用程序模块。 在它的build.gradle
,如果你有apply plugin: 'com.android.library'
那么它就是一个库模块,Gradle将生成一个.aar
作为构建的一部分:它将在build/outputs/aar
成功构建后的目录。
如果你的模块是作为app模块而不是库导入的( apply plugin: 'com.android.application'
,那么更改那个apply plugin
语句,你可能还需要从构建文件中删除applicationId
语句。现在它应该编译作为库并生成.aar
。
快乐的编码!
你不能将apklib转换为aar。 您必须手动更新依赖项以指向aar文件。 aar被编译并包含lint和proguard规则,apklib不一定能自动确定。
您可以在这里阅读更多有关差异的内容:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.