ROMの改造は大まかに分けて、簡略化・追加・美化の三種類に分けられます。ここでは主に簡略化と追加の二つについて説明します。美化に関しては、他の投稿を参考にしてください。 1. まずはROMの中に何があるのか見てみましょう: WinRARでフラッシュ用パッケージを開くといくつかのディレクトリが見えます。以下に関連するディレクトリと説明を示します。 dev_data/apps/ : システムアプリのapkファイルディレクトリで、フラッシュ後の "/data/app_s/" に相当します。ここにあるアプリはフラッシュ後は削除できません。 dev_data/app/ : ユーザーアプリのapkファイルディレクトリで、フラッシュ後の "/data/app/" に相当します。ここにあるアプリはフラッシュ後に削除可能です。(10月28日以降のバージョンにのみ存在し、以前のバージョンではユーザーが自分でこのディレクトリを追加する必要があります) META-INF/com/google/android/ : フラッシュスクリプトファイル system/etc/ : 一部の設定ファイルが保存されている場所 system/etc/permissions/ : ソフトウェア権限に関連するもので、一部のパッチはこのディレクトリにファイルを追加する必要があります system/lib/ : システムアプリのライブラリファイル保存場所 2. 次にフラッシュスクリプトファイルを理解してみましょう。 Recoveryでフラッシュを行う場合、フラッシュの過程はスクリプトファイルによって制御されます。 スクリプトファイルは圧縮パッケージ中の META-INF/com/google/android/ ディレクトリにある update-script ファイルで、テキストエディタで開くことが可能です。 スクリプトファイルの中に次の数行が私たちの関心事項です。 (1)show_progress 0.1 0 : 進行状況バーの表示 これはフラッシュの進行状況バーを表示するためのもので、前の0.1はバーの位置を示しており、別の値に変更可能(1未満)。後ろの数字の意味ははっきりしませんが、大体最後以外は0、最後の行が10です。一部のROMではフラッシュが完了したのに進行状況バーが半分ほどしか進まないことがあります。その場合、最後の行を show_progress 0.8 10 に変更してみてください。進行状況バーが最後まで進むようになります。(2) いくつかのキーワード (A) "SYSTEM:" はフラッシュ後のシステムディレクトリを示します = "/system/" (B) "INTERNAL:" はフラッシュ後の /data ディレクトリを示します = "/data/" (C) "PACKAGE:" は圧縮ファイルのルートディレクトリを示します 例えば "SYSTEM:etc/" はフラッシュ後の "/system/etc/" ディレクトリに相当し、"PACKAGE:dev_data" は圧縮ファイル内の dev_data ディレクトリに相当します (3) copy_dir PACKAGE:dev_data INTERNAL: copy_dir はディレクトリをコピーするために使います。最初の引数はコピーするディレクトリ、2番目の引数はコピー先です。 例えば copy_dir PACKAGE:dev_data INTERNAL: は ROM 圧縮ファイル内の dev_data ディレクトリの内容をフラッシュ後の "/data/" ディレクトリにコピーするために使います (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin ディレクトリやファイルの権限を設定するために使います。使用方法は Linux での権限設定と似ています。 (5) delete SYSTEM:app/YouTube.apk ファイルを削除します。通常この操作はあまり使いません。削除する場合は、直接削除すれば良いです。 よし、これでプログラムの整理や追加ができます 二。システムプログラムの整理 「整理」とは実際にはシステムプログラムを削除することです。私たちが使わないプログラムは削除できます。これらのプログラムを削除する利点は (1) 使わないものがプログラムリストに表示されるのは煩わしく、こうしたプログラムが多いとプログラムリストを開くのも遅くなります。 (2) 一部のプログラムは起動後にメモリを占有しますが、私たちはそれを使用しません。例えば、SMS 受信拒否などです。 (3) 元の ROM に付属しているプログラムを使いたくない場合は、別のプログラムに替えたい場合があります。例えば、ADW が嫌いなら LAUNCH PRO に変更するなどです。 整理方法は非常に簡単で、WinRAR で ROM を開き、dev_data/apps に入り不要なプログラムを見つけて削除するだけです。 どのプログラムを整理できるかについては、多くの投稿で触れられていますので、検索して確認してください。三。プログラムの追加 プログラムを追加する方法は二つあります。一つはプログラムをシステムプログラムとして追加する方法、もう一つはユーザープログラムとして追加する方法です。 プログラムをシステムプログラムとして追加する利点は実行速度が速いことです(皆そう言っていますが、私はあまり実感できませんでした)。欠点は直接アンインストールできず、RE などのツールを使って削除する必要があることです。実際、REを使ってシステムプログラムのAPKファイルを直接削除しても、必ずしも完全にアンインストールできるわけではありません。信じられない場合は、/data/data/ ディレクトリを見てみてください。すべてのプログラムが1つのターゲットに対応しており、そのディレクトリ名はプログラムパッケージの名前と同じです(XXX.APKのXXXではありません)。
1. システムプログラムの追加: システムプログラムを追加する最も簡単な方法は以下の通りです:
(1) WinRARでROMの圧縮ファイルを開き、"dev_data app_s" ディレクトリに入り、追加したいプログラムのAPKファイルをコピーします。
(2) 追加するAPKファイルをWinRARで開き、“lib/armeabi”ディレクトリに.soで終わるファイルがあるか確認します。これらはプログラム実行時に必要なライブラリファイルです。存在する場合は、それらを圧縮ファイル内の“system/lib/”ディレクトリにコピーします。ROMを修正する際に追加したプログラムが実行できない場合は、ほとんどがこのケースに該当します。例えば、新しいバージョンのGoogle Pinyin入力法などです。
2. ユーザープログラムの追加: ユーザープログラムの追加は少し手間がかかりますが、フラッシュ後は直接アンインストール可能です。10月28日以降のROMを使用している場合、APKを"dev_data/app/"ディレクトリに直接ドラッグします。このステップは非常に簡単ですが、APKにライブラリファイルが含まれている場合が面倒です。処理方法はシステムプログラム追加の2番目のステップと同じです。この方法の欠点は、ライブラリファイルをアンインストールしても“system/lib/”に残ることです。幸いにもほとんどのプログラムにはライブラリファイルがなく、少数のプログラムで残ったライブラリファイルも問題ありません。より高度な方法は、スクリプトを書いてインストールする方法です。
10月28日以前のROMでは、“dev_data/”内にappディレクトリはありません。自分で作成できます(WinRARで右クリックして、新しいフォルダを作成を選択)。ディレクトリを作成した後、フラッシュスクリプトでディレクトリの属性を設定する必要があります: フラッシュスクリプトのこの部分を探します:
copy_dir PACKAGE:dev_data INTERNAL:
set_perm 1000 1000 0771 INTERNAL:app_s
その後にこの一行を追加します:
set_perm 1000 1000 0771 INTERNAL:app
最初の行はROM内のdev_dataディレクトリの全ての内容を/dataディレクトリにコピーすることを意味し、2行目はapp_sの権限を設定します。私たちが追加した行はappの権限を設定するものです。
その後、ROMの修正や調整を行うことができます。
四。firstbootスクリプトはROMに対して高度な設定を行うために使用でき、firstboot.shスクリプトを利用することができます。firstboot.shスクリプトはROMのdev_dataディレクトリにあります。スクリプトのコードは、端末をフラッシュした後の初回起動時に実行され、これを利用してシステムの設定やAPKのインストールなどの作業ができます。
liudidi1028romのスクリプトの一部を見てみましょう
# システムデフォルト設定
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_unlock_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"
皆さん、この三つのコードの役割は想像できると思います。スクリプトがこのように書かれている理由については、私も詳しくないので、質問しないでください。皆で一緒に研究できます。
スクリプト内ではrmやmvなどのコマンドを使用でき、それを利用して特定の設定ファイルを直接上書きすることができます。
例:
busybox rm /system/etc/あるファイル
busybox mv /system/etc/あるファイル
もちろん、システムファイルを変更する場合は、最初に権限を取得する必要があります:
busybox mount -o remount,rw /system
その後、再び読み取り専用に変更します:
busybox mount -o remount,ro /system
firstboot.shは非常に便利です。どなたか初級者向けのチュートリアルを書いてくれたらいいのですが!