我可以将整个Android应用程序打包到库中吗?

时间:2016-04-14 23:39:16

标签: java android jar apk

是否可以将整个Android应用程序包装到另一个Android应用程序中?

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

我查看了这个教程,但只是列出了普通的.jar和普通的java代码。

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

任何指针都非常感激。 THX!

1 个答案:

答案 0 :(得分: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坐标。

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