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

22

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

iPhone在同一项目中使用多个目标,这很有效。如果Android无法做到这一点,我是否需要在一个项目中编译代码库的二进制文件,然后导入到每个新应用程序项目中?如果是这样,怎么做?我正在使用Eclipse。


1
请在 developer.android.com 上查看井字棋库的示例。 - Tyler
5个回答

14

10

如果你正在使用带有Gradle的Android Studio,解决这个问题的当前方式是使用Gradle、构建类型+产品风味。

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

构建变体

新构建系统的一个目标是使创建同一应用程序的不同版本成为可能。

有两个主要用例:

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

为Google Play商店中的多APK打包的不同方式打包的相同应用程序。

当差异非常小的时候,这个新概念被设计来帮助你。如果回答“这是同一个应用程序吗?”是肯定的,那么它可能比库项目更适合。


4
注意:由于现在可以创建具有资源的.aar库,因此此答案基本上已过时。尽管如此,它仍然有效,并且在需要可移植性的.jar时可能会出现,因此我将其保留在这里。
Blumer的回答很好,你应该一定要了解Android的库项目。但是,还有另一种选择。如果您有一个仅包含Java代码而没有任何资源(图像、布局等)的模块,可以将其单独编译成.jar文件,并在多个应用程序项目中使用生成的.jar。它的工作方式如下:
  • 在Eclipse中创建一个新的Java项目(而不是Android项目),并将您的模块的源代码移动到其中。
  • 如果您的模块引用了SDK中的任何类,则需要将Android SDK .jar添加到项目的类路径中(项目>属性> Java构建路径>库>添加JAR)。
  • 当您的模块准备好使用时,将其.class文件打包成.jar文件。您可以手动执行此操作,也可以查找如何让Eclipse为您执行此操作。
  • 将您的模块.jar文件复制到应用程序主项目的“libs”目录中。
  • 将模块.jar添加到项目的类路径中(同样,项目>属性> Java构建路径>库>添加JAR)。
现在,您应该能够构建多个使用相同的.jar的应用程序,同时只维护一个模块源代码的副本。
根据您的特定情况,这可能对您比标准Android库机制更有效,但是考虑它作为另一种选择是值得的。

"Working With Library Projects" 不就是这个意思吗(但没有手动步骤)? - user1697575
@user1697575:是的。我编辑了我的答案以表明,现在我们有真正的Android库项目,这基本上已经过时了。 - Dalbergia

1

0
你可能想考虑使用像Subversion(或GIT)这样的源代码控制系统。将最完整的版本保留在主干中,并为使用不同数据源或需要进行轻微布局更改等不同版本创建分支。

1
不确定为什么有人会对此进行负投票。在您有多个应用程序基于模板代码库构建的情况下,这可能是合适的,并且并非所有应用程序都是基于最新模板构建的。(例如,考虑一种情况,您拥有一个模板,向外部客户授权使用,但如果他们想要升级到最新模板,则需要向他们收费。并非所有客户都会支付升级费用。) - Tim Norman
3
我建议使用库,而不是我2年前所写的代码。库更简单易用且容易维护。 - Bryan Denny
这个问题是关于从同一代码库开发构建两个应用程序的。而不是允许多个开发人员为多个版本构建应用程序。你理解错了问题。 - Siddharth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接