Mal*_*ist 5 svn version-control android
我在Android市场上有一个付费应用程序,但是,我想发布一个免费的广告支持版本.
我认为最简单的方法是在我的subversion存储库上设置一个分支,其中包含添加广告的附加代码.但是,当我将其提交到Android市场时,它们需要唯一的包名.这个解决方案不再适用于我,因为我必须更改每个类文件的包,这会使合并主干和分支非常痛苦.
我可以将这两个项目保持在一起,共享补丁,但使用不同的包的最佳方式是什么?
小智 8
你考虑过编译器指令了吗?
例:
#define FREE
// ...
#if FREE
Console.WriteLine("Free version");
#else
Console.WriteLine("Paid version");
#endif
Run Code Online (Sandbox Code Playgroud)
您可以保留完全相同的代码库,并使用两个单独的构建脚本或可参数构建脚本来定位两个构建.
msbuild /p:DefineConstants=FREE
Run Code Online (Sandbox Code Playgroud)
如果您确实想分开,最好的方法是将其设置为同一存储库的两个部分。这样您至少可以合并不同分支之间的更改。如果你想让事情完全分开,那么你将需要做大量的补丁文件。
我已经这样做了,坦率地说,这在实践中并不是一个很好的策略。更好的是,特别是在编译环境中,免费和付费有一个单独的构建过程,这样就有一个代码库而不是两个。如果有两个代码库,事情就会有所不同。