[[Software/Virtual Platform/Android]] [[Software/Virtual Platform/Android]]~ こちらはubuntu8.04での作業になります。~ * userlandの変更点 [#z46365a7] ** Android ソースファイルの修正 [#m4b5ebb5] - ソースファイルの取得 ~ Androidのソースファイルの取得は下記のURLを参照してください。~ http://source.android.com/download ~ 今回はandroid 1.5r2ブランチを使用しましたので、repo initの際は下記のコマンドを実行しました。~ repo init -u git://android.git.kernel.org/platform/manifest.git -b android-1.5r2 また、Android ソースファイルは2009年5月26日時点のものを使用しています~ - system/core/init/devices.cの修正~ pmemを使用している箇所を無効にします。~ @@ -109,9 +109,9 @@ { "/dev/eac", 0660, AID_ROOT, AID_AUDIO, 0 }, { "/dev/cam", 0660, AID_ROOT, AID_CAMERA, 0 }, { "/dev/pmem", 0660, AID_SYSTEM, AID_GRAPHICS, 0 }, - { "/dev/pmem_gpu", 0660, AID_SYSTEM, AID_GRAPHICS, 1 }, - { "/dev/pmem_adsp", 0660, AID_SYSTEM, AID_AUDIO, 1 }, - { "/dev/pmem_camera", 0660, AID_SYSTEM, AID_CAMERA, 1 }, + { "/dev/pmem_gpu", 0660, AID_SYSTEM, AID_GRAPHICS, 0 }, + { "/dev/pmem_adsp", 0660, AID_SYSTEM, AID_AUDIO, 0 }, + { "/dev/pmem_camera", 0660, AID_SYSTEM, AID_CAMERA, 0 }, { "/dev/oncrpc/", 0660, AID_ROOT, AID_SYSTEM, 1 }, { "/dev/adsp/", 0660, AID_SYSTEM, AID_AUDIO, 1 }, { "/dev/mt9t013", 0660, AID_SYSTEM, AID_SYSTEM, 0 }, - frameworks/base/services/java/com/android/server/KeyInputQueue.javaの修正~ キー入力送信を待つ thread 内のチェックを外し必ず入力を拾うように修正します。~ (電源管理との関係で入力が拾えなくなるのを防ぐためです。)~ @@ -247,7 +247,7 @@ if (!send) { - continue; + // continue; } - frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.javaの修正~ HOMEボタンを押下したときにHOME画面にもどらないので 以下の箇所をコメントアウトしkeyguardを無効にすることでHOMEボタンが効くようにします。 @@ -942,7 +942,7 @@ /** * A home key -> launch home action was detected. Take the appropriate action * given the situation with the keyguard. */ void launchHomeFromHotKey() { // if (mKeyguardMediator.isShowing()) { // don't launch home if keyguard showing // } else if (mKeyguardMediator.isInputRestricted()) { // when in keyguard restricted mode, must first verify unlock // before launching home // mKeyguardMediator.verifyUnlock(new OnKeyguardExitResult() { // public void onKeyguardExitResult(boolean success) { // if (success) { // mContext.startActivity(mHomeIntent); // sendCloseSystemWindows(); // } // } // }); // } else { // no keyguard stuff to worry about, just launch home! mContext.startActivity(mHomeIntent); sendCloseSystemWindows(); // } } public void getContentInsetHintLw(WindowManager.LayoutParams attrs, Rect contentInset) { final int fl = attrs.flags; android-1.5r2で起動時にバッテリーが無く終了の動作に入るという問題があります。~ http://androidzaurus.seesaa.net/article/116995835.html ~ 上記サイトにあるPATCHを適用することでバッテリーの状態をフルにに見せています。~ 以上の作業後、makeでビルドを行います。~ ** userland [#bca505e7] ビルド完了後、生成されたファイルを1つのディレクトリにまとめます。~ $cd ~/android_build/out/target/product/generic $mkdir ~/Android_rfs $cp -a root/* ~/Android_rfs $cp -a data/* ~/Android_rfs/data/ (dataの中身がない場合は省略) $cp -a system/* ~/ Android_rfs/system/ 作成したディレクトリに入り、以下の作業を行います。~ $cd Android_rfs/ - init.rcの修正~ userlandをAndroidのものと置き換えた際、init.rcにyaffs2でのmountがありますが、~ 移植版ではyaffs2を使用していませんので、その箇所をコメントアウトします。 @@ -24,7 +24,7 @@ loglevel 3 mkdir /sqlite_stmt_journals 01777 root root mount tmpfs tmpfs /sqlite_stmt_journals size=4m - mount rootfs rootfs / ro remount + #mount rootfs rootfs / ro remount write /proc/sys/kernel/panic_on_oops 1 write /proc/sys/kernel/hung_task_timeout_secs 0 @@ -34,16 +34,16 @@ loglevel 3 # mount mtd partitions # Mount /system rw first to give the filesystem a chance to save a checkpoint - mount yaffs2 mtd@system /system - mount yaffs2 mtd@system /system ro remount + #mount yaffs2 mtd@system /system + # mount yaffs2 mtd@system /system ro remount # We chown/chmod /data again so because mount is run as root + defaults - mount yaffs2 mtd@userdata /data nosuid nodev + # mount yaffs2 mtd@userdata /data nosuid nodev chown system system /data chmod 0771 /data # Same reason as /data above - mount yaffs2 mtd@cache /cache nosuid nodev + #mount yaffs2 mtd@cache /cache nosuid nodev chown system cache /cache chmod 0770 /cache @@ -231,5 +231,5 @@ service hsag /system/bin/sdptool add --c service installd /system/bin/installd socket installd stream 600 system system -service flash_recovery /system/bin/flash_image recovery /system/recovery.img - oneshot +#service flash_recovery /system/bin/flash_image recovery /system/recovery.img +# oneshot -system/usr/keylayout/qwerty.klの設定~ キーボード配列の設定をします。~ F1:Menu ~ F6:Back ~ F12:Home ~ と設定します。 key 399 GRAVE key 2 1 key 3 2 key 4 3 key 5 4 key 6 5 key 7 6 key 8 7 key 9 8 key 10 9 key 11 0 key 64 BACK WAKE key 230 SOFT_RIGHT WAKE key 60 SOFT_RIGHT WAKE key 68 ENDCALL WAKE key 62 ENDCALL WAKE_DROPPED key 229 MENU WAKE_DROPPED key 139 MENU WAKE_DROPPED key 59 MENU WAKE key 127 SEARCH WAKE_DROPPED key 217 SEARCH WAKE_DROPPED key 228 POUND key 227 STAR key 231 CALL WAKE_DROPPED key 61 CALL WAKE_DROPPED key 232 DPAD_CENTER WAKE_DROPPED key 80 DPAD_DOWN WAKE key 72 DPAD_UP WAKE key 88 HOME WAKE key 75 DPAD_LEFT WAKE_DROPPED key 77 DPAD_RIGHT WAKE_DROPPED key 115 VOLUME_UP key 114 VOLUME_DOWN key 116 POWER WAKE key 212 CAMERA - default prop ~ default propに以下のdnsを加えることでグローバルなネットワークに接続していると ~ ブラウザでWEBページが表示できます。~ net.eth0.dns1=208.66.222.222 net.dns1=208.67.222.222 - ユーザ権限の変更 ~ Androidは安全のためシステムのユーザー権限が細かく設定されていますが、 ~ 移植に際しては動作することを優先します。~ chown -R root:root * chmod -R 777 data/ chmod -R 777 system/ 作業後、ディレクトリ(ここではAndroid_RFS)をCentOS 4のマシンへコピーします。~ 以上で、userlandの変更点は終了です。~