我有一个Android应用程序,这是一个付费应用程序,我想制作一个免费版本。对于免费版本,源代码将是95%相同。我使用git
进行源代码管理,我最初的想法是在free
之外创建一个master
分支,这样我就可以轻松地将付费版本中的更改合并到免费版本中。
这是正确的策略,请记住free
分支中的某些更改永远不会合并回master
吗?
其他选项包括:
master
中并创建免费版和付费版都使用的库代码答案 0 :(得分:2)
我希望将代码保持在一起,并在分支上使用条件编译和/或“付费”插件库。在开发期间,分支应该表示源树的转移。分支不应该用于维护单独的代码库。
答案 1 :(得分:0)
您可以创建付费主人和免费主人。使用git flow技术管理新功能和错误修复。
答案 2 :(得分:0)
使用gradle build system,您可以为您的应用创建不同的“风味”。
android {
...
defaultConfig { ... }
signingConfigs { ... }
buildTypes { ... }
productFlavors {
paid {
applicationId "donturner.app.paid"
versionName "1.0-paid"
}
free {
applicationId "donturner.app.free"
versionName "1.0-free"
}
}
}
然后,您可以为这些构建版本创建其他源文件夹,这些文件夹可用于提供不同的实现。例如。 app/src/free/java/ClassWithDifferences.java
将提供“免费”实施app/src/paid/java/ClassWithDifferences.java
。
注意:app/src/main/
中的代码在所有风格之间共享;所以一定不能app/src/main/java/ClassWithDifferences.java
。并确保正确使用这些口味,例如只存在于自由味道中的类不得在main中引用,也不得在pay中引用。