阅读背景:

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
一、报错描述

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

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文件中需要删除那些报错属性,但是我并没有这样做)

. 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
一、报错描述

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

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文件中需要删除那些报错属性,但是我并没有这样做)

. 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' I: Copying unknown files...



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: