【第5回】potatotips
(iOS/Android開発Tips共有会)
「開発者向けオプション」の
削除
お題目
開発者オプション
Developer Option
• 4.2からデフォルトでメ
ニューが非表示
– 端末情報→ビルド番号を7
回タップ
• ADB USB デバッグ ON
• ランタイムを選択
– Dalvik or ART
• タップを表示
• レイアウト境界を表示
• CPU利用状況を表示
• GPU表示の更新を表示
• 厳格モードを有効
Android 4.2 公式サイトで紹介
• http://developer.android.com/about/versions
/jelly-bean.html
• On devices running Android 4.2, developer
options are hidden by default, helping to
create a better experience for users. You can
reveal the developer options at any time by
tapping 7 times on Settings > About phone >
Build number on any compatible Android
device.
問題
• 端末を開発者以外の人
に渡せない
– USBメモリの代替
– 写真の受け渡し
開発者向けオプションの
項目表示を削除したい
現状分析
• 設定アプリのソースコード調査
– 「設定アプリ」->「端末情報」->「ビルド番号」
• 設定アプリのパッケージ名
– com.android.settings.Settings
• 「端末情報」のソースコード
– DeviceInfoSettings.java
https://sites.google.com/site/devcollaboration/codesearch
設定アプリのソースコード調査(1/3)
• http://tools.oesf.biz/android-
4.2.0_r1.0/xref/packages/apps/Settings/src/com/and
roid/settings/DeviceInfoSettings.java
static final int TAPS_TO_BE_A_DEVELOPER = 7;
@Override
public void onResume() {
super.onResume();
mDevHitCountdown =
getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW,
android.os.Build.TYPE.equals("eng")) ? -1 : TAPS_TO_BE_A_DEVELOPER;
mDevHitToast = null;
}
設定アプリのソースコード調査(2/3)
• http://tools.oesf.biz/android-
4.2.0_r1.0/xref/packages/apps/Settings/src/com/and
roid/settings/DeviceInfoSettings.java
mDevHitCountdown が 0 になると、Preference に保存
} else if (preference.getKey().equals(KEY_BUILD_NUMBER)) {
if (mDevHitCountdown > 0) {
mDevHitCountdown--;
if (mDevHitCountdown == 0) {
getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
Context.MODE_PRIVATE).edit().putBoolean(
DevelopmentSettings.PREF_SHOW, true).apply();
設定アプリのソースコード調査(3/3)
• Preference に利用されている定数調査
– DevelopmentSettings.PREF_FILE
– DevelopmentSettings.PREF_SHOW
• http://tools.oesf.biz/android-
4.2.0_r1.0/xref/packages/apps/Settings/src/co
m/android/settings/DevelopmentSettings.java
public static final String PREF_FILE = "development";
public static final String PREF_SHOW = "show";
設定アプリのPreference
• /data/data/com.android.settings/shared_pref
s/development.xml
<!--?xml version='1.0' encoding='utf-8' standalone='yes' ?-->
<map>
<boolean name="show" value="true">
</boolean></map>
要 root
設定アプリのPreferenceから削除
C:¥>adb shell
shell@android:/ $ su
su
root@android:/ # cd /data/data/com.android.settings/shared_prefs
cd /data/data/com.android.settings/shared_prefs
root@android:/data/data/com.android.settings/shared_prefs # cat
development.xml
<!--?xml version='1.0' encoding='utf-8' standalone='yes' ?-->
<map>
<boolean name="show" value="true">
</boolean></map>
root@android:/data/data/com.android.settings/shared_prefs # rm
development.xml
要 root
GGRKS
既出・・・
スマートな?削除方法
不要 root
設定アプリの他の設定を削除することなく、
「開発者向けオプション」だけを削除する方法(要root)
題目変更
/data/data/com.android.settings/shared_prefs/
development.xml
<!--?xml version='1.0' encoding='utf-8' standalone='yes' ?-->
<map>
<boolean name="show" value="true">
</boolean></map>
“false” やこの項目だけを削除 要 root
ご清聴ありがとうござました

20140312 potatotips no5