Nexus7 (2013) + CM11 でパズドラがダウンロードループする
実は先の BeanStalk 自体はしばらく前から出来ていたんです…が!
ビルドした ROM をインストールしてみたら某ゲーム…というかパズドラ…がダウンロードループする事象が発生し、これの原因切り分けに苦労していたのです。長く AOKP を愛用してきた私が BeanStalk をビルドしようと思ったのは、実は AOKP でパズドラが出来なくなったことが原因なのでして…
(多分 この日 の直前のアップデートだったと思う)
2 週間くらい前かな、ひっさびさに BeanStalk が更新されたので、早速ビルドしてインストールしてパズドラをプレイしようとしたら AOKP の時の悪夢がっ!という感じですよ。参りました。
困ってしまったので、過去 1 ヶ月半くらいの間のコミットをしらみつぶしに探して原因を探りましたよ。でもなかなか見つからず。たぶん frameworks あたりだろうとたくさんのコミットに目を通しました。しかし直らず…。パズドラ側が何をチェックしているのか logcat にも何も吐き出さないし。でも最終的には BeanStalk 本体ではなく Cyanogenmod のこのコミットが原因だと突き止めることが出来ました。
bionic です。なんてことはないパッチです。むしろこれでなんでループするのかわからないです。本来別の場所 (カーネルかなぁ?) を合わせて改修する必要があるのやもしれませんが、よくわからないのでこれを潰してビルドしてやります。すると、パズドラは無事ダウンロードループから抜け出します。
このコミット、何せ AOSP から来ているので、 CM11 以外の多くの ROM で採用されています。 Mahdi にも最近入りました。よく見りゃ AOKP にもこのコミット去年の 12 月にw入ってます。
(対処法わかったし AOKP に戻ろうかなぁ…)
対処方法(1)
長くなりましたが、対処方法です。
- コミットを潰して (-R) ビルドする。
$ cd android/bionic $ wget https://github.com/CyanogenMod/android_bionic/commit/a6ec766e03030feb1c3fbb0579e30419c26361c5.patch $ git apply a6ec766e03030feb1c3fbb0579e30419c26361c5.patch -R -v $ cd - $ breakfast deb $ brunch deb
どこか別の場所をこのコミットにあわせて修正するのが正しいのでしょうし、本来 fetch したり cherry-pick したりするんでしょうが、私にはスキルがないので…。 github はコミットの URL の最後に「.patch」をつけるとパッチが落ちてくるので、これを -R でリバースしてあててビルドすると、こんな感じです。
対処方法(2)
bionic から作成される対象ファイル libc.so をロールバックする方法です。
予め古い CM11 なり MAHDI なり何なりをダウンロードしておいて、 /system/lib/libc.so を抜き出します。そしてリカバリーに入ります。ブートメニューから入ってもいいですし、コマンドからでもいいです。
そして予め抜き出しておいた /system/lib/libc.so を上書きして chmod してやるだけで大丈夫です。
コマンドだけでやるならこんな感じかなぁ…。
\ adb push libc.so /sdcard/ \ adb reboot recovery
adb push で端末に転送した後、リカバリーにリブートしてます。
\ adb shell
# mount /system # cp /sdcard/libc.so /system/lib/ # chmod 644 /system/lib/libc.so # reboot
system をマウントし、コピーしたあと権限を戻してやり、再起動してます。
まぁ、わかりますよね。
出来る人なら、オレオレ zip を作って install でも良いと思います。
あとは楽しいパズドラライフを!
私は最近テクダンのゼウスとノーマルのヘラばっかり回っています。良アプデでした。
パズル&ドラゴンズ オリジナルサウンドトラック イトケン・リミテッド 伊藤賢治 gentle echo / Harmonics Music 2013-04-28 売り上げランキング : 41010 Amazonで詳しく見る by G-Tools |