编译基于DirectFB的Phoneme(Advance)

编译基于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显示。

     static   char   * argv_array[]  =  
        
"CVM"
        
"--dfb:system=FBDev" 
            
",force-windowed"   /* use windows instead of surfaces */ 
            
",no-vt-switch"     /* do not switch between Linux' VT */ 
            
",no-cursor"        /* do not use pointer */ 
            
// ",no-deinit-check" /* do not check for deinit */ 
        ,NULL 
    }

修改为
    
static   char   * argv_array[]  =  
        
"CVM"
        
"--dfb:force-windowed"   /* use windows instead of surfaces */ 
            
",no-vt-switch"     /* do not switch between Linux' VT */ 
            
",no-cursor"        /* do not use pointer */ 
            
// ",no-deinit-check" /* do not check for deinit */ 
        ,NULL 
    }

  1. 编译之前先设置一些环境变量,为了方便把它放到env.sh文件里。


    #!/bin/bash
    export PREFIX
    =/usr/local
    export JDK_DIR
    =/usr/share/j2sdk1.4.2_15

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

    export ARCH
    ="$1"
    export CPU
    =$ARCH

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

    export DIRECTFB_INSTALL_DIR
    =$PREFIX
    export PCSL_PLATFORM
    =linux_"$ARCH"_gcc
    export PATH
    =$JDK_DIR/bin:$PATH
    export JDK_HOME
    =$JDK_DIR
    export MEHOME
    =$PWD
    export PCSL_OUTPUT_DIR
    =$MEHOME/pcsl/output
    export CDC_DIR
    =$MEHOME/cdc
    export CDC_DIST_DIR
    =$CDC_DIR/build/linux-$CPU_ALIAS-generic/
    export TOOLS_DIR
    =$MEHOME/tools
    export CLDC_DIST_DIR
    =$CDC_DIST_DIR

运行该脚本: . evn.sh i386

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

    #!/bin/bash

    cd $MEHOME
    /pcsl
    make clean
    make NETWORK_MODULE
    =bsd/generic
    cd $MEHOME

    cd  $CDC_DIST_DIR
    make clean
    make USE_MIDP
    =true CVM_DEBUG=true USE_DIRECTFB=true USE_QT_FB=false
    cd  $MEHOME

运行该脚本:./build.sh

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

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

# !/ bin / bash
if  [  " $PREFIX "   =   ""  ]
then
    echo 
" PREFIX is not defined "
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~~


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值