プログラミング系のネタをまとめていきます。

カスタムROM作成手順

ファイルの種類

apk

Androidアプリケーションファイル。

jar

Java Archive
コンパイルされた複数のJavaバイトコード、リソースを一つにまとめたもの。

dex

Dalvil Executable
Dalvik VM上で動かすための実行ファイル。

必要なツール

Flashtool

Android 1.6, 2.1, 2.3 を端末にインストールするためのツール。
ROM焼きに失敗した時に、元に戻すために使う。

apktool

apkファイル、jarファイルを編集するためのツール。

Cygwin

Windows上でLinuxのTerminalを動作させるツール。

Kitchen_Files

ROM作成、boot.img関連のツール。

dxda Kitchen

ftf-extractor

ftfパッケージからシステムファイルを抽出するツール。

fastboot

カーネル?

DoomLords Easy Root Kit v4

Root化ツール?

Demo META-INF Folder

フラッシュ用のzip作成用

DroidExplorer

リアルタイムで端末のメモリ情報などを見るツール?

セットアップ手順

Cygwinをインストール

  1. 上記サイトからダウンロードした Cygwin.zip を解凍。
  2. cygwin.exeを実行。
  3. Choose A Download Source : install Local Directoryを選択
  4. Select Root Install Directory : cygwinインストール先を選択
  5. Select Local Pacage Directory : インストールするパッケージフォルダ(解凍してできた、cygwin.exeがあるフォルダ(cygwin_packages)を選択)
  6. Select Packages : Allの横のアイコンをクリックして、全て "Install" にする。

Kitchen_Files


アーカイブ内の
boot
kitchen
を、Cygwinのユーザーディレクトリ以下に解凍する。

(cygwinインストールディレクトリ)/home/(ユーザー名)

flashtool, ftf_extractor


解凍するだけ。

flashtool


インストーラー通りに、適当な場所にインストール。

SystemFolderの取得


取得方法。
su
tar -c system/* >> sdcard/system.tar

取得したSystemファイルには不要なファイルがいくつかあって、それらを削除して最終的には以下の構成でOK。
/app
/bin
/etc
/fonts
/framework
/lib
/media
/semc
/usr
/xbin
build.prop

tft_extractorの使い方


※"Only For GB ROM" って書かれていたので、GB ROM(調べてないので分かりません)のみの作業らしい。

tftファイルから system.sin を取り出して、
alUP.exe system.sin 2048 system
で、systemフォルダへ解凍

Kitchenの使い方


作業フォルダに必要なファイルを置いて作業します。

デフォルトの作業フォルダ
(cygwinインストールフォルダ)\home\(ユーザー名)\kitchen\WORKING_XperiaNeroROM
ここには、
  • systemフォルダまるごと (前のステップで取り出した system)
  • META-INFフォルダまるごと (META-INF.rarから解凍)
  • boot.img (どこかから持ってくる?)
を配置しておく。

起動


cygwinのホームディレクトリから、
cd kitchen
./menu
で起動します。

メニュー


1ページ目
  1 - Set up working folder from ROM
  2 - Add root permissions
  3 - Add BusyBox
  4 - Disable boot screen sounds
  5 - Add wireless tethering
  6 - Zipalign all *.apk files to optimize RAM usage
  7 - Change wipe status of ROM
  8 - Change name of ROM
  9 - Check update-script for errors
 10 - Show working folder information

  0 - ADVANCED OPTIONS
 99 - Build ROM from working folder

  u - Update/About kitchen
  x - Exit

2ページ目
 11 - Deodex files in your ROM
 12 - Add task killer tweak for speed (stock ROM only)
 13 - Add /data/app functionality
 14 - Add Nano text editor + sysro/sysrw
 15 - Add Bash (command shell)
 16 - Add Apps2SD
 17 - Add /etc/init.d scripts support (busybox run-parts)
 18 - Add custom boot animation functionality
 19 - Porting tools (experimental)
 20 - Tools for boot image (unpack/re-pack/etc.)
 21 - Unpack data.img
 22 - Sign APK or ZIP file(s)
 23 - Convert update-script or updater-script
 24 - Miscellaneous options / Plugin scripts

 99 - Build ROM from working folder
  0 - BACK TO MAIN MENU

"0"を指定すると、ページを切り替えます。
1
2Superuser.apkを追加
3busyboxを追加
4
5
6
7
8ROMの名前を変更
9
10作業フォルダ以下にあるROMファイルの情報を表示する。
11
12
13
14
15
16
17
18
19
20
21
22
23アップデータスクリプトの変換。Amend ⇔ Edify
Edifyにすると、メニュー"10"で情報の表示が出来なくなるっぽい
24
99ROMファイルを作成。OUTPUT_ZIPフォルダに作成されます。


上記メニューを使って、必要な機能を追加、編集して、"99" でROMのzipファイルを作成します。


update-script(Amend)


Donut(1.6)より前のバージョンのAndroidで使われていたアップデータスクリプト。

updater-script(Edify)


Donut(1.6)以降のバージョンのAndroidで使われているアップデータスクリプト。

詳細はこちら
http://d.hatena.ne.jp/urandroid/20110617/130855671...

kitchenメニュー"23"で作成されるスクリプトは、
/(cygwin)/home/(user)/kitchen/WORKING_XperiaNeroROM/META-INF/com/google/android/updater-script


APKToolの使い方

操作


apktool if framework-res.apk : ローカルPCにリソースをインストール
apktool d systemUI.apk : デコンパイル(decompile)
apktool b systemUI : 再コンパイル。再パッケージ化。

作業フォルダ kitchen/WORKING_XperiaNeroROM 以下のファイルに対して編集の例になります。

1. /system/framework/framework-res.apk, SemcGenericUxpRes.apk をAPKToolフォルダへコピー。
apktool if framework-res.apk
apktool if SemcGenericUxpRes.apk
※ここでインストールしたリソースファイルは、以降のdecompile作業で参照される。

2. 編集したい *.apk をAPKToolフォルダへコピー。
apktool d *.apk
でDecompile。

3. リソースファイル等の置き換え。

4. 再コンパイル。
apktool b (Decompileで作成されたフォルダ)

5. (*.apk)/build/apk/
へ、元のapkの AndroidManifest.xml, META-INF を上書きコピー。
(*.apkの拡張子を zip に変更すると、上記ファイルが取り出せる。)

6. もう一度再コンパイル。
apktool b (Decompileで作成されたフォルダ)

7. (*.apk)/dist/ に apkが作成される。

8. 作成したapkをkitchenの作業フォルダの該当ファイルに上書き。

jarファイルの編集


services.jar を例に説明します。

1. jarファイルを解凍ソフトなどで開くと、classes.dex ファイルを取り出して、APKToolフォルダへ配置。

2. コマンドラインから、
java -jar baksmali.jar -o classout/ classes.dex
classoutフォルダに解凍されます。

3. 解凍したファイルを編集。
ただ、この段階ではアセンブラ的なソースです。

4. コマンドラインから、
java -Xmx512M -jar smali.jar classout/ -o new-classes.dex
で、再パッケージ化。
new-classes.dexというファイルが出来ます。

5. new-classes.dex → classes.dex に変更して、元のjarファイル内に上書きコピーします。
タグ

Menu

メインコンテンツ

プログラミング

機器

Macツール

各種情報

Wiki内検索

おまかせリンク

Androidアプリ

AdSense

技術書


管理人/副管理人のみ編集できます