apktool重打包失败,出现WARNING: Error opening archive C:\Users\user\AppData\Local\apktool\framework\1.apk

一、报错描述

废话不多说,先上报错信息:

I: Copying unknown files...
I: Copying original files.
ED: \Android\apk>apktool b reverse/ shucainali
I: Using Apktool 2.8.1
T: Checking whether sources has changed.
I: Smaling smali folder into classes. dex.
I: Checking whether resources has changed. .
Building resources.
10-07 11:08:39. 29117520 1604 W ziparchive: Unable to open ’ C: \Users\◆❷❸\AppData\Local 
\apktool \framework\1. apk' : Illegal byte sequence 
W: 10-07 11:08:39.292 17520 1604 W zipro 
Error opening archive C: \Users\❷❷❷\AppData\L 
ocal \apktool \framework\1. apk: I/0 error
W: 10-07 11:08:39.303 17520 1604 W ResourceType: No known package when getting value for res
ource number 0x01010000
V: 10-07 11:08:39. 303 17520 1604 W ResourceType: Invalid package identifier when getting bag 
for resource number 0x0101 0000
V: 10-07 11:08:39. 304 17520 1604 W thread 
WARNING: bad result from unlocking mutex
W: D: \Android\apk \reverse \shucainali \AndroidManifest. xml:1: error: No resource identifier fou
nd for attribute’ compileSdkVersion in package’ android'

图片上面的问题总结一下为“apk反编译后重打包失败”。通过上网搜索,向老师请教,确定报错原因为:“使用了中文用户名,导致框架资源无法被搜索到”。

我按照正常步骤进行如下:

1、首先在下载完apktool.jar和apktool.bat,部署完环境变量之后,来到存放apk文件的目录(我的是D:\Android\apk\),对其进行解压:(参考安装工具文章一工具教程文章一

1)解包文件:执行命令{apktool d shucainalipao.apk -o D:\Android\apk\reverse\shucai}

2)修改文件:这个时候还可以对文件进行修改,找到.smail文件,进行修改。不过需要熟悉技术,这里不做展示,tcl。

3)重打包:还是在存放apk文件目录下,执行命令:

命令一:apktool b reverse/shucai

命令二:apktool b D:\Android\apk\reverse\shucai -o D:\Android\apk\reverse\shucai\dist\shucai.apk

按照预期目的,会在reverse/shucai/dist目录下生成shucainalipao.apk文件。然鹅执行之后,只生成了reverse/shucai/build目录下的dex文件,这是为啥子?下面我们开始解决问题。

二、解决过程

1、首先,我们在解包文件这一步,执行命令:

apktool d shucainalipao.apk -o D:\Android\apk\reverse\shucai -p D:\Android\apktools\framework

d后面参数表明要解压的apk文件位置;

-o后面参数为解压后的目录,不能是已经存在的,需要写一个新的,如果不写的话,默认在当前目录下再创建一个与apk文件名同名(shucainalipao)的文件夹;

-p是指定加载framework的目录。当然也可以把原来在你中文用户目录下的那个1.apk复制过来,复制到指定文件夹(我这里是D:\Android\apktools\framework,自己新建的,便于管理)

2、然后在重打包这一步,之后本来还是直接执行{apktool b reverse/shucai}这个命令,然后出现报错:brut.androlib.exceptions.AndrolibException: --frame-path is set to a file, not a directory.意识到应该用这个命令执行一下调用框架资源的目录,并且它不是一个文件,而是一个目录。

修改后的执行命令:

apktool b reverse/shucai --frame-path D:\Android\apktools\framework

最终成功啦!在reverse/shucai->dist目录下自动生成shucainalipao.apk文件

三、总结

其实就是framework在含有中文目录的文件夹下,而又因为是默认加载这个路径,却由于乱码问题不能被加载到。我们给它重新指定一个(注意路径中不能有中文),就阔以重打包啦!

参考文章:

解决文章一(隐隐指出是没有指定框架资源的路线,来避免apktool使用默认路径)

解决文章二(指明在反编译时用-p指定了反编译生成的framework,在重打包时就不需要了)

文章四​​​​​​官方文档,可我看不出一个所以然,希望对你有收获

拓展文章一(指出了在Manifest.xml文件中需要删除那些报错属性,但是我并没有这样做)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值