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

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

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

任何帮助非常感谢!

道格

  • 在adb安装上INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
  • Android的Eclipse问题无法创buildBuildConfig类
  • adb服务器已过期。 kill ...无法绑定'tcp:5037'ADB服务器没有确认*在ubuntu 14.04 LTS中无法启动守护进程*
  • 无法在Android项目中导入Google云端点客户端库类
  • 是否有可能在Android的操作栏选项卡上有图标?
  • Android Studio能否自动将布局XML文件中的引用抽取到Activity java文件中?
  • Android模拟器快照错误
  • 如何在Eclipse中跳转到XML资源而不是R.java
  • 从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分支,或者要求进行较小的布局更改等。