Перекомпилировать системное приложение

Поскольку я создаю собственное ПЗУ, я хочу удалить некоторые записи из файла 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 ответ

Решение

Вы можете найти подробное руководство по следующей ссылке:

Декомпилировать и перекомпилировать

Другие вопросы по тегам