
概要
- Galaxy Nexus 用 ROM をソースから Build する方法
- たまに自作 ROM で遊びたくなるのでメモ
詳細
ソースの取得
4.3.1_r1 が最終っぽい。(↓の repository で git branch -av して確認)
いや、本来はここで最終のを探すべきだった^^;repo init -u https://android.googlesource.com/platform/manifest -b android-4.3.1_r1 repo sync -j8
SAMSUNG の Proprietary なバイナリの取得
ここ に書かれている通りwget https://dl.google.com/dl/android/aosp/broadcom-maguro-jwr66v-67de03a5.tgz wget https://dl.google.com/dl/android/aosp/imgtec-maguro-jwr66v-8c6053ac.tgz wget https://dl.google.com/dl/android/aosp/invensense-maguro-jwr66v-d0d44515.tgz wget https://dl.google.com/dl/android/aosp/nxp-maguro-jwr66v-c43474a5.tgz wget https://dl.google.com/dl/android/aosp/samsung-maguro-jwr66v-03e74ff7.tgz wget https://dl.google.com/dl/android/aosp/widevine-maguro-jwr66v-9189a15f.tgz
これらを解凍
tar zxvf broadcom-maguro-jwr66v-67de03a5.tgz tar zxvf imgtec-maguro-jwr66v-8c6053ac.tgz tar zxvf invensense-maguro-jwr66v-d0d44515.tgz tar zxvf nxp-maguro-jwr66v-c43474a5.tgz tar zxvf samsung-maguro-jwr66v-03e74ff7.tgz tar zxvf widevine-maguro-jwr66v-9189a15f.tgz
解凍された Shell Script を実行し、色々読んで
“I ACCEPT” を入力./extract-broadcom-maguro.sh ./extract-imgtec-maguro.sh ./extract-invensense-maguro.sh ./extract-nxp-maguro.sh ./extract-samsung-maguro.sh ./extract-widevine-maguro.sh
GPS はデバイスからバイナリを取ってこないと使えない。。
- https://anders.com/cms/435/Google.Galaxy.Nexus/Android/AOSP/camera/GPS/driver
ここを参照 以下でデバイスから取得して配置
↑のサイトには書かれてないが、gps.omap4.so と ducati-m3.bin も取得する必要があった。fRom は↑の ./extract-samsung-maguro.sh で生成されるadb pull /system/vendor/etc/sirfgps.conf cp sirfgps.conf vendor/samsung/maguro/proprietary/ adb pull /system/vendor/lib/hw/gps.omap4.so cp gps.omap4.so vendor/samsung/maguro/proprietary/ adb pull /system/vendor/firmware/ducati-m3.bin cp ducati-m3.bin vendor/samsung/maguro/proprietary/
vendor/samsung/maguro/proprietary/Android.mk の最後(endif の前)に以下を追加
include $(CLEAR_VARS) LOCAL_MODULE := sirfgps LOCAL_MODULE_OWNER := samsung LOCAL_SRC_FILES := sirfgps.conf LOCAL_MODULE_TAGS := optional LOCAL_MODULE_SUFFIX := .conf LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc include $(BUILD_PREBUILT) include $(CLEAR_VARS) LOCAL_MODULE := gps.omap4 LOCAL_MODULE_OWNER := samsung LOCAL_SRC_FILES := gps.omap4.so LOCAL_MODULE_TAGS := optional LOCAL_MODULE_SUFFIX := .so LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/hw include $(BUILD_PREBUILT) include $(CLEAR_VARS) LOCAL_MODULE := ducati-m3 LOCAL_MODULE_OWNER := samsung LOCAL_SRC_FILES := ducati-m3.bin LOCAL_MODULE_TAGS := optional LOCAL_MODULE_SUFFIX := .bin LOCAL_MODULE_CLASS := SHARED_LIBRARIES LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/firmware include $(BUILD_PREBUILT)
vendor/samsung/maguro/device-partial.mk に以下を追加
(下4行を追加、その上の行の最後に \ を追加)PRODUCT_PACKAGES := \ fRom \ libsec-ril \ libsecril-client \ sirfgps \ gps.omap4 \ ducati-m3 \ libpn544_fw
- https://anders.com/cms/435/Google.Galaxy.Nexus/Android/AOSP/camera/GPS/driver
Build
full_maguro-userdebug は 12 なので、lunch して 12 を選んでもOKsource build/envsetup.sh lunch full_maguro-userdebug make -j8 make -j8 otapackage
焼く
adb push out/target/product/maguro/full_maguro-ota-eng.xxxxx.zip /sdcard/ adb push gapps-jb43-20131116-dmd151.zip /sdcard/ adb push UPDATE-SuperSU-v1.43.zip /sdcaard/ adb reboot recovery
Push して、TWRP で起動して以下を焼く
- full_magro-ota-eng.xxxxx.zip (Buildしたもの。xxxxx はユーザ名が入るはず。)
- gapps-jb43-20131116-dmd151.zip
- UPDATE-SuperSU-v1.43.zip
まとめ
- 端末からいくつか binary を抜く必要はあるが、ソースからビルドして端末上で動かすことができた
- これで色々試せる。位置偽装とか。
