2013年9月3日火曜日

[tips]もっさりしたATB701A(を始めとする中華パッド各種)を少しでも軽くする

注:タイトル少し変えました。

ATB701Aを始めとするいささか見劣りするスペックのタブレットを、それでもできるだけサクサク速く使うにはどうするのだろう、という事を考えて2週間ほど試行錯誤していました。

「ま、まだ戦えるっ!!」
結論、というほどではないにせよ最初からRootが取られているこの機種では手も足も出ないというわけではなく、ある程度の対策は可能、です。Root取得できない(あるいはしていない)機種でも使えるTipsもあるので、参考にしていただければいいですが、基本的にはRomToolBox(または個別配布されている同一機能を持ったソフト群。Lite版が同じ動作をするかどうかは知らない…)とTitaniumBackupの使用を前提にして有ります。




使わないアプリケーションは削除または凍結する

コレは定石ですね。Titanium Backup を始め、rootがとれている端末であれば、systemアプリケーションですら削除可能です。私の環境で削った/凍結したのは下記。

ブラウザ

Maxthon Browserも入れてますが…

削除 デフォルトブラウザ…別なブラウザ入れるから要らない
削除 ダウンロード4.0.4…同上

代替 お薦めは UC Browser(ただしメニュー類は日本語化されていません)。サーバ側でページ内容をレンダリングしてアプリに表示するらしいので、端末側の負荷は下がると言われています(ま、実際はやはり一定しない量のデータをあつかうブラウザはやはり負荷のもとになりがちです)。同じようなものならOpera Miniでもいいんですが、Opera MiniはJavaScriptが動かないのと調整項目があまりに少なすぎるので嫌気が差します。

メール

削除 Exchangeサービス…Exchangeメールなんて使わない
代替 なし。というか要らない。

Google検索

凍結 Google検索…検索はブラウザからやればいいので要らない。
代替 たいていのブラウザで検索できるので要らない。音声検索も凍結なり削除してもいいかもしれない。

通信サービス

WifiかLANドングル使うので要らない。

削除 Mobile Network Configuration…3G通信アダプタの類は入れていないので要らない
削除 モバイルデータ4.0.4…同上

代替 なし(WifiかUSBネットワークアダプタ使うのには不要)
注意 「設定」で無線とネットワーク>その他>モバイルネットワークを開こうとするとエラーが出ますが、要らないものの設定はやりようがないので無視。

ユーティリティ


削除 電卓4.0.4…別な電卓アプリ入れるから要らない
削除 ファイルマネージャ…別なファイルマネージャ入れるから要らない

代替 電卓はたとえばRealCalcなど使いやすく高機能なアプリがあるので特にに困りません。
RealCalc:7inchタブレットフルスクリーンで出るから老眼にも安心だ。

ファイルマネージャはESファイルエクスプローラが有名ドコロですが、リモートサーバ(CIFS…Windowsネットワークやら、FTPサーバやらDropBoxなどクラウドの類)に接続しない人で、Rom ToolBoxあたりを入れていれば、Root Browserで事足りるのであえて足す必要はありません。なおRootBrowserは別アプリとしても存在してます。

また、最近見つけたのですがTotal Commanderもサイズが小さくていいです。こちらはプラグインでリモートサーバに接続することもできます。要るものだけ入れればいいし、重たくなってしまったESエクスプローラよりいいかも。
Total Commander:2ペイン式、ESよりファイル小さい。
クラウドストレージのプラグインがないがそれは専用クライアントにまかせていいのかも。

ランチャ

凍結 ランチャー4.0.4…別なランチャ入れるから要らない(注:代わりのランチャ入れてから凍結なり削除なりしてください)

代替 Apex Launcher(フリー版で十分使えます)。

Apex Launcher:俺デスクトップを晒す。

ADW Launcher EXをずっと愛用してきましたが、最近はこっちです。Go Launcher Exも最近は以前ほどメモリを食わなくなってきている気はしますが、広告やらPush配信でうざかったり見本アプリやにダミーウィジットがウザイのでそれらへの対抗策が無いならあんまりおすすめしません。

バックグラウンドプロセス数は制限するとよいかも

先日試してみて思いの外体感効果が高かったのはコレです。海外サイトではICSが出た頃しばらくたって
「そもそも開発者向けオプションに入ってるものだからICSのメリットを削ぐことはあっても一般ユーザにはメリット無いよ」
「いや、実際にやってみたらUIのリロードが減ったよ」
といった議論がありました。まぁ、ランチャの再描画は減らないと思います(リロードってそう意味ではないかも)が、ICS以降のAndroidのメリットというのは、マルチコア、潤沢なメモリを前提としたものです。512MBしかメモリがなく、シングルコアを搭載したタブレット機にとってはそれは正義とはならないのです。メモリをできるだけあけるのが正義です。

あとで少し説明するFMR Memory Cleaner併用でちょっと実験。

FMR Memory Cleaner:お掃除直後。

195MB空いてます。コレくらいはアプリが使えるはず、ってことですね。
「設定」>「開発者向けオプション」から、バックグラウンドプロセス数を2にしてみます。
「二つで十分ですよ!」
「ノー、ツーツー、フォー」
…どっちでもいいって。
FMRでメモリ掃除した直後の状態。System Panelで見ると、175MBのメモリが空いている。ちょうどSystemPanelのぶんだけメモリが消費された状態。

つづいて、UC Browserを起動する。44MBほど消費されて、残り131MB。

さらにGMailを起動。残り121MB。余裕あり。

さらにYoutubeを起動。バックグラウンド状態のアプリはこれで二つ。残り107MB。

さらにGoogleMapを起動。残り112MBと変わる。GmailとYoutubeどちらかが残ると思ったが、思い切りよく終了させられてしまった。ちょっと残念。UC BrowserはPercepitible(裏にいるが動作している)状態なので終了させられなかった模様。

UC Browserに戻ってデフォルトホーム画面から1ページ軽めのサイトを開く。123MBの空きメモリ。

さらにブラウザで別タブでもう1ページ開く。残り118MBのメモリ。1ページ開くごとにだいたい4MBづつ消費されている感じ。

…とまぁ、こんな具合にバックグラウンドプロセスの上限を2にして使っていると、ブラウザのタブに軽めのページならあと5つくらいは乗る感じです(実際にはアプリに割り当て可能なヒープサイズ上限があるのでそれに引っかかるまで…)。マルチタスクで動くAndroidといっても、人間はいいところ2−3ぐらいのアプリしか同時にはおそらく必要としないので、この程度の割りきりでいいんじゃないだろうか、と。

ちなみに、空きメモリが100MBくらいあると、次のアプリ起動は早いです。終了させられてしまったアプリが再起動すると画面の状態が初期状態に戻っていたりするものもある(覚えているものも当然ある)ので、操作性が犠牲にならないわけではないですが。

もっさりアプリ切替もままならないけど状態は保持してくれる(とはいえメモリ足らないので程なくどれかは蹴り出されるのだけど)のと、とりあえずフォアグラウンドで操作しているアプリ程度はまだスムースに動くのと、どっちを取るのか、ってことですね。

ウィジットは最小限に

ウィジットは思いの外システムに負荷をかけます。あとで述べるようにBinderという共有メモリも消費するので、システムを不安定にする要因になりえます。ウィジットがだめ、という事じゃなくて特に負荷をかけやすいので最低限にしましょう、ということです。時計ウィジットが欲しいなら、文字だけでええやん。みたいな。Advanced Clock Widget がいいですよ。

共有メモリを消費するアプリケーションをできるだけ減らす

前提知識

Androidのアプリケーションはプログラム同士のやり取りにBinderというものを使います。平たく言えばメモリです。そしてやりとりに使えるサイズはシステムの構成により変わるようで明確に幾ら、と言えないのですが、上限があり、思いの外少ないようです。
Binderは他のプロセスからデータを「共有」されて動くようなアプリケーションで消費されます。たとえば、画像編集ソフトであればカメラから画像を貰って処理します。その場合にBinderのためのメモリが使われます。アプリケーションは起動するときにBinderを確保することが多いようです。

Binderが枯渇するとどうなるか

