Android
 Computer >> コンピューター >  >> トラブルシューティング >> Android

AndroidSystemMods用のFlashableZipを作成する方法

/ systemパーティション用のアプリ(ルートアプリなど)を作成したいAndroid開発者の場合、アプリ用にフラッシュ可能な.zipを作成したい場合があります。これは、アプリファイルを/systemパーティションに正しくインストールできるようにするためです。

フラッシュ可能な.zipのその他の用途には、次のものがあります。

  • DPIの変更
  • カスタムフォントの適用
  • カスタムブートアニメーションの適用
  • システムアプリの削除または追加

ユーザーにファイルシステムをいじって手動でファイルを移動するように指示することは、関係するすべての人にとって時間の無駄です。フラッシュ可能な.zipを作成する方がはるかに便利な方法です。このAppualのガイドでは、Android用のフラッシュ可能なzipを作成する方法を説明します。

また、addon.dスクリプトも表示します。これにより、カスタムシステムの変更がダーティなROMフラッシュに耐えられるようになります。したがって、ユーザーは更新のたびにzipを再フラッシュする必要がありません。

要件:

  • ルートファイルエクスプローラー(MiXplorer、Solid Explorer)
  • ZipSigner(zipに署名する場合)またはMixPlorerを使用する場合はMiXSignerプラグイン
  • Nandroidバックアップを強くお勧めします

また、zipに入るすべてのファイル(APK、構成、ブートアニメーションなど)を準備する必要があります。これはデリケートなプロセスであるため、開始する前にすべてを整理してください。

カスタムZipのテンプレート

自分のニーズに合わせてカスタマイズできるテンプレートzipをダウンロードする場合、またはフラッシュ可能なzipを作成するためのベースとして使用する場合は、ここで入手できます:

  • テンプレートスクリプト:ダウンロードリンク(基本コマンド/カスタム値を追加する必要があります:アプリ、着信音のパス、起動など)
  • TEMPLATE ZIP:ダウンロードリンク(説明をよりよく理解するために例をいつでも歓迎します。ファイルの構造を理解するのに役立ちます)。

テンプレートは、カスタムスクリプトの使用を開始するのに十分なはずです。

これらのメインパスは、フラッシュ可能なzipが通常ターゲットとする/ systemパーティション内のものであるため、覚えておく必要があります。

addon.d => backup script to survive a dirty flash (used by GApps package for instance)
app and priv-app => system apps to add or remove
etc => host file
fonts => your font
media => your bootanimation.zip
media > audio > alarms => sounds for alarms
media > audio > notifications => sounds for notifications
media > audio > ringtones => sounds for ringtones
media > audio > ui => sounds for various things such as low battery, unlock, camera,..
root of /system for build.prop file

これらのパスから削除されたファイルはダーティフラッシュの後に再インストールされ、手動で追加されたファイルは削除されることを常に覚えておいてください。これが、/systemmodsのバックアップを作成するスクリプトを作成する必要がある理由です。

更新スクリプトの例

ui_print("+-------------------------------------+");
ui_print("| CLEAN FLASH SCRIPT |");
ui_print("| |");
ui_print("| by Primokorn |");
ui_print("+-------------------------------------+");
run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "mount", "/system");
ui_print(" ");
ui_print("***Deleting bloatwares***");
delete_recursive(
"/system/app/adaway.apk",
"/system/app/AdAway",
"/system/app/BasicDreams",
"/system/app/BookmarkProvider",
"/system/app/Calendar",
"/system/app/CalendarWidget",
"/system/app/CMFileManager",
"/system/app/CMWallpapers",
"/system/app/DeskClock",
"/system/app/Eleven",
"/system/app/Email",
"/system/app/ExactCalculator",
"/system/app/Exchange2",
"/system/app/Gello",
"/system/app/HexoLibre",
"/system/app/Jelly",
"/system/app/LiveWallpapersPicker",
"/system/app/LockClock",
"/system/app/messaging",
"/system/app/MiXplorer",
"/system/app/NexusLauncher",
"/system/app/Phonograph",
"/system/app/PhotoTable",
"/system/app/PicoTts",
"/system/app/PicoTTS",
"/system/app/ResurrectionStats",
"/system/app/SoundRecorder",
"/system/app/Terminal",
"/system/app/TugaBrowser",
"/system/app/Wallpaper",
"/system/app/WallpaperPickerGoogle",
"/system/priv-app/AudioFX",
"/system/priv-app/Chrome",
"/system/priv-app/Gallery2",
"/system/priv-app/MusicFX",
"/system/priv-app/OnePlusCamera",
"/system/priv-app/OnePlusGallery",
"/system/priv-app/OnePlusMusic",
"/system/priv-app/Recorder",
"/system/priv-app/Screencast",
"/system/priv-app/Snap",
"/system/priv-app/SnapdragonCamera",
"/system/priv-app/SnapdragonGallery",
"/system/priv-app/WeatherManagerService",
"/system/priv-app/WeatherProvider",
"/system/priv-app/Tag"
);
ui_print("Installing apps and mods, etc");
show_progress(8.800000, 5);
package_extract_dir("system", "/system/");
ui_print("***Fixing permissions***");
set_perm(0, 0, 0755, "/system/addon.d/99-dirty.sh");
set_perm(0, 0, 0644, "/system/etc/gps.conf");
set_perm(0, 0, 0644, "/system/fonts/Roboto-Regular.ttf");
set_perm(0, 0, 0644, "/system/media/audio/ringtones/PlasticRing.ogg");
set_perm(0, 0, 0644, "/system/priv-app/Phonesky.apk");
set_perm(0, 0, 0644, "/system/priv-app/microG.apk");
set_perm(0, 0, 0644, "/system/priv-app/Gsam.apk");
set_perm(0, 0, 0644, "/system/priv-app/BBS.apk");
set_perm(0, 0, 0644, "/system/priv-app/V4A-Magisk.apk");
run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data/");
set_perm(0, 0, 0755, "/data/local/afscript.sh");
show_progress(8.800000, 5);
run_program("/sbin/busybox", "umount", "/data");
run_program("/sbin/busybox", "umount", "/system");
ui_print(" ");
ui_print("Done.");
ui_print("Ready to reboot.");

