apktool 解包和打包问题

使用Android Studio 2.2开发的APK,在用apktool 2.0.1解包后再打包出现资源未找到错误。更换为apktool 2.2.1后,出现新的AndrolibException。解决方法包括更新apktool版本,删除旧框架apk,并且提到解包后可能出现application找不到的问题及unknown文件夹。

用Android Studio 2.2 开发程序,目标SDK为25,然后用apktool 2.0.1解包,再打包上发现出错,提示各种 


 error: Error: No resource found that matches the given name:

还有类似这种错误:Error retrieving parent for item: No resource found that matches the given name '@*android:style/Theme.Holo.Light.DarkActionBar'.


后来估计是API版本的问题,换用了2.2.1的apktool,发现没有上述错误,但是出现了下面的错误

Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException:


后来发现是框架apk不符合的原因,删除了C:\\users\apktool\1.apk,再解包时系统会使用新版的框架应用


但是最后还有个问题,打包上的应用结构上会有问题,而且apktool 2.2.1解包时会出现unknown 文件夹,再修改dex时会出现application找不到的情况

使用Apktool解包重新打包APK以修改联网功能,可按以下步骤操作: #### 解包APK 使用Apktool的`d`命令对APK文件进行解包。例如,若要解包名为`example.apk`的文件,可在命令行中执行如下命令: ```bash apktool d example.apk -o example_folder ``` 此命令会将`example.apk`解包到`example_folder`目录下,解包后能得到APK的Smali代码、资源文件等。 #### 修改联网相关代码 在解包后的文件中,找到与联网功能相关的Smali文件。通常,这些文件可能包含网络请求的URL、请求参数等信息。例如,若使用OkHttp库进行网络请求,可在Smali文件中查找包含`okhttp`关键字的代码段。找到相关代码后,根据需求进行修改,如修改网络请求的URL为目标URL。 #### 修改联网权限 在解包后的目录中找到`AndroidManifest.xml`文件,使用文本编辑器打开该文件。在`<manifest>`标签内添加或修改联网相关的权限声明。例如,添加网络访问权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> ``` 若还需要访问网络状态的权限,可添加: ```xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ``` #### 重新打包APK 修改完成后,使用Apktool的`b`命令重新打包APK。在命令行中执行如下命令: ```bash apktool b example_folder -o new_example.apk ``` 此命令会将`example_folder`目录下的文件重新打包成名为`new_example.apk`的APK文件。 #### 签名APK 重新打包后的APK文件需要进行签名才能在Android设备上安装运行。可使用`jarsigner`工具进行签名。例如,使用已有的密钥库`mykey.keystore`对`new_example.apk`进行签名: ```bash jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykey.keystore new_example.apk myalias ``` 其中,`myalias`是密钥库中的别名。 #### 注意事项 若在使用Apktool过程中遇到编译报错,如“NO RESOURCE IDENTIFIER FOUND FOR ATTRIBUTE”,可去ApkTool官网(https://ibotpeaches.github.io/Apktool/)下载最新版本的ApkTool,添加后设为默认 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值