忍者ブログ

Azukish

消えゆく世界と流れる未来に最後の灯を since 2006/4/3

2024/04/24

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

2015/02/08

fedora21でP-01DのCyanogenmodをビルドする

最近、異様にやる気が出ないので、レポートもすっぽかしてゲームかこんなことをずっとやってる僕です。
Twitterも顔出す気にならず、カメラを持って出かけてもなんだかんだ言って撮れるような暇もなく、大学は毎日変わらず憂鬱。
最近はモンスターストライクとかいうゲームが流行っているようで。うちの研究室の人間も四六時中やっておりますが。
まあ、そんなくだらない日常の産物です。

2015/4/8追記 どうやらCyanogenMod9のレポジトリはicsの開発が終了してics-releaseにまとめられた模様。
PyYoshi/android_device_panasonic_ponyo←のパッチ(?)を使います。
全面的にお茶漬けのぶろーぐ - P-01DでCyanogenmod9を参考にしました。 あと、やってることはほとんど上記のサイトと同じだし、使ってるものも全部他人からもらったもので、何も自分は新しいことをしていないことを付け足しておきます。




必要なもの

P-01D本体(root化・CWM導入済)
fedora21の入ったPC(Ubuntuとかでも良いと思う。その場合は多分他の記事の方が役に立つかと)
PC側空き容量50GBくらい
1GB程度のmicroSDカード(P-01Dにあらかじめ挿しとく)
通信可能なmicroUSBケーブル
文鎮化しても嘆かない心
端末が完全に死んだとしてもドコモショップに駆け込まない勇気
時間
バックアップ

方法

特に指示がなければコードの間にはcyanogenmodフォルダに戻っているものとします。
まず、ICSなCyanogenmodのソースコードとYoshihiro Misawaさんが作ってくれているponyoのパッチとかを取得します。
$ mkdir cyanogenmod; cd cyanogenmod
$ repo init -u git://github.com/CyanogenMod/android.git -b ics-release
$ cd .repo
$ wget https://raw.github.com/CM4IS01/android_device_panasonic_ponyo/ics/local_manifest.xml
$ cd ..
$ repo sync
2015/4/8変更 2行目ics→ics-release
ここで詰まった人はCyanogenmod 9をrepo syncするときに詰まった→解決|Azukishを参考にしてください。

必要なプロプライエタリファイルを取得・vendorツリーの生成をします。
ここでP-01DをデバッグモードにしてUSBでPCと接続します。
CWMのリカバリモードにして接続してもOKです。
そしたら本体から必要なファイル類を抽出します。
$ cd cyanogenmod/device/panasonic/ponyo
$ sh extract-files.sh

Qualcomm Developer NetworkからICS用のドライバを取得してvendorツリーへ置くのですが、P-01Dに入ってるGPUは2xx系で現在市場で売られている3xx系とは違うようです。
なので、上記のサイトのリンクからは直接飛べません。
ただ、検索欄で2xxと入力したらすぐに出てきたので、その中にあるAdreno 2xx User-mode Android ICS Graphics Driver (ARMv7)とかいうのに飛びます。
無料の会員登録が必要のようですが、入力するとドライバがダウンロードできるはずです。
ダウンロードしたzipファイルを展開してsystemの中身を全てcyanogenmod/vendor/panasonic/ponyo/proprietaryにコピーします。
ディレクトリのマージ(併合)はやっちゃってOKです。

次に、Cyanogenmodにパッチを当てます。
cd cyanogenmod
sh device/panasonic/ponyo/run_patch.sh

で、必要なファイルを取得します。
$ cd cyanogenmod/vendor/cm/
$ sh get-prebuilts

たぶん、ここまでは普通にすんなりと通ると思います。
ただ、ここから普通にビルドすると弾かれるかと思います。自分がそうでした。
理由は大きく分けると2つです。
・makeのバージョン
・JDKのバージョン

まず、makeのバージョンを解決します。
自分の環境(fedora21)に入ってるmakeのバージョンは4.0です。これに対してICSのビルドに必要なバージョンは3.82か3.81です。
全て試しましたが、
4.0→ごく初期に3.82か3.81じゃねーよと言われ弾かれる。その部分を修正しても良く分からないところでldとかに失敗する。
3.82→ほぼゴールの時点でMakefile: Field 'stem' not cached: Makefileとかいうエラーが出てしまって死ぬ。これはfedoraだけの模様?
3.81→おk
であったので、3.81にダウングレードします。
その方法は疑問メモ:makeのダウングレード方法 - 虎塚を参考にしました。
makeの本家であるMake - GNU Project - Free Software Foundationからリンクを踏んでmake-3.81.tar.gzをダウンロードしてきます。
ダウンロードした場所に飛んで、普通にmakeしてインストールします。
$ tar zxvf make-3.81.tar.gz
$ cd make-3.81
$ ./configure
$ make
$ su
# make install

これでうまくインストールが通れば、恐らく/usr/local/bin/あたりにmakeコマンドが入ってるんじゃないでしょうか?
元のmake(バージョンが4.0のやつ)は/usr/bin/に入ってるみたいなので、それを3.81のやつに置き換えます。
# mv /usr/bin/make /usr/bin/make-4.0
# ln -s /usr/local/bin/make /usr/bin/make
Cyanogenmodのコンパイルをしていないときは4.0の方を元に戻して使ってください。
とりあえず、これでmake -vでも実行してみて3.81と表示されればmakeのダウングレードはOKです。

次にJDKです。
JDKは普通にyum経由だとopenjdkの1.8が入ってるかと思います。
ただし、このままだと通らないので、純正の1.6を入れなおし、alternativesを使ってなんとかします。
とあるエンジニアの備忘log: 複数のJDKを切り替えるを参考にしました。
Oracle Java Archive | Oracle Technology Network | OracleのJava SE 6から一番新しい(番号が一番でかい)ものをインストールします。
この記事が投稿された時点ではJava SE Development Kit 6u45が最新版のようです。
注)この辺をダウンロードするにはOracleの無料の会員登録が必要のようです。
ダウンロードしたら普通にインストールし、そのままではopenjdkとコンフリクト起こすのでalternativesの設定をします。
# jdk-6u45-linux-x64-rpm.bin
# alternatives --install /usr/bin/java  java /usr/java/jdk1.6.0_45/bin/java  15022\
--slave /usr/bin/keytool     keytool     /usr/java/jdk1.6.0_45/bin/keytool \
--slave /usr/bin/orbd        orbd        /usr/java/jdk1.6.0_45/bin/orbd\
--slave /usr/bin/pack200     pack200     /usr/java/jdk1.6.0_45/bin/pack200\
--slave /usr/bin/rmid        rmid        /usr/java/jdk1.6.0_45/bin/rmid\
--slave /usr/bin/rmiregistry rmiregistry /usr/java/jdk1.6.0_45/bin/rmiregistry\
--slave /usr/bin/servertool  servertool  /usr/java/jdk1.6.0_45/bin/servertool\
--slave /usr/bin/tnameserv   tnameserv   /usr/java/jdk1.6.0_45/bin/tnameserv\
--slave /usr/bin/unpack200   unpack200   /usr/java/jdk1.6.0_45/bin/unpack200\
--slave /usr/lib/jvm/jre     jre         /usr/java/jdk1.6.0_45/jre
# alternatives --install /usr/java/default jdk /usr/java/jdk1.6.0_30 16030
# alternatives --config java
# alternatives --config javac
ここで、1.6のあるやつをテンキーで選択し、Enterを押して進んでく感じです。
終わったらjava -versionやjavac -versionなどを試してみてください。
1.6.0_45と出ればOKです。

これで、とりあえずインストールは終わりました。
次に、コンパイル中のエラーを潰していきます。
そのまま下のコマンドを試してそのままコンパイルできればいいのですが、たぶん、途中でエラー吐くかと思います。
その場合、Fix the build for gcc 4.8 - Gitoriousを参考にdalvik/vm/native/dalvik_system_Zygote.cppの35行目に次の文を入れます。
#include <sys/resource.h>

また、この状態でコンパイル始めてもrildとかいうところではまるので、Building your own ROMを参考に、hardware/ril/rild/にあるAndroid.mkをAndroid.mk~にでも名称変更しておきます。

以上で、コンパイルができる環境が整いました。
コンパイルしてみます。
$ . build/envsetup.sh
$ brunch cm_ponyo-eng 2>error.log
色々とwarningが出るとは思いますが、out/target/product/ponyo/にzipファイルができてるかと思います。
これをadbでも使ってP-01DのSDカードに入れればCWMからインストールができるようになります。

お疲れ様でした。

拍手

コメント













カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

アーカイブ

AD

Azkishはamazon.co.jpを宣伝しリンクすることによって サイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。