我们经常会看到两个版本的Android应用:付费版和免费版。我也正在开发一个想要发布两个版本的应用程序。做这个的最好方式是什么?创建两个项目并在其间复制文件似乎并不是我脑海中最好的方法。
答案 0 :(得分:6)
使用Library Project,正如官方开发指南所示:
如果您拥有多个Android项目共有的源代码和资源,则可以将它们移动到库项目中,以便更轻松地跨应用程序和版本进行维护。以下是一些可以使用库项目的常见场景:
如果您正在开发使用某些相同组件的多个相关应用程序,则可以将冗余组件移出各自的应用程序项目,并在库项目中创建一组可重复使用的相同组件。
如果您要创建一个免费和付费版本的应用程序。您将两个版本共有的应用程序部分移动到库项目中。这两个依赖项目具有不同的包名称,将引用库项目,并仅提供两个应用程序版本之间的差异。
答案 1 :(得分:3)
更新:此方法仅适用于使用Eclipse编译,因为Android Studio支持build flavors,可以实现此目的。
虽然@ yorkw和@Nate的答案都很好,但由于其简单性,this是我使用的方法。来自文章:
- com.example.myapp - Android项目库 - 这是我的整个应用程序所在的位置。 FULL和LITE版本的所有功能。
- com.example.myapp.full - Android应用程序项目 - 这是一个包含仅完整版本所需的图形和资源的shell。基本上它是一个超轻量级的外壳。
- com.example.myapp.lite - Android应用程序项目 - 这是另一个只包含lite版本所需的图形和资源的shell。再次,它是一个超轻量级的外壳。
我还在应用程序启动时设置的库类中保留了一个静态变量IS_PRO
。这应该仅用于通知,警报等(例如要求用户升级到专业版)。
但是,此方法有一个缺点:只要修改了库或其资源,必须清理并重建。另外,请务必阅读有关项目与图书馆之间共享资源的this post。
答案 2 :(得分:1)
我称之为FORK正在开发中。开始新的App开发,但是您的公共代码来自公共文件位置。对分叉代码进行基于免费的编辑,并尽力使代码完全分开。
我实际上是在基于iPhone的应用上做到这一点,我有一个免费版本和2个不同的付费版本(仅限一个播放器和一个多播放器)。我会在Android上以同样的方式做到这一点。
答案 3 :(得分:1)
你可以使用git作为例子。
创建分支“app_with_ads”,master将成为您的“付费”版本。 在master中开发并定期合并到另一个。
在发布之前,您可能需要更改应用程序包或Android \ Manifest.xml中的其他内容
答案 4 :(得分:1)
这里有点blog tutorial about doing this。
基本上是一个如何构建同一个应用程序的Full和Lite版本,使用库项目来完成两个版本之间的代码重用。