2012年7月19日木曜日

docomo Galaxy S II (SC-02C) 用 Cyanogenmod 9 のビルド方法


docomo Galaxy S II (SC-02C)用に Cyanogenmod9 をビルドしてみました。

海外版 Galaxy S II 用の Cyanogenmod 9 はこちらからダウンロードできます。
META-INF/com/google/android/updater-script
の先頭付近にて SC-02C に対する許可を与えればインストールができ、
ほとんどの機能を使うことができます。

しかし、docomo の端末に最適化されたものではないため、

  • 電池のもちが悪い
  • センサが正しくない値を返す
などの問題があります。

そこで、docomo の端末で快適に使えるようビルドしてみました。
ここではそのビルド方法をまとめます。

変更したのは主に下記の通りです

  • docomo端末用の変更を kernel に追加する(こちらで入手できる2.6系のカーネルを参考に)
  • センサのライブラリを日本の端末のものを利用するよう変更
  • その他(APN設定、フォント、エリアメール対応など)


なお、この方法では端末内のバイナリを利用するため、
ビルド済みのものを配布することはしません。

端末には、最新の公式android 4.0.3 (IML74K.OMLPG) をあらかじめ入れておきます。
また、64bit の Ubuntu を、androidをビルドできるよう設定しておきます(本ページでは省略)。
adb コマンドが使える必要もあります。
さらに、Ubuntu からadbコマンドで端末の中身を取り出せるよう、

/etc/udev/rules.d/51-android.rules に
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8:685e", SYMLINK+="android_adb", MODE="0666" GROUP="plugdev"

と記述しておきます。

以上の準備のもと、以下の様に作業を進めます。
mkdir ~/cm9work
cd ~/cm9work
repo init -u git://github.com/CyanogenMod/android.git -b ics
ここで
gedit .repo/local_manifest.xml
を起動し、下記の内容を記述して保存します。

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="bitbucket" fetch="https://bitbucket.org/" />
  <project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" />
  <project name="teamhacksung/buildscripts" path="buildscripts" remote="github" />
  <project name="neuralassembly/cm9_device_samsung_sc02c" path="device/samsung/sc02c" remote="bitbucket" revision="master" />
  <project name="neuralassembly/cm9_kernel_samsung_smdk4210jp" path="kernel/samsung/smdk4210jp" remote="bitbucket" revision="master" />
</manifest>

そして、下記の様にダウンロードを開始します。

repo sync -j16

ダウンロードが終了したら、下記の様にproprietaryなバイナリの準備を行います。
海外端末のバイナリは NIGHTLY ビルドから、  SC-02C のバイナリは adb により端末から吸い出します。
あらかじめ Ubuntu に IML74K.OMLPG な端末を接続し、adb で認識できるようにしてから
作業を進めます。

mkdir device/samsung/sc02c/cm9
cd device/samsung/sc02c/cm9
wget http://download.cyanogenmod.com/get/jenkins/4513/cm-9-20120717-NIGHTLY-galaxys2.zip
(その時点で入手できる最新のものを利用するのが良いと思います)
unzip cm-9-20120717-NIGHTLY-galaxys2.zip
cd ..
./extract-files.sh

しばらく待つとバイナリの準備は完了します。

そこで、下記の様にビルドを開始します。

cd ~/cm9work
./buildscripts/samsung/build.sh  sc02c

ビルド完了したときにできるファイルは
out/target/product/sc02c/cm-9-xxxxxxxx-UNOFFICIAL-sc02c.zip
です。これを clockworkmod リカバリで焼くことになるので、
あらかじめ内部SDカード領域にコピーしておきます。
また、gapps-ics-20120429-signed.zip もどこかで見つけて
内部SDカード領域にコピーしておきます。

ここから先は実際に焼く作業になります。失敗した場合の
戻し方を予め調べてから実行してください。

まず、 Up2_SU_CWM_KJ4-2.tar をどこかで見つけ、
Odin v.3.04 でPDAにセットして焼きます。
(ここでは clockworkmod リカバリを起動したいだけなので、
色々なやり方があると思います)

この時点で clockworkmod リカバリ しか起動しなくなるので、
Volume Up + HOME + 電源長押しで clockworkmod リカバリ を起動します。
このリカバリの決定ボタンはホームボタンであることに注意します。

wipe data/factory reset
install zip from sdcard→chooze zip from internal sdcard

の順で実行し、cm-9-xxxxxxxx-UNOFFICIAL-sc02c.zip を
インストールすると、リカバリも含めて新しくなります。
ここで下記のように一旦リカバリを終了します。

Go Back→power off

そして再びVolume Up + HOME + 電源長押しで最新の clockworkmod リカバリを起動します。
この最新のリカバリで下記の順で選択し、もう一度同じファイルを焼きます。
今度は決定は電源ボタンなので注意。

install zip from sdcard→chooze zip from internal sdcard

終わったら gapps-ics-20120429-signed.zip も焼きます。

終わったら
Go Back→reboot system now
で再起動、でおしまいです。

まあ本当は JCROM が使える docomo 端末を増やしたかった
だけなんですけどね。


[備考]
海外モデルの場合、
https://github.com/CyanogenMod/android_kernel_samsung_smdk4210
を kernel/samsung/smdk4210 に、
https://github.com/CyanogenMod/android_device_samsung_galaxys2
を device/samsung/galaxys2
にセットし、ターゲットは galaxys2 を指定します。



0 件のコメント:

コメントを投稿