如何将 apklib 转换为 aar
How to convert apklib to aar
由于 Gradle 不支持 apklib
依赖关系,如何从 apklib
依赖关系迁移到 aar
依赖关系?是否可以手动或自动将 apklib
依赖项转换为 aar
?如果是 - 如何,如果不是 - 为什么不?
在这个问题中,我假设我没有 apklib
的原始项目,而是文件本身。
您无法将 apklib 转换为 aar。您必须手动更新依赖项以指向 aar 文件。 aar 已编译并包含 apklib 不一定自动确定的 lint 和 proguard 规则。
您可以在此处详细了解差异:
Android dependencies : apklib vs aar files
apklib 不包含目标文件,只包含源文件,因此它可以包含在 any 项目中的唯一方法是重新编译它。根据一些文档,您可以在以下位置阅读:
Android dependencies : apklib vs aar files and https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau
The apklib format was invented as a way to share Android code+resources. It’s essentially a zipped up Android library project, which was already the status quo for code+resource sharing.
您可以在 Chris Broadfoot 的 post 中看到生成 apklib 的任务只是压缩 AndroidManifest.xml
文件以及 src
和 res
目录:
task apklib(type: Zip) {
appendix = extension = 'apklib'
from 'AndroidManifest.xml'
into('res') {
from 'res'
}
into('src') {
from 'src'
}
}
请注意,他的 post 是关于从 Gradle 创建一个 apklib,这是一件有点奇怪的事情,但它提供了一个关于这些事情是如何发生的非常清楚的想法结构化。
好消息是,这是 "standard" Android Eclipse 是主要 IDE 时的项目结构,并且 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
.
编码愉快!
由于 Gradle 不支持 apklib
依赖关系,如何从 apklib
依赖关系迁移到 aar
依赖关系?是否可以手动或自动将 apklib
依赖项转换为 aar
?如果是 - 如何,如果不是 - 为什么不?
在这个问题中,我假设我没有 apklib
的原始项目,而是文件本身。
您无法将 apklib 转换为 aar。您必须手动更新依赖项以指向 aar 文件。 aar 已编译并包含 apklib 不一定自动确定的 lint 和 proguard 规则。
您可以在此处详细了解差异:
Android dependencies : apklib vs aar files
apklib 不包含目标文件,只包含源文件,因此它可以包含在 any 项目中的唯一方法是重新编译它。根据一些文档,您可以在以下位置阅读:
Android dependencies : apklib vs aar files and https://plus.google.com/+ChristopherBroadfoot/posts/7uyipf8DTau
The apklib format was invented as a way to share Android code+resources. It’s essentially a zipped up Android library project, which was already the status quo for code+resource sharing.
您可以在 Chris Broadfoot 的 post 中看到生成 apklib 的任务只是压缩 AndroidManifest.xml
文件以及 src
和 res
目录:
task apklib(type: Zip) {
appendix = extension = 'apklib'
from 'AndroidManifest.xml'
into('res') {
from 'res'
}
into('src') {
from 'src'
}
}
请注意,他的 post 是关于从 Gradle 创建一个 apklib,这是一件有点奇怪的事情,但它提供了一个关于这些事情是如何发生的非常清楚的想法结构化。
好消息是,这是 "standard" Android Eclipse 是主要 IDE 时的项目结构,并且 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
.编码愉快!