如何从一个代码库创建多个Android应用程序

时间:2010-11-15 19:55:50

标签: android eclipse

我有一个Android代码库,它使用带有设置的API来获取多个应用的​​不同数据。所有应用程序使用相同的代码库,但有一两个设计调整。那么如何重新使用主代码库而不必每次都复制整个Android项目呢?

iPhone在同一项目中使用多个目标,效果很好。如果android不能这样做,我需要在一个项目中编译代码库的二进制文件,然后导入到每个新的应用程序项目?如果是这样的话?我正在使用Eclipse并且是一名中级Java开发人员。

非常感谢任何帮助!

道格

5 个答案:

答案 0 :(得分:14)

从Android文档中查看“使用库项目”。这应该是您正在寻找的:http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

答案 1 :(得分:10)

如果您使用带有Gradle的Android Studio,目前解决此问题的方法是使用Gradle,Build Type + Product Flavor

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants

构建变体

新构建系统的一个目标是启用创建同一应用程序的不同版本。

有两个主要用例:

同一应用程序的不同版本 例如,免费/演示版本与“专业”付费应用程序。

相同的应用程序在Google Play商店中针对multi-apk进行了不同的打包。

这个新概念旨在帮助解决差异非常小的问题。如果“这是同一个应用程序吗?”的答案是肯定的,那么这可能是审查图书馆项目的方法。

答案 2 :(得分:4)

注意:现在人们可以使用资源创建.aar库,这个答案基本上已经过时了。尽管如此,它仍然有效,并且有时候.jar的可移植性是可取的,所以我将它留在这里。

Blumer的答案很好,你一定要看看Android的图书​​馆项目的想法。但是,还有另一种选择。如果您的模块只包含Java代码,但没有任何类型的资源(图像,布局等),则可以单独将其编译为.jar文件,并在多个应用程序项目中使用生成的.jar。它的工作原理如下:

  • 在Eclipse中创建一个新的Java项目(不是Android项目)并在那里移动模块的源代码。
  • 如果您的模块引用SDK中的任何类,则需要将Android SDK .jar添加到项目的类路径中(项目>属性> Java构建路径>库和>添加JAR)。
  • 当您的模块可以使用时,将其.class文件捆绑到.jar中。您可以手动执行此操作,也可以查看如何让Eclipse为您执行此操作。
  • 将您的模块.jar文件复制到应用程序主项目的“libs”目录中。
  • 将模块.jar添加到项目的类路径中(同样,Project> Properties> Java Build Path> Libraries> Add JAR)。

现在你应该能够使用相同的.jar构建多个应用程序,同时只保留模块源代码的一个副本。

根据您的具体情况,这可能会或可能不会比标准的Android库机制更适合您。但值得考虑作为替代方案。

答案 3 :(得分:1)

如果没有使用太多“不同的API”,Android文档会推荐另一种方法。

这个想法是使用反射而不是对代码进行方向引用。确保每次都使用优化反射而不是查找。

参考

答案 4 :(得分:0)

您可能需要考虑使用Subversion(或GIT)等源代码控制系统。在主干中保留功能最完整的版本,并为使用不同数据源或需要进行较小布局更改等的单独版本制作分支。