アプリケーションは起動するときにBinderを確保することが多いですが、すでに他のアプリケーションがBinderを使い切っているとどうなるか。答えは「ダンマリになる」です。画面が真っ黒になったまま起動しなかったりします。
AndroidのSDKを使えば、その時Androidシステムがどういうエラーを出しているかがlogcatコマンドで確認できるでしょう。

!!! FAILED BINDER TRANSACTION !!!

アプリ開発者にとってはこれ頭痛の種らしいですが。

ウィジットも実はBinderを使います。常駐する部分とアプリケーション本体のやりとりに使います。でかいウィジットに美麗なグラフィックや写真を表示するようなアプリケーション、メインの画面に派手なグラフィックスを多用しているもの、多数のデータ形式を扱えてあちこちのアプリケーションの「共有」機能から呼び出されるようなものも注意です。困ったところではRom ToolBoxが結構Binderを食うようで、特に各機能のショートカットを使いもしないのにたくさん並べるとBinderが枯渇しがちになります。

対応

Binderはいつ枯渇するかわからないので、それなりの余裕を持たせてアプリを選別するしか無いんですが、アプリケーションの起動画面が突然出て来なくなったりしはじめたら、とりあえずはあまり必要でない、内容の割に画面ハデめのアプリケーションなどをアンインストール。あるいはウィジットを減らします。

また、アプリケーションを一旦アンインストールして、再度入れなおすと状況が良くなることもしばしばあるようです(こんなバカっぽい説明はイヤなんだけどそうなんだから仕方ないのだ…)。

アプリケーションのいくつかをsystemアプリケーションにする

よく言われているのは、OS標準の機能としてアプリケーションをストレージ(SDカード)などに移すということですが、これにはデメリットがあります。


  • ウィジットが出せなくなる
  • SDカードがお亡くなりになったらおしまい
  • 不安定になることがわりと多い
  • アプリの名前がモジュールの内部名みたいなの(例:google翻訳⇒com.google.android.apps.translate)に変わってしまって人間にやさしくない
個人的にはSDカードのマウントに失敗しがち(起動時に時間のかかるアプリがあってSDカードのマウントがタイムアウトするとか)なことがあるので、これはお勧めしないです。

Androidでは通常のアプリケーションはストレージ(メモリやRAMディスク)の /data ディレクトリの下にインストールされます。一方、システムの一部としてインストールされている重要なアプリケーションは /system の下にインストールされます。Titanium Backupを使えば、あとからインストールされたアプリケーションをシステムアプリケーションに変換できます。

もちろん、 /systemに割り当てられているストレージも有限ですので、なんでもかんでも突っ込んでいい、というわけではありません。もちろん、危険も伴います。適切なバックアップをしてください。CWMとか、TWRPとかそのへんで。
私は以下のような観点であとから入れたアプリをシステムアプリ化しています。

削除または凍結した重要度の高いアプリケーションの代替
ランチャなど特に重要なもの。ブラウザや電卓はシステムアプリケーションにする意味はあまりないので対象としません。

Root権限を要求するもの
SuperSUなんかは元々システムアプリとしてインストールすることを推奨しています。思い切ってRomToolBoxも、TitaniumBackupもシステムアプリとして /system に入れています。当然ですが由来のや動作怪しいものを /system には入れないようにしてください。

「DalvikVMヒープサイズ」を小さくする

Androidアプリが動く際に使用する、共用のメモリです。これも説明によっては「このサイズを大きくするとアプリケーションの動きがスムースになる」とか書かれていて増やしたくなる衝動に駆られますが「システムの動きが軽くなる」とは書かれていません。当然、抱え込んだメモリはアプリケーションが終了するまで解放されない事も多いので、ブラウザのようなメモリを食うアプリケーションを立ち上げると居座られたりすることもありえます。
私のATB701Aは128MBに設定しました。

思い切って削ります。ATB701Aでは256MBが初期サイズとして取られていますが、RomToolBoxのBuild.prop Editorで小さくします。256MBから64MBにまで縮小できるようです(別項目にあるvm.dalvik.heapgrowlimitの値より小さくしてはいけない。ATB701Aはこの値は48MBとなっている)が、アプリケーションの突然死確率、ランチャのリロード(画面書き直し)頻度があがるようです。

