2009年9月25日金曜日

Arm 用ソースの取得とコンパイル

複数の組織や個人がArmのボード用のAndroidビルド環境を公開してくれている。
ここでは、embinux.orgの方法でBeagleBoard向けのビルドを試してみる。

*マシンリソースとして、HDD 10G,Memory 1G 程度ないと苦しい。

0)フォルダの作成
sudo mkdir -p /opt/android/beagloid
sudo chmod 777 /opt/android/beagloid
cd /opt/android/beagloid

1)manifestを取得
repo init -u git://labs.embinux.org/repo/android/platform/omap3manifest.git
ユーザIDやメールアドレスを適切の指定(識別のためだが、Commitしない場合は何でもよい)

*実は、上記で取得するmanifest.xmlに間違いがあり、そのままだと本体のmake時にエラーとなります。後記のように修正しておきます。

2)ソースの取得
repo sync

3)構築
*後述2にあるように、パッケージが不足していて、このままだとuImageが生成できない。
source build/envsetup.h
choosecombo 1 1 beagle eng
make


------------------ 修正 --------------------

cd /opt/android/beagloid
vi .repo/manifest.xml

13行目を2行下に移動
修正前)
12 <project name="repo/android/platform/build" path="build" .... >
13 <project name="repo/android/platform/dalvik" path="dalvik" .... />
14 <copyfile ... />
15 </project>

修正後)
12 <project name="repo/android/platform/build" path="build" .... >
13 <copyfile ... />
14 </project>
15 <project name="repo/android/platform/dalvik" path="dalvik" .... />


------------------ 不足パッケージを取得 --------------------
sudo apt-get install uboot-mkimage

Android ビルド環境の構築

Vmware/VirtualBoxなどで、Ubuntu9.0.4の環境を作成して、以下の通りにする。
0)下準備
sudo apt-get update

1)ツール類の取得
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

*java5を取るのは6だとdalvik関連のソースでエラーがでるかららしい

sudo apt-get install valgrind

2)repoのセットアップ
sudo mkdir -p /usr/local/bin
sudo curl http://android.git.kernel.org/repo -o /usr/local/bin/repo
sudo chmod a+x /usr/local/bin/repo

3)パスの設定
.bashrc などに以下を追加
export PATH=$PATH:/usr/loca/bin
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun

2009年9月11日金曜日

Oracle9 でのバインド変数制限

[Oracle] JDBCでバインドできる文字列のサイズの制限や、JDBCでバインドできる文字列のサイズの制限→複数のバインド変数を使って解決にあるように、9iでは長い日本語文字列の扱いには注意が必要であった。
最初に記事を見たときは、4000バイトも指定してあるのに、日本文字は666字しか入らないなんて!!!と思ってしまいましたが、バインド変数を使用した場合だけの制限であり、実際にはCharCode毎でのバイト数一杯は入るのですね。(sjisなら日本文字で2000文字) まあ、アプリではバインド変数を使うようにするのが普通なので、回避するにはこの部分だけ特殊は処理をする必要があったのですね。

varchar2 の制限 => 4000 bytes
バインド変数の制限 => 2000 bytes
日本語の制限 => UTF-8 としてのbyte数で計算される

Oracle 10g ではバインド変数の制限は緩和されたようで、長さに応じて自動的にsetCharacterStream()に変えてくれるようです。