2011/02/11

SuperOneClick v1.6.5 (Allow Non Market Apps編)

SuperOneClick の詳細の続き。
今回は Allow Non Market Apps ボタンをワンクリックすると何が起きるのかを解説してみる。


Android Market 以外からダウンロードしたアプリのインストールを許可するかどうかは、settings.db という SQLite のデータベースに登録されている設定値で判断されているらしい。そのため、その設定値を変更してインストールできるようにする。

順に処理を追っていく。

1. ADB Server の停止と起動
環境によっては Android SDK がインストールされていたりして、既に別バージョンの ADB Server が起動しているかもしれないので、ADB Server を停止して SuperOneClick に同梱されている ADB から ADB Server を起動する。

2. sqlite3 のコピー
sqlite3 が実行可能かどうかチェックして、実行できない場合はクライアント上の sqlite3 を /data/local/tmp/ にコピーする。
実行できるように、コピーしたファイルのパーミッションを 0755 (rwxr-xr-x) にする。

3. settings.db の探索
settings.db が /data/data/com.android.providers.settings/databases/ にあるか確認する。
見つからない場合は /dbdata/databases/com.android.providers.settings/ にあるか確認する。
それでも見つからない場合は busybox の find コマンドで settings.db を探す。
この時、find コマンドが実行できない場合は、クライアント上の busybox を /data/local/tmp/ にコピーして実行権限を与えた上で find コマンドを実行する。

4. 設定の確認と変更
sqlite3 を使用して、3 で見つけた settings.db の secure テーブルの install_non_market_apps という項目の値を取得する。
取得した値が 1 でない場合は、install_non_market_apps の値を 1 に更新する。
再度 install_non_market_apps の値を取得し直して、値が 1 であることを確認する。

以上で終了。
ボタンに書かれているように要 rootだが、su コマンドが実行できる状態であれば自動的に権限昇格してくれる。もし、su コマンドが実行できない状態であっても、Shell Root 等による root 昇格後であれば問題ない。

0 件のコメント:

コメントを投稿