这个实际已经有人写过了。我只是将我的操作过程记录下来,也方便他人碰到问题时不知道如何处理。
http://blog.csdn.net/evilcode/archive/2010/12/16/6079756.aspx
基本上按上此文件操作就可以了。需要说明的是,smali和baksmali请从此处下载最新版吧。
http://code.google.com/p/smali/downloads/list
否则会以下错:
分解odex时出错:
C:\Program Files (x86)\Java\jre6\bin>java -jar baksmali-1.2.2.jar -x NewsReader.odex
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: bad magic value: 64 65 79 0a 30 33 36 00
at org.jf.dexlib.DexFile.<init>(DexFile.java:382)
at org.jf.baksmali.main.main(main.java:249)
另外,分析odex时,请将手机ROM中的framework中的文件全复制出来,将要分解的文件放置到同一目录,这样可以避免如下错误:
Error occured while loading boot class path files. Aborting.
org.jf.dexlib.Util.ExceptionWithContext: Cannot locate boot class path file core.odex
at org.jf.dexlib.Code.Analysis.ClassPath.loadBootClassPath(ClassPath.java:237)
at org.jf.dexlib.Code.Analysis.ClassPath.initClassPath(ClassPath.java:145)
at org.jf.dexlib.Code.Analysis.ClassPath.InitializeClassPathFromOdex(ClassPath.java:110)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:96)
at org.jf.baksmali.main.main(main.java:278)
分析完成后就是打包成dex了,这个教程中有说的。
接下来就是将dex放入apk文件中,最后,别忘了签名。
OK,的geniewidget.apk就这样成功了,也可以用了。