我有一个Android代码库,它使用带有设置的API来获取多个应用的不同数据。所有应用程序使用相同的代码库,但有一两个设计调整。那么如何重新使用主代码库而不必每次都复制整个Android项目呢?
iPhone在同一项目中使用多个目标,效果很好。如果android不能这样做,我需要在一个项目中编译代码库的二进制文件,然后导入到每个新的应用程序项目?如果是这样的话?我正在使用Eclipse并且是一名中级Java开发人员。
非常感谢任何帮助!
道格
答案 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。它的工作原理如下:
现在你应该能够使用相同的.jar构建多个应用程序,同时只保留模块源代码的一个副本。
根据您的具体情况,这可能会或可能不会比标准的Android库机制更适合您。但值得考虑作为替代方案。
答案 3 :(得分:1)
如果没有使用太多“不同的API”,Android文档会推荐另一种方法。
这个想法是使用反射而不是对代码进行方向引用。确保每次都使用优化反射而不是查找。
参考
答案 4 :(得分:0)
您可能需要考虑使用Subversion(或GIT)等源代码控制系统。在主干中保留功能最完整的版本,并为使用不同数据源或需要进行较小布局更改等的单独版本制作分支。