注:ui_print(”“);テキストメッセージ用です。これらの行は何もしません。

作業を行う前に、必ずパーティションをアンマウントしてから再マウントする必要があります。

run_program("/sbin/busybox", "umount", "/system");
run_program("/sbin/busybox", "mount", "/system");

システムコンポーネント/アプリを削除するには、最後の行を除いて、各行の最後にカンマを入れます。

delete_recursive(
"/system/app/adaway.apk",
"/system/app/AdAway",
........................
"/system/priv-app/WeatherProvider",
"/system/priv-app/Tag"
);

インストールするシステムファイルを抽出します。

package_extract_dir("system", "/system/");

Set the file permissions.

set_perm(0, 0, 0755, "/system/addon.d/99-dirty.sh");
..............
set_perm(0, 0, 0644, "/system/priv-app/V4A-Magisk.apk");

同じことを行いますが、/dataフォルダーに対して行います。したがって、パーティションをマウントし、追加するデータを抽出して、アクセス許可を設定します。

run_program("/sbin/busybox", "mount", "/data");
package_extract_dir("data", "/data/");
set_perm(0, 0, 0755, "/data/local/afscript.sh");

次に、変更したパーティションをアンマウントします。

run_program("/sbin/busybox", "umount", "/data");
run_program("/sbin/busybox", "umount", "/system");

Addon.Dスクリプトの例

#!/sbin/sh
# 
# /system/addon.d/99-dirty.sh
# /system is formatted and reinstalled, then thes files are restored.
#

. /tmp/backuptool.functions

list_files() {
cat <<EOF
addon.d/99-dirty.sh
fonts/Roboto-Regular.ttf
media/audio/ringtones/PlasticRing.ogg
priv-app/BBS.apk
priv-app/Gsam.apk
priv-app/microG.apk
priv-app/PhoneSky.apk
priv-app/V4A-Magisk.apk
etc/gps.conf
etc/hosts
EOF
}

case "$1" in
backup)
list_files | while read FILE DUMMY; do
backup_file $S/"$FILE"
done
;;
restore)
list_files | while read FILE REPLACEMENT; do
R=""
[ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT"
[ -f "$C/$S/$FILE" ] && restore_file $S/"$FILE" "$R"
done
rm -rf /system/app/adaway.apk
rm -rf /system/app/AdAway
rm -rf /system/app/BasicDreams
rm -rf /system/app/BookmarkProvider
rm -rf /system/app/Calendar
rm -rf /system/app/CalendarWidget
rm -rf /system/app/CMFileManager
rm -rf /system/app/CMWallpapers
rm -rf /system/app/DeskClock
rm -rf /system/app/Eleven
rm -rf /system/app/Email
rm -rf /system/app/ExactCalculator
rm -rf /system/app/Exchange2
rm -rf /system/app/Gello
rm -rf /system/app/HexoLibre
rm -rf /system/app/Jelly
rm -rf /system/app/LatinIME
rm -rf /system/app/LiveWallpapersPicker
rm -rf /system/app/LockClock
rm -rf /system/app/messaging
rm -rf /system/app/MiXplorer
rm -rf /system/app/NexusLauncher
rm -rf /system/app/Nova.apk
rm -rf /system/app/Phonograph
rm -rf /system/app/PhotoTable
rm -rf /system/app/PicoTts
rm -rf /system/app/PicoTTS
rm -rf /system/app/ResurrectionStats
rm -rf /system/app/SoundRecorder
rm -rf /system/app/Terminal
rm -rf /system/app/TugaBrowser
rm -rf /system/app/Wallpaper
rm -rf /system/app/WallpaperPickerGoogle
rm -rf /system/priv-app/AudioFX
rm -rf /system/priv-app/Chrome
rm -rf /system/priv-app/Gallery2
rm -rf /system/priv-app/LatinIME
rm -rf /system/priv-app/MusicFX
rm -rf /system/priv-app/OnePlusCamera
rm -rf /system/priv-app/OnePlusGallery
rm -rf /system/priv-app/OnePlusMusic
rm -rf /system/priv-app/Recorder
rm -rf /system/priv-app/Screencast
rm -rf /system/priv-app/SnapdragonCamera
rm -rf /system/priv-app/SnapdragonGallery
rm -rf /system/priv-app/Snap
rm -rf /system/priv-app/Trebuchet
rm -rf /system/priv-app/WeatherManagerService
rm -rf /system/priv-app/WeatherProvider
rm -rf /system/priv-app/Tag
;;
pre-backup)
# Stub
;;
post-backup)
# Stub
;;
pre-restore)
# Stub
;;
post-restore)
# Stub
;;
esac