32MBにまで落としたら…ブートループ(起動時に画面が黒いまま)で、ヘタしたら文鎮化します…やっちゃいけません(私はこれでROMを一度焼き直しました…)。

このVMヒープサイズ、おそらく指定されたメモリをガツンととっているわけではないので、大幅に削ったからといって即座にそれだけのメモリが新たに増えるという類のものではないです。128MBあれば十分でしょうか。Facebookのような肥大ソフトをATB701Aで動かすのはあまり賢明ではありませんが、それでもFBが突然死するようでしたらこの値は調整して大きくしてみてください。

FMR Memory Cleanerを使う

このメモリクリーナは他のものと違って副作用が少ないように思います。私の環境でクリーンアップ実行すると190MB位空きができます。全体で400MB弱なので、半分くらいはアプリケーションに確保できる、ってことでしょう。なおバックグラウンドプロセスの数を制限すると、これを頻繁に起動する必要はない気がします。

SDカードの読み書きキャッシュサイズを増やす…といいのだけど⇒【追記】SD-Boosterで解決

SDカードのファイルを読み書きするための一時キャッシュのサイズを適切に調整すると、ギャラリーで写真をみたり、SDカード上の動画の再生がスムースになることがあるようです。ATB701Aのシステムのデフォルトは128KBですが、これは2048KB程度にまで増やすのがいいらしいです。これ以上増やすと、小さなファイルを読み書きすることが多いAndroidの性格上、今度はキャッシュそのものの管理にかかる処理のほうが負担になるようです。

この設定は、RomToolBoxのSD Boostから行うことができる…はずなのですが、なぜかブート時適用(Apply on boot)をしても有効にならない…。原因不明です。起動して都度書き換えるのは効くようなのですが。
なんででしょうね。
2013/09/09 追記:その後、SD-Boosterというアプリで解決しました。XDAあたりで有志がSDカードのキャッシュサイズ最適値を探った成果の一つとして掲載がありました。これ使えばOK。再起動してもキャッシュサイズ固定されたままです。類似ソフトはいくつかあるので他のでも有効かも。とりあえず、RomToolboxの内蔵SDカードブースターは使えない、ということで。

画面の自動回転はOffにする

アプリケーションによっては回転方向による表示切替を積極的にやってるようですが、機種や個体(ロット)によっては自動回転のための切替信号がどうも高頻度で出ているようで、アプリケーションが迷うのか動作がとても遅くなることがあるようです。使用場面に応じて、手動で切り替えてやったほうがいいことが多いように思います。
Rotation Adaptive Lockを使うのも一つの手です。

重たいウィルスチェッカは使わない

ちょっと前までAvast! Mobile Securityを使っていましたが、最近Premium版への移行キャンペーンがあまりにうざいのでDr.Web Lightに乗り換えています。軽くていいです。

もともと、Androidのウィルスチェッカは全部のブラウザに対応しているわけでもないし、ファイアウォールも別ソフトであります。怪しいサイトの広告を踏みたくないのであれば、AdBlocker(RomToolBoxにこっそり入っている)を使えばいいし、ウィルスチェッカはファイルのダウンロードやインストールの時に発動するので十分、と割り切りで軽いものにしています。とはいえこれとてファイルスキャンなどで結構メモリとCPUパワーを食ってるんですが…


…と、ここまで書いてきて

最近は「なんでここまで苦労しなきゃいけないんだ」的な感想が…(笑)Android4.x以上のメリットを享受したいならこれからはやはり、最低限
  • マルチコア
  • RAMはDDR3で1GB以上
という条件で選定したほうがいいでしょうね。いいでしょうね…寒い…。


←GPSもBluetoothも要らない、という方には実はこれがいい気もします。誰か買って深めのレビューしてくれないかな…いちおうデュアルコア、メモリ1GB、マイナー機種(Icoo D70 pro)がベースなのですがroot取るところまではいけるでしょう。

え、お前が自腹でやれって?


0 件のコメント:

コメントを投稿