编译基于DirectFB的Phoneme(Advance)

本文介绍如何基于 DirectFB 编译 Phoneme Advanced 版本,包括安装 DirectFB、配置 JDK、修改源代码以及编译过程中的环境变量设置等关键步骤。
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <meta name="GENERATOR" content="OpenOffice.org 2.2 (Unix)"> <meta name="AUTHOR" content="root"> <meta name="CREATED" content="20070824;19303900"> <meta name="CHANGEDBY" content="root"> <meta name="CHANGED" content="20070825;8504600"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } TD P { margin-bottom: 0cm } PRE { font-family: "文鼎PL细上海宋Uni", monospace } P { margin-bottom: 0.21cm } --> </style>

编译基于DirectFBPhoneme(Advance)

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

Phoneme其实就是J2MESUN公司虽然把JAVA的实现开源了,但仍然保留JAVA这个名字,所以出于法律上的考虑,开源的J2ME实现改名为phonemephoneme有两个版本,一个对硬件要求较低,功能也较弱,适用于一般的feature phone,取名为phoneME Feature。 另一个对硬件要求较高,功能更强大,适用于一般的smart phone,取名为phoneME Advanced

考虑到我们的硬件配置,我决定玩玩phoneME Advanced。从https://phoneme.dev. java.net下载了phoneme_advanced-mr2-dev-src-b21-04_may_2007.zip。浏览了一下源代码,发现里面有基于DirectFB的实现,真是太好了。试了一下,编译也比较简单:

  1. 编译安装DirectFB,为了测试方便,我们使用基于SDLDirectFB而不是fbdev

    tar zxf DirectFB-1.0.0.tar.gz

    cd DirectFB-1.0.0

    ./configure –enable-sdl

    make;make install

  2. 安装JDK(使用GCC编译用点问题)。

    ./j2sdk-1_4_2_15-linux-i586.bin

    mv j2sdk1.4.2_15 /usr/share

  3. 解包。

unzip phoneme_advanced-mr2-dev-src-b21-04_may_2007.zip

cd phoneme_advanced_mr2

  1. 修改directfbapp_export.c,支持SDL显示。

staticchar*argv_array[]=...{
"CVM",
"--dfb:system=FBDev"
",force-windowed"/**//*usewindowsinsteadofsurfaces*/
",no-vt-switch"/**//*donotswitchbetweenLinux'VT*/
",no-cursor"/**//*donotusepointer*/
//",no-deinit-check"/*donotcheckfordeinit*/
,NULL
}
;
修改为
staticchar*argv_array[]=...{
"CVM",
"--dfb:force-windowed"/**//*usewindowsinsteadofsurfaces*/
",no-vt-switch"/**//*donotswitchbetweenLinux'VT*/
",no-cursor"/**//*donotusepointer*/
//",no-deinit-check"/*donotcheckfordeinit*/
,NULL
}
;
  1. 编译之前先设置一些环境变量,为了方便把它放到env.sh文件里。


    #!/bin/bash
    exportPREFIX
    =/usr/local
    exportJDK_DIR
    =/usr/share/j2sdk1.4.2_15

    if["$1"=""]
    then
    echo
    "Usage:.env.shARCH(i386|arm)"
    return;
    fi

    exportARCH
    ="$1"
    exportCPU
    =$ARCH

    if["$ARCH"="arm"]
    then
    exportCPU_ALIAS
    ="arm"
    else
    exportCPU_ALIAS
    ="x86"
    fi

    exportDIRECTFB_INSTALL_DIR
    =$PREFIX
    exportPCSL_PLATFORM
    =linux_"$ARCH"_gcc
    exportPATH
    =$JDK_DIR/bin:$PATH
    exportJDK_HOME
    =$JDK_DIR
    exportMEHOME
    =$PWD
    exportPCSL_OUTPUT_DIR
    =$MEHOME/pcsl/output
    exportCDC_DIR
    =$MEHOME/cdc
    exportCDC_DIST_DIR
    =$CDC_DIR/build/linux-$CPU_ALIAS-generic/
    exportTOOLS_DIR
    =$MEHOME/tools
    exportCLDC_DIST_DIR
    =$CDC_DIST_DIR

运行该脚本: . evn.sh i386

  1. 编译,为了方便我们把做放一个脚本文件build.sh中。

    #!/bin/bash

    cd$MEHOME
    /pcsl
    makeclean
    makeNETWORK_MODULE
    =bsd/generic
    cd$MEHOME

    cd$CDC_DIST_DIR
    makeclean
    makeUSE_MIDP
    =trueCVM_DEBUG=trueUSE_DIRECTFB=trueUSE_QT_FB=false
    cd$MEHOME

运行该脚本:./build.sh

(如果编译时有问题,可能需要安装xorg-x11-deprecated 软件包)

  1. 安装,为了方便我们把做放一个脚本文件install.sh中。

#!/bin/bash
if["$PREFIX"=""]
then
echo
"PREFIXisnotdefined"
else
INSTALL_PATH
=$PREFIX
rm
-rf$INSTALL_PATH/java
mkdir
-p$INSTALL_PATH/java
echo
"cp-rf$CDC_DIST_DIR$INSTALL_PATH/java/cdc"
cp
-rf$CDC_DIST_DIR$INSTALL_PATH/java/cdc
fi

编译ARM版的过程类似,只是要修改几个Makefile,让它可以找到交叉编译的工具链就可以了。

不过基于DirectFB的实现,还很不完善,键值映射,笔点支持,中文显示和输入法等要自己去实现或者修改。但由于工作上的变动,暂时没有时间去玩这个,以后再补充吧。

~~end~~


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值