在 Codename One 中管理我的应用程序的演示/完整版本

2024-03-31

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

现在我想分发它们。所以我读到这是可能的使用XCode定义不同的目标 https://www.raywenderlich.com/68613/create-paid-lite-version-iphone-app对应于轻型/完整版本并带有Eclipse https://stackoverflow.com/questions/12963369/creating-demo-and-full-version-app-based-on-one-code-base-project可以将基础项目定义为库,然后创建 2 个也对应于精简/完整版本的项目。

在我开始搞乱我的应用程序项目之前,是否有推荐的方法可以通过 CodenameOne 实现我的目标,也许通过构建提示来根据构建提示值更改应用程序名称和代码内的布尔值?

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

遵循 Shai 的建议,我按照以下步骤在完整版本的基础上生成了一个精简版本(以防有人遇到相同的情况):

  1. 在您的 IDE(Eclipse 或其他)下,将基础包复制并粘贴到 src 文件夹中,并将其重命名为 com.packageLIGHT.appName(只需将 LIGHT 附加到包名称中,不要使用下划线或空格,因为苹果稍后会将其视为非法字符)

=> 所以现在在 src 文件夹中你应该有

src

|- com.packageLIGHT.appName

|- com.package.appName

  1. 然后在 com.packageLIGHT.appName 中删除除 MyApp.java(也称为主文件)之外的所有文件。在此文件中添加import com.package.myApp.*;

    3.1. (ECLIPSE) 在“运行/运行配置”菜单中,复制现有配置并将其粘贴为 Simulator_MyAppLIGHT,并在参数中将其更改为“com.packageLIGHT.myApp.MyApp”。

    3.2. (NETBEANS)“运行/设置项目配置”似乎没有按预期工作,因为可能选择的任何配置都会导致相同的默认行为。然而,应用步骤 6. 并随后在模拟器中运行该项目会得到预期的结果。

  2. 现在您应该能够通过运行不同的配置来运行这两个版本。

  3. 对于 iOS(不确定 Android 是否也需要),您必须生成另一对配置文件。因此,移动 iosCerts/FULL 中的现有文件并使用 CN1 向导生成“轻”版本配置文件,您将在其中调整包名称以匹配“com.packageLIGHT.myApp”。将生成的文件存储在 iosCerts/LIGHT 中。无需覆盖现有证书(更多关于证书的信息请点击这里) http://escoz.com/blog/demystifying-ios-certificates-and-provisioning-files/.

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

  5. 现在,当您将 Android / iOS 版本发送到 CN1 服务器时,它将构建“轻型”版本或完整版本,具体取决于“codenameone_settings.properties”中写入的包。

请注意:如果在第 6 步,您在 build.xml 的第 469 行(android 构建)或 344(iOS 构建)上收到 NullPointerException,该异常处理certPassword="${codename1.android.keystorePassword}(安卓版本)或appid="${codename1.ios.appid}"(iOS 版本)并且您在 Eclipse 下使用 CN1 插件版本 1.0.0 20160812下面是Shai的评论 https://stackoverflow.com/questions/39505331/managing-demo-full-version-of-my-app-in-codename-one/39523668?noredirect=1#comment66442166_39523668可能值得


如果您想要同一应用程序的 2 个不同版本,那么您需要 2 个不同的包,因为在商店中唯一定义应用程序的是应用程序包。有两种常见的方法可以做到这一点:

  • 将功能放入 cn1lib 并构建两个应用程序
  • 构建一个应用程序并只需交换codenameone_settings.properties file

第一个应该非常清楚,但使用起来可能有点痛苦,因为您无法运行 cn1lib 并且可能会遇到调试问题。

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

要运行演示版本,只需在 IDE“运行设置”中更改包即可。

复制你的codenameone_settings.properties到一个单独的文件,只需将所有常规包名称替换为演示包名称。当您想要构建“演示”版本时,请替换codenameone_settings.propeties文件之间存在相互关联的情况,显然您可以使用脚本将其自动化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Codename One 中管理我的应用程序的演示/完整版本 的相关文章

  • 错误 ITMS-90168:“您上传的二进制文件无效。”

    错误 ITMS 90168 您上传的二进制文件无效 生成的 API 分析文件太大 我们无法验证 交付前您的 API 每次我想将新版本的应用程序上传到 iTunes connect 时 都会出现上述错误 我正在使用应用程序加载器进行上传 我的
  • 如何在使用 UI 生成器创建的渲染器中添加动态数据?

    如何在使用 UI 生成器创建的渲染器中添加动态数据 从 ui 构建器创建渲染并使用动态数据填充列表 protected boolean initListModelList List cmp cmp setModel new com code
  • 如何将声音与代号一捆绑?

    我想在我的 Codename One 应用程序中包含声音 以实现单击按钮 过渡等效果 我不喜欢从 URL 下载它们 因为它们非常小 而且我希望即使在设备未连接到时也能播放它们互联网 看来我无法将源文件包含在主题中 我应该怎么办 将声音文件放
  • LittleMonkey QRScanner 库构建问题

    我使用过littleMonkey QRScanner 库 但它可以在模拟器中工作 显示扫描仪不支持对话框 但是当我构建项目时它给出了构建错误 PS 我已经删除了所有构建提示并再次刷新库 但仍然存在同样的问题 我按照建议保留了 cn1 cod
  • 有没有办法禁用 Swing 应用程序的 Mac OS Retina 缩放?

    我们有一个相当复杂的应用程序 需要尽可能多的屏幕空间 自然 视网膜显示屏 Mac Book 非常适合此目的 然而 在 Swing 中这些设备似乎使用的是点而不是像素 它们允许我将图标更改为所讨论的更高分辨率版本here 但由于我们做了很多复
  • NSAllowsArbitraryLoadsInWebContent in CN1

    我正在尝试解决 Apple 对 Codename One 的 http 限制 根据 iOS Cocoa 密钥文档 NSAllowsArbitraryLoadsInWebContent 将按照以下说明在 iOS 10 上运行 仅适用于要加载的
  • 读取崩溃日志

    我看到抛出了 ArrayIndexOutOfBounds 异常 但代码中的以下几行有三种不同的方法 我将如何阅读日志来找出以下哪一行抛出了错误 请指教 这是写入加密存储的一个例外 它是由密码抛出的 目前尚不清楚为什么失败或由于什么操作而失败
  • 无法运行模拟器

    我已经有一段时间没有编码了 所以我启动了 Eclipse 更新了插件和 Eclipse 现在当我尝试启动模拟器时出现异常 Exception in thread AWT EventQueue 0 java lang VerifyError
  • 条码扫描仪读取代码速度太慢

    我使用 codenameone codescanner 库来读取条形码 它使用第三方扫描仪 如果单独使用 则可以正常工作并且可以快速读取条形码 但是使用codenameone应用程序 同样的扫描仪速度太慢 大多数时候无法扫描 我已经在三星设
  • 根据滚动隐藏和显示工具栏

    这个问题仅涉及代号一 我需要使 Codename One Form 的工具栏移动 如该视频所示 https www informatica libera net videoLavoro hideShowToolbarOnScrolling
  • 代号一个应用程序中的额外侧边菜单

    在我的应用程序中 我有一个右侧菜单 但似乎还有一个左侧菜单 仅包含后退按钮 没有菜单按钮 带有三条水平线 但如果触摸屏幕左边缘并拖动 则会出现菜单 我不明白为什么要创建它 但是有什么方法可以禁用或删除它吗 None
  • MediaPlayer 视频大小代号?

    我一直在使用 Codename 1 来开发 VideoCapture String file Capture captureVideo Media video MediaManager createMedia file true f add
  • 在代号一中使用 LocationManager 的正确方法

    我正在使用 LocationManager 来跟踪用户的位置并在 GoogleMaps 上显示相同的位置 我正在使用以下方法 但对此有一些疑问 为了第一次获取用户的位置 我使用 locationManager LocationManager
  • 代号一:将图像保存到存储并创建小圆形预览

    我目前的图像有问题 1 我无法将图像保存到存储 因为不支持将其直接存储到存储 我希望用户能够用相机拍照 然后创建的照片必须保存在某个地方 以便我稍后可以再次检索它 你能告诉我怎么做吗 a 保存图像 b 如何检索它 我在 Stackoverf
  • 是否可以在 Codename One 中通过 css 自定义滑块?

    我的应用程序有一个进度条 需要更改背景和缩略图 我发现拇指图像可以通过设计器中的常量进行更改 但我在 Constants 段落中找不到该常量CSS 选择器页面 https github com shannah cn1 css wiki Su
  • CodenameOne 用于蓝牙连接的后台任务

    我正在使用 Codename One 开发一个应用程序 它连接到蓝牙 LE 专有外部设备并记录接收到的数据 平均数据大约每秒到达一次 我正在使用蓝牙 LE CN1 库 https github com chen fishbein bluet
  • CodenameOne - Android 推送通知支持,无需专业帐户

    因此 我买不起 codeameone 专业帐户 因此我使用 GCM 为 Android 实现了本机推送通知 经过一番努力 我终于成功了 现在 GCM 已弃用 我想迁移到 FCM 但是 我遇到了一些问题 因为代号一不允许我将正确的依赖项注入到
  • 跨平台上的 AES cbc 填充加密/解密(.net c# 和代号 one bouncy castle)

    加密 解密不能在跨平台上工作 我已使用此链接使用代号一内的充气城堡 AES 密码来加密 解密文本 J2ME 中使用 Bouncycastle 进行 AES 加密 解密的示例 https stackoverflow com questions
  • 是否可以在多按钮(代号一)上制作圆形图像(通过蒙版)

    我有一个InfiniteScrollAdapter我在其中使用Multibutton显示包含照片及其描述的列表 它效果很好 但我需要使照片变圆 这就是为什么我受到启发官方指南 https www codenameone com manual
  • 代号一 - 正确使用选择器

    我试图对选择器的使用提出一个明确的问题 因为我之前的问题不够清楚 代号一 Picker 的 addActionListener https stackoverflow com questions 48758348 codename one

随机推荐