【发布时间】:2016-09-15 07:29:47
【问题描述】:
我被要求提供 2 个版本的应用程序:一个是演示版/轻量版(功能有限),另一个是完整版(所有功能)。我在代码中有一个布尔值,它告诉哪个正在运行。它们都在模拟器或测试设备(iOS 和 Android)上按预期运行。
现在我想分发它们。所以我读到with XCode to define different targets 可能对应于轻量级/完整版,而Eclipse 可以将基础项目定义为库,然后创建两个项目也对应于轻量版/完整版。
在我开始搞乱我的应用程序项目之前,是否有推荐的方法来实现我的 CodenameOne 目标,可能是通过构建提示来更改应用程序名称和代码中的布尔值,具体取决于构建提示值?
EDIT 19/09/2016(工作方法)
这里遵循 Shai 的建议是我根据完整版本生成轻量版的步骤(以防有人遇到相同的情况):
- 在您的 IDE(Eclipse 或其他)下复制并粘贴基本包到 src 文件夹中,并将其重命名为 com.packageLIGHT.appName (只需将 LIGHT 附加到包名称中,不要使用下划线或空格,因为它以后会被苹果视为非法字符)
=> 所以现在在 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 构建)或 344(iOS 构建)的 build.xml 上得到 NullPointerException,它处理 certPassword="${codename1.android.keystorePassword}(android 构建)或 appid="${codename1.ios.appid}"(iOS build) 并且您在 Eclipse 下使用 CN1 插件版本 1.0.0 20160812 那么Shai's comment below 可能是值得的
【问题讨论】:
标签: codenameone