Перекомпилировать системное приложение
Поскольку я создаю собственное ПЗУ, я хочу удалить некоторые записи из файла settings.apk Поскольку нет способа скрыть предпочтение с помощью XML, мне нужно изменить исходный код из apk и удалить предпочтение с PreferenceScreen. Поэтому я декомпилировал classes.dex
с помощью dex2jar скопировали исходный код и добавили следующую строку:
getPreferenceScreen().removePreference(findPreference("toggle_wifi"));
Теперь моя проблема в том, что я не знаю, как перекомпилировать приложение. Я не могу скомпилировать его с Eclipse, потому что он использует некоторые системные пространства имен (в Eclipse это ошибка, поэтому я не могу скомпилировать) Как я могу перекомпилировать приложение? У меня есть только файлы *.java.
РЕДАКТИРОВАТЬ: код smali, который я добавил в файлы smali:
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "toggle_wifi"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "wifi_settings"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "toggle_bluetooth"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
invoke-virtual {p0}, Lcom/android/settings/WirelessSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v12
const-string v13, "bt_settings"
invoke-virtual {p0, v13}, Lcom/android/settings/WirelessSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v13
invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
1 ответ
Вы можете найти подробное руководство по следующей ссылке: