在阅读此评论证明可以为新的诺基亚 3310 3G (TA-1006)编写自定义应用程序后,我正在尝试运行我自己的应用程序。
在阅读了大量关于 MIDP、CLDC 等的内容后,我安装了Java ME SDK(在全新的 Ubuntu 安装上,因为 Oracle 只支持它或 Windows)、Eclipse和Sun Wireless 工具包。
首先,我找不到任何关于设备支持哪个版本的 MIDP 和 CLDC 的信息,所以我继续尝试了一些可能的排列,这些是我的结果:
CLDC \ MIDP | 1.0 | 2.0 | 2.1 |
1.0 | * | * | X |
1.1 | * | * | ? |
1.8 | X | X | ? |
自 MIDP 2.1 以来我没有尝试过的?
那些不起作用,也没有任何收获,X
那些给出错误“无法安装 [MIDlet 名称],因为它不适用于此手机”。
所以看起来手机支持 MIDP 2.0 配置文件和 CLDC 1.1 配置,但是当我尝试安装我的应用程序(使用 的任何配置*
)时,它总是这样:
- “ [MIDlet 名称] 不受信任。继续吗? ” > 好的(这是预期的)
- “无法编译文件”(这是我卡住的地方)
到目前为止我尝试了什么(除了各种版本排列)
- 最初我尝试了一个非常基本的 MIDlet 子类型:
public void startApp()
{
Form form = new Form("Hello");
form.append(new StringItem("Hello", "World!");
Display.getDisplay(this).setCurrent(form);
}
- 接下来,我尝试使用 Eclipse 插件提供的这些模板:
- 启动 MIDlet 模板
- 你好世界 Midlet 模板
- 选择运行时配置(总是选择
DefaultColorPhone
)时,我将版本配置文件从 调整MIDP-2.1
为MIDP-2.0
- 尝试了其他配置
MediaControlSkin
和QwertyDevice
我总是通过单击“应用程序描述符”视图中的“打包 > 创建包”按钮来生成*.jar
和.jad
文件。
在某些时候,它开始尝试各种设置,我不太相信它会起作用,阅读和冲洗重复。在寻找替代品时,整个旅程变得非常令人沮丧,因为很多链接要么位于不可靠的网站、404 或旧的 3310 手机上。
TL;博士
为新的诺基亚 3310 编译一个简单的(未签名的)应用程序需要哪些配置和构建步骤?
以下是 imo 应该工作的最简单的失败示例的全部内容:
$ tree
.
├── Application Descriptor
├── bin
│ └── com
│ └── stackoverflow
│ └── kvn
│ └── test
│ └── SOExample.class
├── build.properties
├── deployed
│ └── DefaultColorPhoneM2.0
│ ├── SOTest.jad
│ └── SOTest.jar
├── res
└── src
└── com
└── stackoverflow
└── kvn
└── test
└── SOExample.java
13 directories, 6 files
$ cat Application\ Descriptor
MIDlet-1: SOExample,,com.stackoverflow.kvn.test.SOExample
MIDlet-Jar-URL: SOTest.jar
MIDlet-Name: SOTest MIDlet Suite
MIDlet-Vendor: MIDlet Suite Vendor
MIDlet-Version: 1.0.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
$ cat build.properties
# MTJ Build Properties
DefaultColorPhoneM2.0.includes=src/com/stackoverflow/kvn/test/SOExample.java\
DefaultColorPhoneM2.0.excludes=\
$ cat src/com/stackoverflow/kvn/test/SOExample.java
package com.stackoverflow.kvn.test;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class SOExample extends MIDlet {
private Form form;
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException { /* nop */ }
protected void pauseApp() { /* nop */ }
protected void startApp() throws MIDletStateChangeException {
form = new Form("Hello");
form.append(new StringItem("Hello", "World!"));
Display.getDisplay(this).setCurrent(form);
}
}
设备软件信息:型号:TA-1006;软件:15.0.0.17.00;操作系统版本:MOCOR_W17.44.3_Release;固件号:sc7701_barphone