Skip to content

如何自己针对特定版本贴吧客户端apk制作javaproto目录下的文件 #3

@n0099

Description

@n0099
  1. 下载某个历史版本贴吧客户端 apk(豌豆荚 apkpure 欢迎补充)并置于path/to/apk

  2. 下载最新版本dex-tools然后解压并cd进解压路径

  3. 修改文件d2j_invoke.bat(win)/d2j-dex2jar.sh(*nix)中的-Xms512m -Xmx2048m-Xmx3g -Xmx4g(如果您有至少 4G 空闲内存,也可以使用2g, 3g但会更频繁触发 GC 导致使用更多 cpu)

    • *nix:
      sed -i -e 's/-Xms512m -Xmx2048m/-Xms3g -Xmx4g/' d2j{-dex2jar.sh,_invoke.bat}

    以避免途中发生java.lang.OutOfMemoryError: Java heap space OutOfMemoryError ThexXTURBOXx/dex2jar#13
    image
    至少需要设置 2G 左右的-Xmx,cpu 使用稳定单核,就像是在开大型 mcmod 整合包服务端
    还建议通过更改文件中使用的java路径以切换至graalvm

  4. 执行并等待数十分钟

    • win:
      .\d2j-dex2jar.bat "path\to\apk" -o "path\to\jar"
    • *nix:
      ./d2j-dex2jar.sh "path/to/apk" -o "path/to/jar"

    其中path/to/jar为您期望的输出 jar 文件路径

  5. 下载jd-cli https://search.maven.org/artifact/com.github.kwart.jd/jd-cli Missing binary release? intoolswetrust/jd-cli#62 (comment)

  6. 执行

    java -jar jd-cli-1.2.1.jar -p tbclient -ods classes "path/to/jar"

    路径classes/jar文件名/tbclient下便是 repo 的java目录下的所有.class文件

  7. 使用本 repo 提供的squareWireProtoBufJavaGeneratedClassesDecompiler.php将这些.class java 源码转换为.proto文件

    php squareWireProtoBufJavaGeneratedClassesDecompiler.php --in="classes/jar文件名/tbclient" --out=proto

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions