zoukankan      html  css  js  c++  java
  • 编译基于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~~


  • 相关阅读:
    vue+elementUI表格排序事件
    移动端flex布局
    注册发送验证码提示信息
    jquery模拟生日日期下拉选择框
    标签模拟多选择框checkbox
    vue关于组件传值
    关于前端浏览器与服务器间的交互的对比与分析
    axios的基本使用
    Promise的基本使用
    Vue Cli2 文件路径别名
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167676.html
Copyright © 2011-2022 走看看