【问题标题】:How to convert apklib to aar如何将 apklib 转换为 aar
【发布时间】:2015-01-13 14:32:40
【问题描述】:

由于 Gradle 不支持 apklib 依赖项,如何从 apklib 依赖项迁移到 aar 依赖项?是否可以手动或自动将apklib 依赖项转换为aar?如果是 - 如何,如果不是 - 为什么不呢?

在这个问题中,我假设我没有 apklib 的原始项目,而是文件本身。

【问题讨论】:

    标签: android android-gradle-plugin


    【解决方案1】:

    apklib 不包含目标文件,只包含源文件,因此它可以包含在 any 项目中的唯一方法是重新编译它。根据一些文档,您可以在以下位置阅读:

    Android dependencies : apklib vs aar fileshttps://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. 1234563应该编译为一个库并生成一个.aar
    7. 编码愉快!

    【讨论】:

      【解决方案2】:

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

      您可以在这里阅读更多关于差异的信息:

      Android dependencies : apklib vs aar files

      【讨论】:

      • 谢谢。到目前为止,我知道没有开箱即用的解决方案,但我仍然在寻找关于如何从 apklib 迁移到 aar 而无需手动重新编译每个库的任何想法(采取考虑到它们尚未部署为aar)。
      猜你喜欢
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多