さまざまな物や事に関する、役に立ったり立たなかったりするテキストが綴られるブログ。

2014/09/29

[Android] KitKatの外部ストレージ書き込み制限を解除してみる

なんで?
ウチのNexus7では、MultiROMでJelly Bean(JB)とKitKat(KK)を使い分けております。それぞれの環境を行き来する関係でほぼ同じアプリがインストールされており、Titanium BackupによるアプリのバックアップはJB環境のみで実施しておりました。

先日のこと、ふと思い立ってKK環境でバックアップを実行したところ、"一括バックアップ中断:十分な空きストレージ容量"なるエラーで処理が止まってしまいます。

アプリのバックアップはUSBメモリに保存しており容量的には問題ナシ。念のためバックアップフォルダの場所を確認してみると、上記スクリーンショットの通り"このフォルダには書き込めません"なるアラートが...。

「ナニゴト?」と一瞬焦りましたが、少し考えて思い出しました。KKからは外部ストレージへの書き込みに制限がかけられたということを。同じ環境でもRoot Explorerでは問題なく外部ストレージに書き込めたりするためすっかり忘れておりました。

別機種ではありますがXperia Rayで使用しているKK版LegacyXperiaに至っては、Titanium Backupですら普通に外部ストレージへの書き込みが行えたりします。

何にせよ、このNexus7におけるTitanium Backupのエラーは外部ストレージへの書き込み制限が原因であると仮定して、その方向で対処してみることに。いろいろ探してみると、Googleプレイにて"NextApp SDFix"(要root)というアプリを発見しました。

上が1回めで下が2回目の画面
このアプリの使い方は簡単で、起動したら指示に従って数回タップするだけ。なのですが、ウチの環境ではこちらのように真っ赤なエラー画面が表示されてしまいます。

ところが、もう一度アプリを実行してみると緑の画面で"このデバイスはすでに外部ストレージへの書き込みに対応してるから何もしないぜ(意訳)"とのお言葉。

とりあえず、現状で何がどうなっているのか確認しないと話になりません。

調べてみると、このアプリは/system/etc/permissions/platform.xmlの記述の一部を書き換えることで外部ストレージへの書き込みを可能にしているとのこと。具体的には...
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_r" />
<group gid="sdcard_rw" />
...の下に以下の1行を追加するだけ。
<group gid="media_rw" />
なので、適当なファイル管理アプリで、/system/etc/permissions/platform.xmlを開いてみれば一目瞭然です。確認してみたところ、きちんと書き換えられておりました。真っ赤なエラーの原因は不明ですが、処理自体は正しく行われた様子。

実際にTitanium Backupを動かしてみましたが、正常に処理が完了しました。バックアップに失敗する原因は、やはりKKの外部ストレージ書き込み制限が問題だったようです。

技術に明るい方にはおわかりかと思われますが、もちろん直接/system/etc/permissions/platform.xmlを編集する方法でも同じ結果が得られます。というかファイルを開いて中身を確認するぐらいなら、初めからそちらの方法を選んだ方が手間がなかったかも。

今更感のあるネタではありますが、同じような症状に悩んいる方にとって何かのヒントになりますれば。



Related Posts with Thumbnails

0 件のコメント:

新しい投稿へ 以前の投稿へ ホームへ