我被命令提供2个版本的应用程序:一个演示/灯光(限制功能)另一个完整(所有功能)。我在代码中有一个布尔值,告诉哪一个正在运行。它们都在模拟器或测试设备(iOS和Android)上按预期运行。
现在我想发布它们。所以我读到可能with XCode to define different targets对应轻/完全版本,并且使用Eclipse可以将基础项目定义为库,然后创建2个项目,也对应轻/完整版本
在我开始搞乱我的应用程序项目之前,是否有推荐的方法来实现我的CodenameOne目标,可能是通过构建提示,根据构建提示值更改应用程序名称和代码中的布尔值?
编辑19/09/2016(工作方法)
按照Shai的建议,这里是我根据完整版本生成一个简易版本的步骤(如果有人遇到相同的情况):
=>所以现在在src文件夹中你应该有
的src
| - com.packageLIGHT.appName
| - com.package.appName
然后在com.packageLIGHT.appName中删除除MyApp.java(也就是主文件)之外的所有文件。在此文件中添加import com.package.myApp.*;
3.1。 (ECLIPSE)在“运行/运行配置”菜单中,复制现有配置并将其粘贴为Simulator_MyAppLIGHT,并在参数中将其更改为“com.packageLIGHT.myApp.MyApp”。
3.2。 (NETBEANS)“运行/设置项目配置”似乎没有按预期工作,因为任何可能选择的配置都会导致相同的默认行为。但是,应用步骤6.然后在模拟器中运行项目会产生预期的结果。
现在,您应该可以通过运行不同的配置来运行这两个版本。
对于iOS(不确定Android是否也需要),您必须生成另一对配置文件。因此,移动iosCerts / FULL中的现有文件并使用CN1向导生成“轻型”版本配置文件,您可以在其中调整包名称以匹配“com.packageLIGHT.myApp”。将生成的文件存储在iosCerts / LIGHT中。 无需覆盖现有证书(more on certificate here) 。
最后在“codenameone_settings.properties”中替换原始包名称,其中“light”代表行codename1.ios.appid
和codename1.packageName
。还要根据您要构建的内容将iOS配置文件更改为iosCerts / LIGHT或FULL。
现在,当您将Android / iOS版本发送到CN1服务器时,它将构建“轻”版本或完整版本,具体取决于“codenameone_settings.properties”中写入的包。
请注意:如果在步骤6,您在第469行(android build)或344(iOS版本)上的build.xml上获得NullPointerException,它处理certPassword="${codename1.android.keystorePassword}
(android build)或{{1 (iOS版本)你在Eclipse下使用CN1插件版本1.0.0 20160812然后Shai's comment below可能是值得的
答案 0 :(得分:2)
如果你想要同一个应用程序的2个不同版本,那么你需要2个不同的包,因为在商店中唯一定义app的东西就是app包。有两种常见的方法:
codenameone_settings.properties
文件第一个应该非常清楚但是可能有点痛苦,因为你无法运行cn1lib并且可能会遇到调试它的问题。
第二个实际上相当简单。创建应用程序的主要版本,然后将软件包添加到演示版本并将主文件复制到那里。
要运行演示版,只需在IDE“运行设置”中更改软件包。
将codenameone_settings.properties
复制到单独的文件,只需将所有常规软件包名称替换为演示软件包名称即可。当您想构建“演示”版本时,将codenameone_settings.propeties
文件替换为彼此,您可以使用脚本显然自动执行此操作。