“无效的应用程序。删除?”仅在使用诺基亚 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 编译时的主要内容,如果未能解决你的问题,请参考以下文章
在带有 Netbeans 7.3 的诺基亚 SDK 2.0 中找不到 JRE
阿里云AIoT携手紫光展锐,助力诺基亚经典手机开启移动支付新体验