是否可以从第三方 .apk 中删除 AOT 程序集?

Is it possible to remove AOT assemblies from third-party .apk?

我有一个正在尝试优化的第三方 apk,因为开发人员不会为这些琐碎的事情烦恼。

该应用程序是使用 Xamarin 构建的并包含 AOT 程序集。有没有办法在不对项目进行完全逆向工程并重新构建的情况下将它们从 apk 中删除?

从 .apk 中删除 AOT 程序集就像删除它们并正确地重新签署包一样简单。

步骤如下:

  • 打开 .apk 压缩文件,删除 lib\<architecture>\libaot-*.so 个文件。
    Xamarin 应用包括 libmonodroid.solibmonosgen-2.0.so 即使没有 AOT 编译,也不要碰那些。
  • 从 .apk 的根目录中删除 META-INF。
  • 使用 JDK 中的 jarsigner 对生成的 .apk 进行签名。如果您没有原始密钥,任何一个都可以,您将失去自动更新应用程序的能力。
  • 不要忘记将 .apk 与 Android 构建工具中的 zipalign 对齐。

由此产生的更精简的应用程序安装和运行完美,但当然需要几秒钟的时间才能启动。