2013-08-18 3 views
0

Поскольку я создаю пользовательский ПЗУ, я хочу удалить некоторые записи из settings.apk. Потому что нет способа скрыть предпочтение с XML. Мне нужно изменить исходный код из apk и удалить предпочтение от PreferenceScreen. Так что я декомпилировал classes.dex с dex2jar копируется исходный код и добавьте следующую строку:Приложение для перекомпиляции системы

getPreferenceScreen().removePreference(findPreference("toggle_wifi")); 

Теперь моя проблема заключается в том, что я не знаю, как перекомпилировать приложение. Я не могу скомпилировать его с Eclipse, потому что он использует некоторые системные пространства имен (в Eclipse это ошибка, поэтому я не могу скомпилировать). Как перекомпилировать приложение? У меня есть только файлы * .java.

EDIT: 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 

ответ

0

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

Decompile and Recompile

+0

Спасибо за ссылку I заработал. Я добавил файл smali из Settings.apk, но у меня нет понимания в smali. Я отправил свой новый smali-код в свой вопрос. Можете ли вы взглянуть на него, если я могу сделать его более эффективным? – Cilenco