通过反编译SystemUIapk达到美化电量实时显示.docx
《通过反编译SystemUIapk达到美化电量实时显示.docx》由会员分享,可在线阅读,更多相关《通过反编译SystemUIapk达到美化电量实时显示.docx(16页珍藏版)》请在冰豆网上搜索。
通过反编译SystemUIapk达到美化电量实时显示
题外话:
前几天学习了单刷包的制作教程,折腾了2天,终于学会了单刷包制作,然后就想美化通知栏电量的实时显示,又折腾了一天,毫无收获,我其实是想修改SystemUI.apk里面的stat_sys_battery.xml文件和电量显示图片文件,但是老是反编译SystemUI.apk后全是smali类型的文件,最后了解是我的java环境没弄好,只装了jdk,却没有装adb和androidsdk。
所以反编译不成功,然后我把adb和androidsdk装好,配置好环境变量,再次反编译SystemUI.apk,就成功了。
下图就是反编译SystemUI.apk不成功的样本,全是smali文件:
最终效果
没修改之前的效果:
本人手机亲测美化电量后,实时电量显示效果:
言归正传,我就说一下这几天我美化电量的心得:
我之前看了论坛关于美化电量的教程,好多都说美化电量是在framework_res.apk中修改,达到美化电量的效果,但是经过我的实践发现,华为d1四核的通知栏电量的美化修改应该在SystemUI.apk(该文件的路径:
/system/app/SystemUI.apk,在手机中用re管理器可以看得到)中,而没有在framework_res.apk中,所以我们就反编译SystemUI.apk再修改后编译回来替换就可以了
反编译SystemUI.apk之前,必须配置好java环境,当然你如果之前就已经配置好java环境,不需再配置
ps:
如果java环境没配置好,去反编译SystemUI.apk就会出现编译后全是smali类型文件,就会跟最上面那张图一样。
下面引用xda论坛中别人的帖子,该帖子明确的讲解了在windows中怎样配置java环境,该帖子作者:
Setsuna_F_Seiei(表示感谢)
(1)JDK的安装及环境变量的配置
1.去Oracle官方网站下载并安装JDK,下载地址:
注意是下载JDK,而不是JRE
JDK(JavaDevelopmentKit,Java开发工具包) JRE(JavaRuntimeEnvironment,Java运行环境) 你也可以点击以下链接直接下载JDK:
32位:
...32-windows-i586.exe
64位:
...u32-windows-x64.exe
2.配置环境变量 下载并安装JDK之后,你需要在计算机的“系统属性”里配置以下环境变量:
(步骤:
在计算机的桌面上右击“我的电脑”,点击“属性”-“高级”-“环境变量”) 变量名:
JAVA_HOME 变量值:
D:
\java\jdk1.6.0_32(JDK安装目录)
3.测试JDK是否安装成功 在计算机的“运行”(Win+R)里打开CMD
输入java–version命令,如果出现以下提示,表示JDK安装成功!
C:
\DocumentsandSettings\Administrator>java-version
javaversion"1.6.0_20"
Java(TM)SERuntimeEnvironment(build1.6.0_20-b02)
JavaHotSpot(TM)ClientVM(build16.3-b01,mixedmode)
(2)ADB的安装及环境变量的配置 1.首先要去Google官方下载AndroidSDK,
下载地址是:
你也可以点击以下链接直接下载AndroidSDK:
2.下载并安装AndroidSDK之后,打开SDKManager,勾选Packages下面的Tools,只需要下载AndroidSDKTools和AndroidSDKPlatform-tools,大小为78MB,其他的不用下载。
3.设置AndroidSDK环境变量 1)新建环境变量 (步骤:
在计算机的桌面上右击“我的电脑”,点击“属性”-“高级”-“环境变量”)
变量名:
ANDROID_SDK_HOME 变量值:
D:
\Android\android-sdk (SDK安装目录)
2)添加Path路径 (一般来讲系统上默认都会有Path变量,我们只需要找到并编辑即可,直接在变量值后面添加以下变量值;如果不存在Path变量,那就新建一个吧)
变量名:
Path
变量值:
;%ANDROID_SDK_HOME%\tools;%ANDROID_SDK_HOME%\platform-tools(注意前面的分号)
4.测试AndroidSDK和ADB是否安装成功
在计算机的“运行”(Win+R)里打开CMD,输入adb命令,如果出现以下提示,表示AndroidSDK和ADB安装成功!
好了,java环境已经全部配置好了。
到此处,引用别人帖子结束。
继续往下走
然后可以反编译SystemUI.apk了,编译后文件夹的样子如下图:
我们要修改的地方有两处:
1.drawable文件下的stat_sys_battery.xml文件(该文件路径res\drawable文件下)
2.在文件夹res\drawable-hdpi中有关电量显示的图片
ps:
在这,我们不修改充电时电量图标,只修改待机时放电的电量实时显示
在stat_sys_battery.xml代码中,我们看到电量放电显示是跳跃性的。
我们要的是实时显示所剩的电量(也就是让他显示连续性),所以把它改为如下内容
xmlversion="1.0"encoding="utf-8"?
>
xmlns:
android="
drawable="@drawable/stat_sys_battery_0"android:
maxLevel="0"/>
drawable="@drawable/stat_sys_battery_1"android:
maxLevel="1"/>
drawable="@drawable/stat_sys_battery_2"android:
maxLevel="2"/>
drawable="@drawable/stat_sys_battery_3"android:
maxLevel="3"/>
drawable="@drawable/stat_sys_battery_4"android:
maxLevel="4"/>
drawable="@drawable/stat_sys_battery_5"android:
maxLevel="5"/>
drawable="@drawable/stat_sys_battery_6"android:
maxLevel="6"/>
drawable="@drawable/stat_sys_battery_7"android:
maxLevel="7"/>
drawable="@drawable/stat_sys_battery_8"android:
maxLevel="8"/>
drawable="@drawable/stat_sys_battery_9"android:
maxLevel="9"/>
drawable="@drawable/stat_sys_battery_10"android:
maxLevel="10"/>
drawable="@drawable/stat_sys_battery_11"android:
maxLevel="11"/>
drawable="@drawable/stat_sys_battery_12"android:
maxLevel="12"/>
drawable="@drawable/stat_sys_battery_13"android:
maxLevel="13"/>
drawable="@drawable/stat_sys_battery_14"android:
maxLevel="14"/>
drawable="@drawable/stat_sys_battery_15"android:
maxLevel="15"/>
drawable="@drawable/stat_sys_battery_16"android:
maxLevel="16"/>
drawable="@drawable/stat_sys_battery_17"android:
maxLevel="17"/>
drawable="@drawable/stat_sys_battery_18"android:
maxLevel="18"/>
drawable="@drawable/stat_sys_battery_19"android:
maxLevel="19"/>
drawable="@drawable/stat_sys_battery_20"android:
maxLevel="20"/>
drawable="@drawable/stat_sys_battery_21"android:
maxLevel="21"/>
drawable="@drawable/stat_sys_battery_22"android:
maxLevel="22"/>
drawable="@drawable/stat_sys_battery_23"android:
maxLevel="23"/>
drawable="@drawable/stat_sys_battery_24"android:
maxLevel="24"/>
drawable="@drawable/stat_sys_battery_25"android:
maxLevel="25"/>
drawable="@drawable/stat_sys_battery_26"android:
maxLevel="26"/>
drawable="@drawable/stat_sys_battery_27"android:
maxLevel="27"/>
drawable="@drawable/stat_sys_battery_28"android:
maxLevel="28"/>
drawable="@drawable/stat_sys_battery_29"android:
maxLevel="29"/>
drawable="@drawable/stat_sys_battery_30"android:
maxLevel="30"/>
drawable="@drawable/stat_sys_battery_31"android:
maxLevel="31"/>
drawable="@drawable/stat_sys_battery_32"android:
maxLevel="32"/>
drawable="@drawable/stat_sys_battery_33"android:
maxLevel="33"/>
drawable="@drawable/stat_sys_battery_34"android:
maxLevel="34"/>
drawable="@drawable/stat_sys_battery_35"android:
maxLevel="35"/>
drawable="@drawable/stat_sys_battery_36"android:
maxLevel="36"/>
drawable="@drawable/stat_sys_battery_37"android:
maxLevel="37"/>
drawable="@drawable/stat_sys_battery_38"android:
maxLevel="38"/>
drawable="@drawable/stat_sys_battery_39"android:
maxLevel="39"/>
drawable="@drawable/stat_sys_battery_40"android:
maxLevel="40"/>
drawable="@drawable/stat_sys_battery_41"android:
maxLevel="41"/>
drawable="@drawable/stat_sys_battery_42"android:
maxLevel="42"/>
drawable="@drawable/stat_sys_battery_43"android:
maxLevel="43"/>
drawable="@drawable/stat_sys_battery_44"android:
maxLevel="44"/>
drawable="@drawable/stat_sys_battery_45"android:
maxLevel="45"/>
drawable="@drawable/stat_sys_battery_46"android:
maxLevel="46"/>
drawable="@drawable/stat_sys_battery_47"android:
maxLevel="47"/>
drawable="@drawable/stat_sys_battery_48"android:
maxLevel="48"/>
drawable="@drawable/stat_sys_battery_49"android:
maxLevel="49"/>
drawable="@drawable/stat_sys_battery_50"android:
maxLevel="50"/>
drawable="@drawable/stat_sys_battery_51"android:
maxLevel="51"/>
drawable="@drawable/stat_sys_battery_52"android:
maxLevel="52"/>
drawable="@drawable/stat_sys_battery_53"android:
maxLevel="53"/>
drawable="@drawable/stat_sys_battery_54"android:
maxLevel="54"/>
drawable="@drawable/stat_sys_battery_55"android:
maxLevel="55"/>
drawable="@drawable/stat_sys_battery_56"android:
maxLevel="56"/>
drawable="@drawable/stat_sys_battery_57"android:
maxLevel="57"/>
drawable="@drawable/stat_sys_battery_58"android:
maxLevel="58"/>
drawable="@drawable/stat_sys_battery_59"android:
maxLevel="59"/>
drawable="@drawable/stat_sys_battery_60"android:
maxLevel="60"/>
drawable="@drawable/stat_sys_battery_61"android:
maxLevel="61"/>
drawable="@drawable/stat_sys_battery_62"android:
maxLevel="62"/>
drawable="@drawable/stat_sys_battery_63"android:
maxLevel="63"/>
drawable="@drawable/stat_sys_battery_64"android:
maxLevel="64"/>
drawable="@drawable/stat_sys_battery_65"android:
maxLevel="65"/>
drawable="@drawable/stat_sys_battery_66"android:
maxLevel="66"/>
drawable="@drawable/stat_sys_battery_67"android:
maxLevel="67"/>
drawable="@drawable/stat_sys_battery_68"android:
maxLevel="68"/>
drawable="@drawable/stat_sys_battery_69"android:
maxLevel="69"/>
drawable="@drawable/stat_sys_battery_70"android:
maxLevel="70"/>
drawable="@drawable/stat_sys_battery_71"android:
maxLevel="71"/>
drawable="@drawable/stat_sys_battery_72"android:
maxLevel="72"/>
drawable="@drawable/stat_sys_battery_73"android:
maxLevel="73"/>
drawable="@drawable/stat_sys_battery_74"android:
maxLevel="74"/>
drawable="@drawable/stat_sys_battery_75"android:
maxLevel="75"/>
drawable="@drawable/stat_sys_battery_76"android:
maxLevel="76"/>
drawable="@drawable/stat_sys_battery_77"android:
maxLevel="77"/>
drawable="@drawable/stat_sys_battery_78"android:
maxLevel="78"/>
drawable="@drawable/stat_sys_battery_79"android:
maxLevel="79"/>
drawable="@drawable/stat_sys_battery_80"android:
maxLevel="80"/>
drawable="@drawable/stat_sys_battery_81"android:
maxLevel="81"/>
drawable