ダーティフラッシュ後に保持するファイルのリストを作成します。

list_files() {
cat <<EOF
addon.d/99-dirty.sh
fonts/Roboto-Regular.ttf
media/audio/ringtones/PlasticRing.ogg
priv-app/BBS.apk
priv-app/Gsam.apk
priv-app/microG.apk
priv-app/PhoneSky.apk
priv-app/V4A-Magisk.apk
etc/gps.conf
etc/hosts
EOF
}

RM -RFダーティフラッシュの後にインストールしたくないファイル(ダーティフラッシュから再インストールされる、変更で削除したシステムファイル)

rm -rf /system/app/adaway.apk
rm -rf /system/app/AdAway
rm -rf /system/app/BasicDreams
rm -rf /system/app/BookmarkProvider
................................................
rm -rf /system/priv-app/WeatherProvider
rm -rf /system/priv-app/Tag
;;

フラッシュ可能なAndroidZipを作成する方法

これにはMiXplorerを使用します。これは、Androidに最適なルートエクスプローラーおよびファイルマネージャーであるためです。

  1. まず、zipに含まれるすべてのフォルダを選択し、[アーカイブ]を選択します。
    AndroidSystemMods用のFlashableZipを作成する方法
  2. アーカイブファイルの作成を確認し、名前を付けて[ストア]を選択します。
    AndroidSystemMods用のFlashableZipを作成する方法
  3. フラッシュ可能なzipが作成されるので、zipファイルを選択してから署名します(MiX署名者プラグインを使用)
  4. 次に、TestKeyを選択して、署名エラーがないかどうかを確認します。
  5. zipをフラッシュできるようになりました。カスタムリカバリから簡単に見つけることができるように、zipを/SDcardに移動することをお勧めします。

最終メモ

フラッシュ可能なzipは、クリーンフラッシュの後、または/systemパーティションをワイプしてROMのダーティフラッシュを実行した後にインストールする必要があります。 updater-scriptは、スクリプトで指定したシステムファイルを削除して追加しますが、addon.dスクリプトはそのままにしておくと、干渉を受けることなく機能します。

最初のインストール後、/ systemパーティションを徹底的にチェックして、すべてが正しいことを確認します。ファイルが削除されるなどです。ファイル名にタイプミスがあり、削除されなかった可能性があります。


  1. Android 携帯でファイルを解凍する方法

    インターネットにより、世界中でドキュメントを簡単に共有できるようになりましたが、大きなファイルの共有は依然として大きな懸念事項でした。この問題に取り組むために、zip ファイルが作成されました。これらのファイルは、多数の画像やビデオを圧縮して、1 つのファイルとして送信できます。 zip ファイルは、当初は PC 向けでしたが、スマートフォンの領域にも進出しました。そのようなファイルを所有していて、その構成要素を解読できない場合は、次の方法で解読できます Android デバイス上の nzip ファイル。 Android デバイスでファイルを解凍する方法 Zip ファイルとは? 前述

  2. Android で Telegram アカウントを作成する方法

    Telegram は、世界中で 5 億人以上のアクティブ ユーザーを持つ、人気のあるオンライン インスタント メッセージング サービスの 1 つです。 WhatsApp、Google Messages、Signal などの他のオンライン メッセージング アプリの優れた代替手段です。 .近年、より楽しく便利な機能のために、何人かの人々がこのアプリケーションを使い始めています。 Telegram アカウントの作成も検討している場合は、この記事を最後まで読んで、Telegram アカウントの作成方法の詳細を確認してください。 Android で Telegram アカウントを作成する方法 多