繁体   English   中英

如何将apklib转换为aar

[英]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文件和srcres目录:

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知道如何导入这样的模块。 请按照以下步骤操作:

  1. 将apklib解压缩到临时目录中。 它是zip格式,所以像unzip library.apklib应该可以工作。

  2. 看看什么是解压缩的。 您应该看到一个包含AndroidManifest.xmlsrcres文件夹的目录。

  3. 在Android Studio中,在现有项目中,选择“文件”>“导入模块”,然后将其指向步骤2中的目录。

  4. Android Studio应该通过在新模块中将文件复制到项目中,将它们安排在首选目录结构中来管理导入,并为模块添加build.gradle文件。

  5. 此时你已经开始运行了。 如果您确实需要.aar文件,请检查新模块是否设置为库模块或应用程序模块。 在它的build.gradle ,如果你有apply plugin: 'com.android.library'那么它就是一个库模块,Gradle将生成一个.aar作为构建的一部分:它将在build/outputs/aar成功构建后的目录。

  6. 如果你的模块是作为app模块而不是库导入的( apply plugin: 'com.android.application' ,那么更改那个apply plugin语句,你可能还需要从构建文件中删除applicationId语句。现在它应该编译作为库并生成.aar

  7. 快乐的编码!

你不能将apklib转换为aar。 您必须手动更新依赖项以指向aar文件。 aar被编译并包含lint和proguard规则,apklib不一定能自动确定。

您可以在这里阅读更多有关差异的内容:

Android依赖项:apklib vs aar文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM