“无效的应用程序。删除?”仅在使用诺基亚 SDK 编译时

Posted

技术标签:

【中文标题】“无效的应用程序。删除?”仅在使用诺基亚 SDK 编译时【英文标题】:"Invalid Application. Delete?" only when compiled with a Nokia SDK 【发布时间】:2010-08-02 16:52:32 【问题描述】:

我正在为我的大学开发一款软件,目前正在尝试实现 NFC 功能,这需要我从标准 Sun 无线工具包平台(通过 NetBeans 实现)迁移到诺基亚平台(也实现通过 NetBeans)。

问题是,每当我使用诺基亚平台实现编译代码并运行该程序时,在我拥有的诺基亚手机或模拟器中,手机都会显示一个框,说明“应用程序无效。删除?”有一个是/否的答案。这将停止应用程序的安装。奇怪的是,如果我用 Sun 平台实现编译完全相同的代码,它在诺基亚手机上运行没有任何问题。我已经使用两种不同的诺基亚 SDK(Series 40 Nokia 6212 NFC SDK 和 Series 40 第 5 版 SDK)进行了尝试,结果相同。

诺基亚 SDK 有何不同之处?

【问题讨论】:

【参考方案1】:

使用 Sun 平台创建的项目与使用 Nokia 平台创建的项目之间似乎存在某种差异。

虽然最初使用 Sun 平台创建的原始程序,使用诺基亚平台编译导致应用程序无效,但当我使用诺基亚平台从头开始创建一个新项目时,只是将原始程序的源代码复制到程序有效。两者之间的JAD/manifest 文件没有明显区别。

【讨论】:

如果诺基亚平台指的是诺基亚 SDK,那么 Java 版本和 API 可能会有所不同。我最近注意到诺基亚 SDK 允许使用向量、枚举等,这在 J2ME 中是不可能的,因为它基于 Java 1.3。一项快速测试是查看包含的 jar 中是否有任何差异。 确实看起来确实如此,但您会假设两者都是 sdk 旨在为相同语言生成代码,因此它们不会有如此根本的区别。附言您可以在 j2me 中使用枚举 (download-llnw.oracle.com/javame/config/cldc/ref-impl/midp2.0/…) 和向量 (download-llnw.oracle.com/javame/config/cldc/ref-impl/midp2.0/…),也许您正在考虑使用较旧的实现【参考方案2】:

如果您复制了源代码,则可能没有复制“manifest.midlets”,即告诉操作系统要创建哪些“表单”。您通常会在项目属性中找到它。

(例如,在 NetBeans IDE - 应用程序描述符中,“Midlets”选项卡 - 它不应为空)。

【讨论】:

不,它不会导致编译器错误 - 因为它是使用它的操作系统。【参考方案3】:

确保以下属性(键:值对)在 JAD 文件以及 JAR 文件中的清单文件中:

    MIDlet 名称 MIDlet 版本 MIDlet 供应商 MIDlet-Jar-URL MIDlet-Jar-Size

【讨论】:

程序正在通过 net-beans 编译,所以 jad 和清单都是自动创建的,我仔细检查了这些东西是否存在。

以上是关于“无效的应用程序。删除?”仅在使用诺基亚 SDK 编译时的主要内容,如果未能解决你的问题,请参考以下文章

Symbian S60 第三版。 FP2 SDK注册

在带有 Netbeans 7.3 的诺基亚 SDK 2.0 中找不到 JRE

如何仅在横向模式下限制 j2me 应用程序

阿里云AIoT携手紫光展锐,助力诺基亚经典手机开启移动支付新体验

Facebook SDK 3.2 登录仅在应用程序未终止时才有效

谷歌地图 ios sdk 信息窗口仅在 2 次点击时出现