在这个问题中,我假设没有原始的apklib项目,而只有该文件本身。
apklib不包含目标文件,只包含源代码文件,因此它只能通过重新编译来包含在任何项目中。根据一些文档,你可以在以下链接中阅读到:
Android 依赖:apklib vs AAR 文件 和 https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau
apklib 格式是作为共享 Android 代码和资源的一种方式而发明的。它本质上是一个被压缩的 Android 库项目,而这已经是用于共享代码和资源的现状。
你可以在 Chris Broadfoot 的帖子中看到生成 apklib 的任务只是将 AndroidManifest.xml
文件和 src
、res
目录打包成 zip 文件:
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
目录中。
如果您的模块作为应用程序模块而不是库导入(apply plugin: 'com.android.application'
),则更改该 apply plugin
语句,您还可能需要从构建文件中删除 applicationId
语句。现在它应该编译为库并生成一个 .aar
。
愉快地编码吧!
你不能将apklib转换为aar。你必须手动更新依赖项,指向一个aar文件。aar已经编译并包含lint和proguard规则,这些规则apklib不能自动确定。
你可以在这里阅读更多关于它们之间的区别:
apklib
迁移到aar
的想法,而不需要手动重新编译每个库(考虑到它们尚未部署为aar
)。 - Dmitry Zaytsev