Rover12421's Blog

The End.

让ApkTool支持中文路径

        一直听到同事在抱怨ApkTool不支持中文路径,但是我用一直没有遇到这个问题,估计是系统设置不一样,我一直是英文环境的系统,:)。既然我的可以,那么就是java环境的问题了,仔细看了下错误,都是回编译的时候字符支持问题。

  • unacceptable character #FFFD
  • at org.yaml.snakeyaml.Yaml.load

        看到yaml,突然想到一个文件“apktool.yml”,有一次反编译改了文件名他就编译不了,于是看了下文件编码是ANSI的,用文本编辑器打开保持为UTF-8的编码。再次会编译,居然正常回编译了。于是这个问题迎刃而解。
        解决办法我有三个:
  1. 使用apktools反编译的时候添加java参数: -Dfile.encoding=UTF-8
  2. 反编译后,修改反编译文件夹下的apktool.yml文件编码,修改为UTF-8编码格式
  3. 使用我编译的ApkTool工具:)这个我就不发布了,源码网上都有,我也没仔细研读,其中还指不定有啥错误呢。
        源码修改位置:

类文件:brut.androlib/Androlib.java
方法名:public void writeMetaFile(File mOutDir, Map<String, Object> meta)
修改:
FileWriter writer = null;
Writer writer = null;
writer = new FileWriter(new File(mOutDir, “apktool.yml”));
writer = new OutputStreamWriter(new FileOutputStream(new File(mOutDir, “apktool.yml”)),“UTF-8”);

Comments