- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
由于 Gradle 不支持 apklib
依赖项,如何从 apklib
依赖项迁移到 aar
依赖项?是否可以手动或自动将 apklib
依赖项转换为 aar
?如果是 - 如何,如果不是 - 为什么不?
在这个问题中,我假设我没有 apklib
的原始项目,而是文件本身。
最佳答案
apklib 不包含目标文件,只包含源文件,因此它可以包含在任何 项目中的唯一方法是重新编译它。根据一些文档,您可以阅读:
Android dependencies : apklib vs aar files和 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 的帖子中看到,生成 apklib 的任务只是压缩 AndroidManifest.xml
文件以及 src
和 res
目录:
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 中的现有项目中,选择"file">“导入模块”并将其指向第 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
。
编码愉快!
关于android - 如何将 apklib 转换为 aar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27924504/
我们向客户发送了一个 android sdk (aar) 文件。我们的代码在内部使用两个第 3 方 aar,我们在我们的 repo 和 gradle 在运行时引用它。我的问题是如何将这些依赖项发送给客
我正在努力构建可用于其他应用程序的 SDK。 我的项目结构如下: ProjectFolder | +--AndroidLibs | | | +--UI (andro
如果我有作为 SDK 的项目 A,并且它作为 AAR 导出到项目 B 中,项目 B 将模块作为 AAR 导入,我该如何链接这两个模块,所以对项目 B 中的 AAR 所做的更改不会必须在原始项目-A中复
我是一名插件开发人员,我的插件依赖于两个 aar 库。当我导出为 aar 存档时,我的依赖库不是它的一部分。我的项目结构如下所述 App lib1 --aartool lib2 lib3
我有一个以 aar 格式分发的 android 库。它重300kb。我想创建另一个库,也是 aar 格式,其中依赖项中的第一个库。但是结果库权重是30kb,显然不包括第一个库。 我尝试使用 flatD
如何访问 AAR 库中的 Activity,它不是直接包含在项目中而是嵌入到另一个 AAR 库中? 我得到一个错误 java.lang.NoClassDefFoundError: Failed res
你能帮我理解构建 android 库并在用户应用程序中使用它的一般概念吗。 那么,有以下情况: 在android studio中有以下模块: 核心 数据 绘图 还有一个模块 应用 依赖于上述模块。 a
关于 Gradle 中 AAR 文件的传递依赖关系存在一些问题: Android Studio 0.2.3 cannot resolve transitive aar dependencies And
我看到了各种开发人员发布的问题(Android Studio combine 2 .aar into one 和其他人),但我还没有看到明确的答复使我能够创建一个包含 1 个或多个 AAR 或 JAR
我正在使用Xamarin开发一个APP,需要使用Android Studio(AS)开发的其他aar。 在 AS 中,我创建了一个名为“javaLib”的 Java 库模块。构建后,我得到了javaL
无法发布配置“文件”,无法发布 Artifact danlu-bluetooth.aar (/Users/xxx/work/xxx/workplace/androidcode/libraray/xxx
我正在使用 Android Studio 1.5。我有一个图书馆项目,core-speech-service.aar。此 AAR 文件已正确生成(所有类都构建并打包在 AAR 文件中的 classes
我写了一些库,它有一部分 UI。此外,此库使用其他库。我想提供版本 .aar 以在任何应用程序中使用此 UI 部分。 我的图书馆有下一个依赖: compile 'com.android.sup
所以,事情是这样的,我有一个 .aar 文件,当我将它添加为依赖项时,如下所示: 编译('com.foo:bar:1.0.0@aar') 它生成以下文件: build > intermediates
我正在使用另一个 aar 和 jar 文件依赖项创建 AAR 文件。我已成功创建 .aar 发布文件。 然后,我将新的 AAR 文件导入到示例项目中。该项目运行良好。当访问 aar 和 jar 类时,
我正在创建一个具有“directions-api.aar”(Here-Maps 小部件库)的旧依赖项的 android 应用程序,现在我需要为 Map 的实现添加“HERE-sdk.aar”。 这导致
我通过将我的应用程序转换为库来为应用程序贴上白色标签,并且我有一个配置文件被传递到库以更改颜色、添加新的加载动画、更改一些文本等。库拥有所有这些上面列出的依赖项。当我将库导入新应用程序时,由于新应用程
我有一个顶级 android 库模块(包含 res 文件夹)依赖于其他库子模块(无 res)。我想构建一个顶层模块的 fat aar,它应该包括子模块的 jar 以及我在 build.gradle 中
我在 Intranet maven repo 中有一个 utility.aar。它使用了一些众所周知的 jar ,例如 gson。我已将它们定义为实用程序模块的 build.gradle 中的编译依赖
我正在按照 camera_deep_ar 上的插件页面中给出的文档进行操作 我已将 minimumSdkVersion 设置为 19 在 AndroidManifest.xml 中正确赋予权限 正确设
我是一名优秀的程序员,十分优秀!