2010年9月12日日曜日

開発機をユーザ向けに仕立てる

開発機のroot権を取れなくすることはできる?の続きです。

findupさんに教えてもらった方法でよさそうでした。
試したのはAndroid2.2r1.1をSmartQ5向けにビルドしたものです。

普段ビルドするとき、「choosecombo 1 1 XXX 3」でやってました。
この数字の意味は順に「シミュレータではなく実機」「デバッグではなくリリース」「userでもuser-debugでもなくeng」になります。
この3番目をengではなくuserにすると、ユーザ向けビルドになるようです。
http://pdk.android.com/online-pdk/guide/build_system.html#androidBuildVariants

user
* Installs modules tagged with user.
* Installs non-APK modules that have no tags specified.
* Installs APKs according to the product definition files; tags are ignored for APK modules.
* ro.secure=1
* ro.debuggable=0
* adb is disabled by default.

eng
* Installs modules tagged with: eng, debug, user, and/or development.
* Installs non-APK modules that have no tags specified.
* Installs APKs according to the product definition files, in addition to tagged APKs.
* ro.secure=0
* ro.debuggable=1
* ro.kernel.android.checkjni=1
* adb is enabled by default.

赤文字の部分が大きな違いかな、と思います。

userでビルドしてインストールすると、確かに動きが違いました。
adb shellでbusyboxが使えない・・・。何でかと思ったら、busyboxの所有者がsystemで、それ以外のアクセス権がなかったからでした。
/systemにmkdirなどもできません。
これがroot権限がない、という状態か・・となかなか衝撃的でした。

なお、userとengを切り替えるときにはmake cleanする必要はなく、自動的にmake installcleanというものを実施するようでした(という説明を、clean後に読みました。。。)。

0 件のコメント:

コメントを投稿