【问题标题】:Proguard Mapping file: meaning of n:n (0:0 and 1:1)Proguard 映射文件:n:n 的含义(0:0 和 1:1)
【发布时间】:2019-06-03 13:21:57
【问题描述】:

我有一个 proguard 映射文件,其中包含以下内容:

   androidx.versionedparcelable.ParcelImpl -> androidx.versionedparcelable.ParcelImpl:
        androidx.versionedparcelable.VersionedParcelable mParcel -> a
        1:1:void androidx.versionedparcelable.VersionedParcelParcel.<init>(android.os.Parcel):0:0 -> <init>
        1:1:void <init>(android.os.Parcel):0 -> <init>
        2:2:java.lang.String androidx.versionedparcelable.VersionedParcelParcel.readString():0:0 -> <init>
...
        9:9:void androidx.versionedparcelable.VersionedParcel.writeVersionedParcelable(androidx.versionedparcelable.VersionedParcelable):0:0 -> writeToParcel
        9:9:void writeToParcel(android.os.Parcel,int):0 -> writeToParcel
        10:10:void androidx.versionedparcelable.VersionedParcel.writeToParcel(androidx.versionedparcelable.VersionedParcelable,androidx.versionedparcelable.VersionedParcel):0:0 -> writeToParcel
        10:10:void androidx.versionedparcelable.VersionedParcel.writeVersionedParcelable(androidx.versionedparcelable.VersionedParcelable):0 -> writeToParcel
        10:10:void writeToParcel(android.os.Parcel,int):0 -> writeToParcel

问题:

  1. 我找不到映射文件格式的文档。有吗?
  2. 1:1、2:2 等是什么意思?
  3. 最后几行似乎将该方法重命名为完全相同的名称。在某些情况下,它们甚至具有相同的签名。这怎么可能?
  4. 在函数名的末尾,在关闭 ) 之后,有时会有 :0:0 或 :0。这是什么意思?

【问题讨论】:

  • 我猜它是一个类键;方法后面的数字似乎与方法参数匹配,0 看起来对应的是Android内置类,没有被混淆。
  • 我不确定我是否理解:例如,“10:10”似乎与参数相关的任何内容都不匹配......我唯一理解的是所有 10:10或 9:9 方法使用相同的名称进行混淆。令人惊讶的映射文件格式似乎没有doc ...

标签: java android proguard


【解决方案1】:

没有解释 mapping.txt 的文档,但是如果你看到 mapping.txt 文件并将这些数字与你的源类文件进行了混淆,你会发现这些数字是源文件的行号

n:n 告诉 start:end 该方法的代码。

我可以通过比较我的映射文件与源文件来判断这一点。这些也可能是其他解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-14
    • 2020-02-12
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多