Androidで使わないApp

# Androidで使わないApp
Androidに入っている使わない(使えない、使いたくない)Appをどうするか

## 注意事項
あなたが使わないと思っているAppでも重要な働きをするAppもあります
むやみやたらと削除・無効化したりすると、端末の動作が不安定になったり、全く動作しなくなったり(Brick化：文鎮化ではないと思う)する場合があります
転んでも泣かないようにしましょう

## アンインストールする
まあそういうことです
それで済めば苦労はないですね

## 無効化する
しかし端末ベンダーがプリインストールしているAppはアンインストールできない
ただしAndroid4.0以降の端末では使わないAppを無効化するという方法が用意されている

```
［設定］－［アプリ］
```
で［すべて］タブとタップすると、端末にインストールされているすべてのAppの一覧が表示される
表示されているAppをタップすると、削除できる場合は[アンインストール]、削除できない場合は[無効にする]ボタンが表示される
ボタンをタップすると注意事項が表示されて、[OK]ボタンを押すと削除、無効化される
当然[アンインストール]も[無効にする]も表示されないAppもある

## どうしても削除したいでござる
[アンインストール]も[無効にする]も表示されないAppをどうしても削除したい場合、どうするのか？

### ★root化すればなんとでもなるんじゃね？
ですね
ただしデメリットも合わせて享受することになりますね
→root化することによって動作しないAppが出てくる等々

端末をroot化さえしてあれば[Titanium Backup ★ root](https://play.google.com/store/apps/details?id=com.keramidas.TitaniumBackup)などで簡単にAppの[アンインストール]、[無効にする]ができたりしますね
しかもいざという時のためにあらかじめバックアップしておくこともできます
![スクリーンショット 2016-12-11 5.15.47.png](https://qiita-image-store.s3.amazonaws.com/0/89027/e171724d-32fd-7a51-558a-31a4c31e4124.png)

#### 結局のところroot化したくないんですよね
端末をroot化すると[Pokémon GO](https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo)とかが動作しなくなっちゃうんでいやなんですよね

#### AndroidROMがアップデートされるたびにポチポチするの面倒なんですよね

* カスタムROM界隈ではNightlyビルドがあったり
* Xiaomiの端末とか公式のROMでもStable版とDeveloper版があったりしてDeveloper版では毎週のように新しいビルドがリリースされてたり

そしてカスタムROMがあったり、Developer版のROMが提供されているからこそ、その端末を触りたい的な話なんですよね
新しいバージョンのROMでフラッシュすると当然ROMに含まれていたAppは復活しちゃうんですよね
そうなると、都度都度ポチポチしていると、忘れたり、面倒になったりしませんか

### そうだ！ update.zipのupdater-scriptでなんとかしよう
面倒なことは自動化しよう！ということで調べてみるとupdate.zipのupdater-scriptを使うとなんとかなりそう

最大のメリットはカスタムリカバリ(TWRP)などを使えるようにしておくと、update.zipを適用するだけで済む
root化しなくてもいいし、あらかじめ削除したいAppをupdater-scriptに列挙しておけば何度もポチポチしなくても済む

#### updater-scriptの簡単な流れ
やらなきゃならないことを列挙するだけでOKなので理屈がわかればとても簡単

やらなきゃならないことの例

* /systemパーティションをマウントする  
ほとんどの[アンインストール]、[無効にする]ができないAppは/systemのappかpriv-appに入っている
* 該当するapkファイルを削除する
* /systemパーティションをアンマウントする

それをupdater-scriptで書くと

* /systemパーティションをマウントする

```
run_program("/sbin/mount", "/system");
```

* 該当するapkファイルを削除する

```
delete("/system/app/Email/Email.apk");
```

* /systemパーティションをアンマウントする

```
run_program("/sbin/umount", "/system");
```

だけ
→当然updater-scriptのしきたりに従うために書かなければならないこともあります

Xiaomi端末のMIUI8で使っている実際のupdater-scriptは

```
ui_print("");
ui_print("Delete Apps ...");
show_progress(1.0,0);
ui_print("Mounting system...");
run_program("/sbin/mount", "/system");
set_progress(0.1);
ui_print("Deleting priv-app ...");

ui_print("Deleting Contacts ...");
delete("/system/priv-app/Contacts/Contacts.apk");
ui_print("Deleting Browser ...");
delete("/system/priv-app/Browser/Browser.apk");
ui_print("Deleting Gallery ...");
delete("/system/priv-app/MiuiGallery/MiuiGallery.apk");

ui_print("Deleting app ...");
ui_print("Deleting Mail ...");
delete("/system/app/Email/Email.apk");
ui_print("Deleting Explorer ...");
delete("/system/app/FileExplorer/FileExplorer.apk");
ui_print("Deleting Notes ...");
delete("/system/app/Notes/Notes.apk");

set_progress(0.9);
ui_print("Unmounting system...");
run_program("/sbin/umount", "/system");
set_progress(1.00);
ui_print("Complete!");
```

な感じです

## まとめ
Androidに入っている使わないAppをどうするか

* 削除する
* 無効化する

当然システムの枠内だと[アンインストール]も[無効にする]もできないものも存在します
その時に

* root化してなんとかする
* root化しなくてもなんとかできるんじゃね？

root化しなくて、なんとかしたい時にはupdate.zipのupdater-scriptが使えるかも

そうそう中華端末を使っていて、中華フォントにゲンナリな御仁にもupdate.zipのupdater-scriptがおすすめです

* お好みのフォントを/system/fontsに突っ込んで  
* 書き換えておいたfonts.xml、fallback_fonts.xmlを/system/etcに突っ込めば

システムフォントが差し替えできて中華フォント問題もすっきり解決です

やりたいことをすべて書いたオレオレupdate.zipを書いておけば、新しいROMがたとえ毎日来ても大丈夫