【问题标题】:Can I package an entire android app into a library?我可以将整个 android 应用程序打包到库中吗?
【发布时间】:2016-08-06 18:16:21
【问题描述】:

是否可以将整个 android 应用程序做成一个包以包含到另一个 android 应用程序中?

我说的不仅仅是编译成 .jar 文件的纯 java 代码。我指的是包括所有内容:java 代码、布局等。然后使用意图与这个“库”进行通信。我不想安装单独的 apk 或单独的应用程序。就像一个完整的 apk 被包含在另一个 apk 中,并使整个 apk 成为一个新的应用程序。清单可能需要以不同方式处理。

我查看了本教程,但只是列出了一个带有普通 java 代码的常规 .jar。

http://www.vogella.com/tutorials/AndroidLibraryProjects/article.html

非常感谢任何指针。 谢谢!

【问题讨论】:

标签: java android jar apk


【解决方案1】:

您可以制作 .aar 存档,是的。有几点需要了解:

  • aar 作为库项目构建,带有 gradle 插件“com.android.library”
  • 您仍然需要一个 shell 应用程序项目,该项目声明对从库构建的 aar 的依赖关系。
  • aar 将拥有自己的清单和资源。清单和资源将合并到 shell 应用程序的清单中。您最好了解清单合并的过程。
  • 当然,aar 会有自己的代码,shell 应用程序不能复制 aar 中包含的类。
  • shell 应用程序需要在自己的 build.gradle 中声明自己的应用程序 ID,以及使用“com.android.application”插件构建的应用程序所需要的其他必需属性。
  • 任何应用程序设置都不能与来自 aar 的设置发生冲突。例如,您的目标 API 级别不能低于 aar 中的最低级别。
  • 应用程序无法覆盖 aar 中定义的任何资源。相反,库会覆盖应用中定义的资源。

如果您将 aar 直接包含在应用程序的文件结构中,则需要像这样(或类似)声明对它的依赖:

repositories {
    flatDir {
        dirs 'libs'  // place the aar in here
    }
}
dependencies {
    compile(name:'fileNameOfAarWithoutExtension', ext:'aar')
}

但是如果你将 aar 作为 maven 依赖分发,你可以简单地使用 maven 坐标。

可能还有其他事情要知道,但这就是我能想到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多