首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将apklib转换为aar

如何将apklib转换为aar
EN

Stack Overflow用户
提问于 2015-01-13 14:32:40
回答 2查看 5.1K关注 0票数 8

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 20:05:37

apklib不包含对象文件,只包含源文件,因此在(任何项目)中包含它的唯一方法是重新编译它。根据一些你可以阅读的文档:

Android dependencies : apklib vs aar fileshttps://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau

apklib格式是作为共享Android code+resources的一种方式而发明的。它本质上是一个经过压缩的安卓库项目,这已经是code+resource共享的现状。

您可以在Chris的文章中看到,生成apklib的任务只是压缩AndroidManifest.xml文件以及srcres目录:

代码语言:javascript
复制
task apklib(type: Zip) {
    appendix = extension = 'apklib'

    from 'AndroidManifest.xml'
    into('res') {
        from 'res'
    }
    into('src') {
        from 'src'
    }
}

请注意,他的文章是关于从Gradle创建apklib的,这是一个有点奇怪的事情,但它提供了一个非常清楚的概念,其中一个东西是如何构造的。

好消息是,当Eclipse是主要的IDE时,这是“标准”的Android项目结构,Android知道如何导入像这样的模块。因此,请遵循以下步骤:

  1. 将apklib解压缩到一个临时目录中。它是zip格式的,所以像unzip library.apklib这样的东西应该可以工作。
  2. 看看什么东西没包装好。您应该会看到一个包含AndroidManifest.xmlsrcres文件夹的目录。
  3. 在Android中,在现有项目中,选择File > Import,并将其指向步骤2中的目录。
  4. Android应该通过将文件复制到新模块中的项目中来管理导入,并将它们安排在其首选的目录结构中,并为模块添加一个build.gradle文件。
  5. 在这一点上,你已经开始运行了。如果您确实想要.aar文件,那么检查您的新模块是设置为库模块还是应用程序模块。在它的build.gradle中,如果您有apply plugin: 'com.android.library',那么它就是一个库模块,而Gradle将生成一个.aar作为构建的一部分:在成功构建之后,它将位于build/outputs/aar目录中。
  6. 如果您的模块导入为应用程序模块而不是库(apply plugin: 'com.android.application' ),则更改该apply plugin语句,您可能还需要从构建文件中删除applicationId语句。现在,它应该作为一个库编译并生成一个.aar
  7. 编码愉快!
票数 12
EN

Stack Overflow用户

发布于 2015-02-20 11:45:53

不能将apklib转换为aar。您必须手动更新依赖项以指向aar文件。aar是编译的,包含lint和pro卫士规则,apklib不一定能自动确定这些规则。

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

Android dependencies : apklib vs aar files

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27924504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档