Software/Virtual Platform/Android
こちらはubuntu8.04での作業になります。

userlandの変更点

Android ソースファイルの修正

  • ソースファイルの取得
    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

ビルド完了後、生成されたファイルを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の変更点は終了です。


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2009-06-17 (水) 13:08:09 (4114d)