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

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

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

任何帮助非常感谢!

道格

Solutions Collecting From Web of "如何从一个代码库创build多个Android应用程序"

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

如果您在Android Studio中使用Gradle,目前处理此问题的方法是使用Gradle,Build Type + Product Flavor

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

build立变体

新构build系统的一个目标是能够创build相同应用程序的不同版本。

有两个主要的用例:

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

Google Play商店中的多apk文件的打包方式相同。

这个新概念旨在帮助当差异非常小时。 如果答案是“这是同一个应用程序吗?”是的话,那么这可能是图书馆项目的方法。

注意 :这个答案现在基本已经过时了,可以用资源创build.aar库。 它仍然有效,可能有时候.jar的可移植性是可取的,所以我把它留在这里。

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

  • 在Eclipse中创build一个新的Java项目(而不是一个Android项目),并在那里移动你的模块的源代码。
  • 如果您的模块引用了SDK中的任何类,则需要将Android SDK .jar添加到项目的类path(“项目”>“属性”>“Java构buildpath”>“库”>“添加JAR”)。
  • 当您的模块准备好使用时,将它的.class文件捆绑到一个.jar文件中。 您可以手动执行此操作,也可以查看如何让Eclipse为您执行此操作。
  • 将您的模块.jar文件复制到应用程序主项目的“libs”目录中。
  • 将模块.jar添加到项目的类path(再次,“项目”>“属性”>“Java构buildpath”>“库”>“添加JAR”)。

现在,您应该可以使用相同的.jar构build多个应用程序,同时只保留模块源代码的一个副本。

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

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

这个想法是使用reflection,而不是方向引用的代码。 确保每次都使用优化的reflection而不是查找。

参考

你可能要考虑使用像Subversion(或GIT)这样的源代码控制系统。 将大部分function完整版保留在主干中,并为使用不同数据源的独立版本创build分支,或者要求进行较小的布局更改等。