Codenameone 以代号1管理我的应用程序的演示/完整版本

Codenameone 以代号1管理我的应用程序的演示/完整版本,codenameone,Codenameone,我被要求提供两个版本的应用程序:一个是演示/灯光(有限功能),另一个是完整的(所有功能)。我在代码中有一个布尔值,它告诉我们哪个在运行。它们都在模拟器或测试设备(iOS和Android)上按预期运行 现在我想分发它们。因此,我读到它可能对应于light/full版本,并且可以将基本项目定义为一个库,然后创建两个同样对应于light/full版本的项目 在我开始胡闹我的应用程序项目之前,是否有一种推荐的方法可以通过构建提示来实现我的CodenameOne目标,该构建提示会根据构建提示值更改应用程序

我被要求提供两个版本的应用程序:一个是演示/灯光(有限功能),另一个是完整的(所有功能)。我在代码中有一个布尔值,它告诉我们哪个在运行。它们都在模拟器或测试设备(iOS和Android)上按预期运行

现在我想分发它们。因此,我读到它可能对应于light/full版本,并且可以将基本项目定义为一个库,然后创建两个同样对应于light/full版本的项目

在我开始胡闹我的应用程序项目之前,是否有一种推荐的方法可以通过构建提示来实现我的CodenameOne目标,该构建提示会根据构建提示值更改应用程序名称和代码中的布尔值

编辑2016年9月19日(工作方法)

以下是我根据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向导生成“light”版本配置文件,您将在其中调整包名以匹配“com.packageLIGHT.myApp”。将生成的文件存储在iosCerts/LIGHT中无需覆盖现有证书

  • 最后,在“codenameone\u settings.properties”中,将原始包名替换为
    codename1.ios.appid
    codename1.packageName
    行的“light”名称。另外,根据您想要构建的内容,将iOS配置文件更改为iosCerts/LIGHT或FULL

  • 现在,当您将Android/iOS版本发送到CN1服务器时,它将根据“codenameone_settings.properties”中编写的软件包生成“light”版本或完整版本


  • 请注意:如果在步骤6。您在build.xml的第469行(android build)或第344行(iOS build)上得到NullPointerException,它处理
    certPassword=“${codename1.android.keystrepassword}
    (android build)或
    appid=“${codename1.iOS.appid}”
    (iOS build)如果你在Eclipse下使用CN1插件版本1.0.0 20160812,那么可能是值得的

    如果你想要同一个应用程序的两个不同版本,那么你需要两个不同的软件包,因为商店中唯一定义应用程序的是应用程序包。有两种常见的方法:

    • 将功能放在cn1lib中并构建两个应用程序
    • 构建一个应用程序,只需交换
      codenameone\u设置.properties
      文件
    第一个应该非常清楚,但可能会有点痛苦,因为您无法运行cn1lib,并且可能会在调试时遇到问题

    第二个其实相当简单。创建应用程序的主版本,然后将包添加到演示版本,并将主文件复制到其中

    要运行演示版本,只需更改IDE“运行设置”中的包


    codenameone\u设置.properties
    复制到一个单独的文件中,只需将所有常规包名替换为演示包名即可“版本将
    codenameone\u设置。属性
    文件相互替换,您可以使用脚本自动执行此操作。”

    谢谢!我申请了第二个,但没有成功。我的主要版本是com.package.appName。我备份了codenameone_settings.properties,并将原来的com.package.appName替换为com.package_LIGHT.appName。在Eclipse中,我不需要“运行配置”。最终,我将Android版本发送到CN1,但由于
    MyApp/src/main/java/com/package\u LIGHT/appName/AppNameStub.java:23:错误:找不到符号
    ,它失败了。我理解它为什么失败,但如何避免呢?我看到的唯一方法是创建一个新的演示项目并复制粘贴主版本的内容。你是那个意思吗?你需要有两个主要的类,一个在package下,另一个在package_LIGHT下。请注意,这可以让您区分这两个实现的逻辑,您甚至可以通过从另一个实现派生一个实现来重用代码。感谢这段信息。在IDE中运行两个版本之前,一切正常。但是,当我尝试发送ANdroid或iOS构建时,它失败了(请参见问题中的编辑),而且我无法从CN1首选项打开“基础”菜单。我把我所做的确切步骤和我得到的错误堆栈放在原始问题中,以便您更好地理解发生了什么。这意味着没有找到属性,因为元素没有在那里定义。没有进入基础部分的问题是我们已经解决的,它是由于icon.pngOK The icon.png丢失或损坏而触发的