编译失败是操作过程中错误造成的。解决方式如下:
1、首先去官方网站点击下载可用的最新ApkTool。
2、在上一步的弹出窗口中点击截图红圈处的位置进行下载,由于是国外服务器点击后可能出现没反应情况,稍作等待即可。
3、下载完成后将文件放到新建的一个文件夹中,然后右键点击我的电脑选择-高级系统设置。
4、然后在高级选项中选择环境变量。
5、新建一个java环境的变量点击确定。
6、配置好java环境后在开始菜单中输入cmd,打开dos命令窗口。首先输入命令f,然后回车。
7、进入对应盘符后,在此输入命令cd apktool,然后回车进入保存ApkTooljar的文件夹中。
8、随便下载一个apk文件发到apktool所在的文件夹中,然后执行命令java -jar apktooljar d -f XXXXapk文件所在的路径。然后程序就会开始反编译。
9、反编译完成后会在该文件夹内生成一个和apk同名的文件夹,apk反编译完的内容即存在于该文件夹内。
JavaScript Document
function show(str)
{
var str1="td"+str;
var str="show"+str;
for (var i=1; i<18; i++)
{
var obj = documentgetElementById('show' + itoString());
if (obj) objstyledisplay = 'none';
}
documentgetElementById(str)styledisplay="block";
}
1、首先新建一个android项目,里面只有一个MainActivity,而且主界面只会显示一个字符串:你好。
2、下面,切换到这个项目生成的apk文件所在的目录,可以看到有一个hellodemoapk。
3、在命令行输入:apktool d -r hellodemoapk。可以看到在当前目录下生成了一个hellodemo文件夹。
4、进入到hellodemo\smali\com\example\hello,打开MainActivitysmali。找到:
const-string v1, "\u4f60\u597d",
修改为:
const-string v1, "hello",
5、然后在命令行输入:apktool b hellodemo hellodemo1apk。这回重新打包成hellodemo1apk。
6、然后给新生成的apk进行签名。把这个apk拷贝到autosign的目录下面,然后切换过去,在命令行输入:java -jar signapkjar testkeyx509pem testkeypk8 hellodemo1apk hellodemoapk。
7、把生成的hellodemoapk安装到手机,可以看到主界面上已经显示的是hello,而不再是你好。说明反编译重新打包成功!
使用apktool进行apk的反汇编时,没有出现问题(有问题的自行解决),
但是进行回汇编时出现:
F:\apktool>apktool b Hello Helloapk
Exception in thread "main" brutandrolibAndrolibException: brutdirectoryPathN
otExist: apktoolyml
at brutandrolibAndrolibreadMetaFile(Unknown Source)
at brutandrolibAndrolibbuild(Unknown Source)
at brutandrolibAndrolibbuild(Unknown Source)
at brutapktoolMaincmdBuild(Unknown Source)
at brutapktoolMainmain(Unknown Source)
Caused by: brutdirectoryPathNotExist: apktoolyml
at brutdirectoryAbstractDirectorygetFileInput(Unknown Source)
5 more
经验证是,反汇编时没有生成apktoolyml
进行反汇编时,改用命令apktool d -r xxapk xx便可以解决(加上了-r选项)
反编译后的java文件引用了你现在编译环境中没有的包,而这些包是原作者在开发的时候专用配置好的,所以你编译的时候 某些import就会报错了
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
欢迎分享,转载请注明来源:品搜搜测评网