从同一源代码生成“免费/演示”和商业应用程序的最佳方法是什么?
-
07-07-2019 - |
题
我想在App Store上提供两个不同版本的iPhone应用程序 - 一个免费受限于应用程序显示的项目数量,另一个完全无限制。
两个应用程序的源代码完全相同,唯一的区别是将项目存储在应用程序中的SQLite数据库。
据我所知,该应用的两个版本都需要具有不同的捆绑名称和不同的图标。我试图找到一种方法来避免完全复制源代码目录,以便能够自定义其中的一些东西:数据库,图标,笔尖字符串等。
有没有一种好方法可以做到这一点而不重复一切?
解决方案
只需在项目中创建第二个目标。一个可以是功能齐全的应用程序,其中包括完整的数据库,新的目标将是您的演示版本,以及演示数据库。我们使用填字游戏来做这件事,它运作正常。然后,您可以将所有来源保存在一个位置,而不用担心事情不同步。
其他提示
明智地使用条件编译。我不知道你在使用什么语言,但在C / C ++条件下,编译是使用宏预处理器和ifdefs完成的。您可以编写如下代码:
#ifdef FULL_APP
// unlimited size
#define SIZE -1
#else
#define SIZE 100
#endif
构建程序时,在编译器命令行上提供适当的宏定义。
gcc program.cc -o program.o -DFULL_APP
您可以通过各种方式使用条件编译和宏预处理器来打开或关闭可执行文件中的各种功能或修改程序的其他方面。
值得注意的是,如果用户决定升级到完整版,如果您没有适当的机制来转移现有数据,您可能会看到用户的负面反应。如果数据的内容很小并且大部分可以用文本表示,我建议实现一个URL方案来传递它。
创建一个新项目,然后让它引用(不创建本地副本)与原始项目相同的源文件。
是否有某些(特定于iPhone的?)原因需要为您的应用的两个版本提供不同的SQLite数据库?
如果没有,您可以使用可交换密钥实现许可机制,允许您只使用一个文件更改来编译单个代码库。在运行时,您的应用程序将检查该文件,并允许减少或无限制的存储。 额外的好处(如果iPhone商店支持这样的事情)将是非常简单的解锁完整版本而不会丢失数据。
当然,如果您的客户精通技术并且恶意并且您的代码易于反编译,这样的解决方案可能会对您的业务造成损害。
我已经探索过这个,似乎在做“下载试用版并通过网络升级”。违反了应用商店的条款。看起来你真的需要在商店中使用两个不同版本的应用程序。 (参考Ben Gottlieb的作品)。所以一个来源,两个发行版。