zoukankan      html  css  js  c++  java
  • 转载:回编译APK出错:java.nio.char set.MalformedInputException: Input length = 1

    使用APKtool回编译APK,出现错误如下:
        Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.nio.char
        set.MalformedInputException: Input length = 1
            at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:200)
            at org.yaml.snakeyaml.reader.StreamReader.(StreamReader.java:60)
            at org.yaml.snakeyaml.Yaml.load(Yaml.java:412)
            at brut.androlib.Androlib.readMetaFile(Androlib.java:162)
            at brut.androlib.Androlib.build(Androlib.java:183)
            at brut.androlib.Androlib.build(Androlib.java:176)
            at brut.apktool.Main.cmdBuild(Main.java:218)
            at brut.apktool.Main.main(Main.java:74)
       Caused by: java.nio.charset.MalformedInputException: Input length = 1
            at java.nio.charset.CoderResult.throwException(CoderResult.java:277)
            at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:338)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
            at java.io.InputStreamReader.read(InputStreamReader.java:184)
            at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:123)
            at java.io.Reader.read(Reader.java:140)
            at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:184)
            ... 7 more
         网上查了查没有相关的解决方法,倒是有一位对MalformedInputException这个错误本身进行了解释,大致就是中文转换这块出了问题,好像是“半个汉字”的问题。
         软件里中文还不少,因为smali文件已经成功的转为dex文件了,所以怀疑在xml文件中有问题。大致看了一遍感觉没用啥问题,而且xml文件有问题的话应该会报一个详细错误指出是哪个文件出错了。这样就很迷茫了,程序文件没有错误,那错误是怎么来的?
         这时突然看到apktool.yml这个文件,这是反编译apk时新建的文件,删掉这个文件就无法回编译,说明回编译时是用到了这个文件。内容很简单,其中有一个apkFileName: ************.apk,这里文件名是原apk的文件名,是中文的。感觉眼前一亮,会不会是这里出问题了。于是把文件名改成英文,又把整个文件夹也改成英文,回编译成功!
         后来又经过试验发现,不需要更改文件夹名字,只要把apkFileName: ************.apk这里更改就可以了,回编译后apk的名字跟文件夹名字是一样的,也就是说这个apkFileName: ************.apk好像没有什么用处!!

  • 相关阅读:
    使用ML.NET预测纽约出租车费
    .NET Core玩转机器学习
    使用SonarCloud对.NET Core项目进行静态代码分析
    用分布式缓存提升ASP.NET Core性能
    确保线程安全下使用Queue的Enqueue和Dequeue
    这个拖后腿的“in”
    站在巨人肩上的.NET Core 2.1
    4,xpath获取数据
    3-Requests网络请求
    2,urllib库-网络请求
  • 原文地址:https://www.cnblogs.com/dtest/p/4428448.html
Copyright © 2011-2022 走看看