Androidに関連したARMアーキテクチャの違いと開発環境およびオプションなどの留意点2009年08月24日 13時23分46秒

MINI2440のCPUが「ARMv4T」でandroidで想定しているARMアーキテクチャが「ARMv5T」ということでandroidプラットフォームの構築時にパッチなどを当てる必要があるとの助言をいただきましたので、関連する資料を整理しておきます。

募集中の情報

  • クロスコンパイラの違い
  • クロスコンパイラに指定するオプションの違い
  • Cソースコードなどの記述上の違い

情報をご存知の方はコメント欄に書いていただければ整理して記事に反映させます。

Freerunnerの移植情報

関連情報

androidビルド時のJDK5要求2009年08月24日 16時40分55秒

前にandroidのビルドを行ったときは多分、JDK6をインストールしてそのままエラーになっていなかったと思いますが、今回、以下の処理でエラーとなってしまいました。
  • repo init -u git://android.git.kernel.org/platform/manifest.git
  • repo sync
  • make
laptop:~/dev/android/mydroid$ make
============================================
PLATFORM_VERSION_CODENAME=Donut
PLATFORM_VERSION=Donut
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=Donut
============================================
************************************************************
You are attempting to build with the incorrect version
of java.
 
Your version is: java version "1.6.0_14".
The correct version is: 1.5.
 
Please follow the machine setup instructions at
    http://source.android.com/download
************************************************************
build/core/main.mk:105: *** stop.  中止.
laptop:~/dev/android/mydroid$ 

前に参照したページはこちらですが、明示的にJDK6を指定しています。
確かに、現時点の本家のページの説明ではJDK6には対応してないと書いてありますね。やっぱりその都度処理経過はメモしておかないとわからなくなります。

JDKの切り替え

  1. JDK5のインストール(apt-get install sun-java5-jdk)
  2. 「update-java-alternatives -l」で状態確認
  3. 「update-java-alternatives -s java-1.5.0-sun」コマンドでJDK5に切り替え
  4. /etc/bash.bashrcの「JAVA_HOME」設定部分を「export JAVA_HOME=/usr/lib/jvm/java-5-sun 」に変更

「update-java-alternatives」の実行結果は以下。
laptop:~/dev/android/mydroid$ sudo update-java-alternatives -l
java-1.5.0-sun 53 /usr/lib/jvm/java-1.5.0-sun
java-6-sun 63 /usr/lib/jvm/java-6-sun
laptop:~/dev/android/mydroid$ sudo update-java-alternatives -s java-1.5.0-sun
firefox-javaplugin.so の alternatives がありません。
iceape-javaplugin.so の alternatives がありません。
iceweasel-javaplugin.so の alternatives がありません。
midbrowser-javaplugin.so の alternatives がありません。
mozilla-javaplugin.so の alternatives がありません。
xulrunner-1.9-javaplugin.so の alternatives がありません。
xulrunner-javaplugin.so の alternatives がありません。
'HtmlConverter' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/HtmlConverter' を使います。
'appletviewer' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/appletviewer' を使います。
'apt' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/apt' を使います。
'extcheck' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/extcheck' を使います。
'idlj' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/idlj' を使います。
'jar' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jar' を使います。
'jarsigner' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jarsigner' を使います。
'java-rmi.cgi' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/java-rmi.cgi' を使います。
'javac' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/javac' を使います。
'javadoc' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/javadoc' を使います。
'javah' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/javah' を使います。
'javap' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/javap' を使います。
'jconsole' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jconsole' を使います。
'jdb' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jdb' を使います。
'jinfo' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jinfo' を使います。
'jmap' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jmap' を使います。
'jps' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jps' を使います。
'jsadebugd' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jsadebugd' を使います。
'jstack' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jstack' を使います。
'jstat' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jstat' を使います。
'jstatd' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/jstatd' を使います。
'native2ascii' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/native2ascii' を使います。
'rmic' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/rmic' を使います。
'serialver' を提供するために '/usr/lib/jvm/java-1.5.0-sun/bin/serialver' を使います。
'ControlPanel' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/ControlPanel' を使います。
'java' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/java' を使います。
'java_vm' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/java_vm' を使います。
'javaws' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/javaws' を使います。
'keytool' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/keytool' を使います。
'orbd' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/orbd' を使います。
'pack200' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/pack200' を使います。
'policytool' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/policytool' を使います。
'rmid' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/rmid' を使います。
'rmiregistry' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/rmiregistry' を使います。
'servertool' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/servertool' を使います。
'tnameserv' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/tnameserv' を使います。
'unpack200' を提供するために '/usr/lib/jvm/java-1.5.0-sun/jre/bin/unpack200' を使います。
firefox-javaplugin.so の alternatives がありません。
iceape-javaplugin.so の alternatives がありません。
iceweasel-javaplugin.so の alternatives がありません。
midbrowser-javaplugin.so の alternatives がありません。
mozilla-javaplugin.so の alternatives がありません。
xulrunner-1.9-javaplugin.so の alternatives がありません。
xulrunner-javaplugin.so の alternatives がありません。
laptop:~/dev/android/mydroid$ 

今回の切り替え手順についてははっきりと本家のページに書いてあるのですが、「Ubuntu Linux (32-bit x86)」のところには書いてありません。「Ubuntu Linux (64-bit x86)」のところにのみ書かれています。