2013-08-18 51 views
0

因为我正在创建自定义ROM,我想从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 

回答

0

你可以在以下链接详细教程:

Decompile and Recompile

+0

感谢您的联系我得到它的工作。我添加了Settings.apk中的smali文件,但我对smali没有任何理解。我在我的问题中发布了我的新smali代码。如果我能提高效率,你可以看看吗? – Cilenco

相关问题