首先直接说原因: 因为linux 下的PATH变量错误导致的
需求:让运营打包时修改应用名,比如wifi管家改为天天wifi管家
做法: 修改res/values/strings.xml的app_name字段。
问题过程 :很愉快的用shell替换了
sed "s/<string name=\"app_name\">.*<\/string>/<string name=\"app_name\">${new_app_name}<\/string>/" $DECODE_PATH/res/values/strings.xml > /data/package/strings.xml
但是apktool 编译回来的时候就报错了
Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 16, -F, /tmp/APKTOOL4305046551350833283.tmp, -0, arsc, -I, /usr/local/app/apktool/framework/1.apk, -S, /data/package/public_tools/apktool/tencentwifimanager_1.1.0.20001_android_20160217202532-reunion-release_wifi_999002/res, -M, /data/package/public_tools/apktool/tencentwifimanager_1.1.0.20001_android_20160217202532-reunion-release_wifi_999002/AndroidManifest.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)
... 5 more
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 16, -F, /tmp/APKTOOL4305046551350833283.tmp, -0, arsc, -I, /usr/local/app/apktool/framework/1.apk, -S, /data/package/public_tools/apktool/tencentwifimanager_1.1.0.20001_android_20160217202532-reunion-release_wifi_999002/res, -M, /data/package/public_tools/apktool/tencentwifimanager_1.1.0.20001_android_20160217202532-reunion-release_wifi_999002/AndroidManifest.xml]
at brut.util.OS.exec(OS.java:93)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)
... 6 more
Caused by: java.io.IOException: Cannot run program "aapt": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)
at brut.util.OS.exec(OS.java:84)
... 7 more
Caused by: java.io.IOException: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
at java.lang.ProcessImpl.start(ProcessImpl.java:65)
at java.lang
不应该啊 我只是apktool d的时候 把-r资源文件去掉了,改了下资源文件而已啊。
尝试解决
1 不改资源文件 打包还是报错
2 加回-r 一切正常。
问题的焦点其中在了-r上面了。但这个是必须要的,不然得不到要修改的文件。
3 根据报错google一下 得到的解决方法一个是
# yum install -y compat-libstdc++-296.i686
# yum install -y compat-libstdc++-33.i686
让运维执行了 没有解决
4 网上看到另外解决方案 从Android Studio复制aapt 替换apktool 的。感觉麻烦没做
5 使用另外一个版本的apktool,还是没有解决。
不过方法4和5给了我灵感。 aapt的对不对其实是由什么决定的呢。有path变量啊。果断看一下path变量,居然aapt的路径和apktool路径的版本是对不上的。坑啊。
解决:改下path变量就解决了
分享到:
相关推荐
apk解包命令:apktool.bat d -s xxxx.apk apk打包命令:apktool.bat b xxx文件夹名称 apk保存在xxx 文件夹的dist文件内 apk包需要重新签名
android apk反编译与重编译工具
apk打包与解包功能, 学习apk的破解/修改和重新打包的利器.
APK反编译dex2jar-apktool打包下载
这里面包含apktool可以将反编译的文件打包成apk文件,同时也包含一个数字签名文件,使打包的程序能够安装在设备上!
编译反编译解包打包调试工具,适合用于对apk包的理解和学习
ApkIDE编辑必备,解包不成功可替换apktool解决无法开包打包问题!
修复apktool重打包时APK由于AndroidResGuard处理报错问题: 具体报错信息 No resource identifier found for attribute 'layout' in package 'com.tencent.mm' No resource identifier found for attribute 'key' in...
该文件为apk文件解包打包工具。将所需解包xxx.apk文件复制到压缩包解压后apktool.bat所在目录,打开cmd.exe定位到该目录,输入“apktool d xxx.apk”...输入“apktool b xxx“,打包后文件在xxx文件夹中dist文件夹中。
android重打包工具
apktool 。
apk签名工具apktool,使用APKSign.exe这个来进行apk签名
apktool2.4.1版本jar,在官网拖下来太慢了,因此找了个给大家下载,这个是当前最新版本2.4.1,解包出现问题就更新一下apktool,一般问题得以解决。
文件解压缩,把需要转换的apk放入到文件夹中,输入命令:apktool d test.apk 即可得到smali文件
apk解压打包工具,apktool最新版2.8
安装步骤如下: ...4.点击开始菜单,运行,输入CMD回车,用cd命令转到刚刚解压apktool-install-windows所在的文件夹,输入apktool,出现一些命令说明即成功安装。 使用:apktool d XXX.apk 反编译XXX.apk
apktool文件包(回编译用)含签名必须文件com.htc.resources.apk和framework-res.apk
apk打包,解包,反编译,签名, 图形化界面,不用敲命令,方便实用
最新版的apktool,版本号是2.0.0b9,用新版的apktool打包的软件,用老版本解包会提示错误
apktool 常用于反编译 Android 中的资源文件 , 主要是 获取 AndroidManifest.xml , res 目录下的图片 , 布局 , style 风格配置 , 等 资源文件 ;