[Unity] 安卓符号Android symbols

英文原文:https://docs.unity3d.com/Manual/android-symbols.html

  为了帮助您调试应用程序,Unity 可以生成一个包,其中包含原生 Unity 库的符号文件。符号文件包含一个表,该表将活动内存地址转换为您可以使用的信息,例如方法名称。翻译过程称为符号化。您可以将符号包上传到 Google Play 控制台,以在 Android Vitals 仪表板上查看人类可读的堆栈跟踪。

有两种类型的符号文件:

  • Public:包含符号表的小文件。有关详细信息,请参阅公共符号。
  • Debug:包含公共符号文件包含的所有内容,以及可用于更深入调试的完整调试信息。有关详细信息,请参阅调试符号。

您可以为以下库生成符号文件:

  • libmain:负责初始化 Unity 引擎加载逻辑。
  • libunity:Unity 的引擎代码。
  • libil2cpp:包含 C# 脚本从项目转换为 C++ 代码。

Unity生成 libmain 和 libunity 符号文件。Gradle生成 libil2cpp 符号文件。


公共符号(Public symbols)

  公共符号文件包含将函数地址解析为人类可读字符串的信息。 Unity 使用 --strip-debug 参数创建删除更深入调试信息的公共符号。这使得公共符号文件和包比调试符号文件和包更小。

调试符号(Debugging symbols)

  调试符号文件包含完整的调试信息和符号表。用它来:

  • 解决堆栈跟踪并调试您有可用源代码的应用程序。
  • 将本机调试器附加到应用程序并调试代码。

  Unity 使用 --only-keep-debug 参数来创建调试符号。有关详细信息,请参阅 Linux 用户手册中的 –only-keep-debug。

注意:如果调试符号不可用,Unity 在构建时会在您的项目中放置一个公共符号文件。对于 libmain 和 libunity 库,调试符号不可用,Unity 始终生成公共符号文件。


生成符号包

  有两种方法可以为您的应用程序启用符号包生成:

  • 在构建设置窗口中:
  • 打开构建设置窗口(菜单:文件 > 构建设置)。
  • 选择安卓平台。
  • 将 Create symbols.zip 设置为以下之一:
    • Public
    • Debugging
  • 使用 EditorUserBuildSettings.androidCreateSymbols API。

  启用符号包生成后,构建项目会生成一个 .zip 文件,其中包含 libmain 和 libunity 库的符号文件。如果您设置scripting backend到 IL2CPP,.zip 还包含 libil2cpp 库的符号文件。 Unity 将此符号包放在输出目录中。

  如果您在 Android 构建设置中启用导出项目,Unity 不会构建项目。相反,它为 Android Studio 导出项目,为 libmain 和 libunity 生成符号,并将它们放在输出目录中的 unityLibrary/symbols/< architecture >/ 中。当您从 Android Studio 构建导出的项目时,Gradle 会生成 libil2cpp 符号文件并将其放置在 unityLibrary/symbols/< architecture >/ 目录中,与 libmain 和 libunity 符号文件并排。

在 Google Play 控制台中使用符号

  将应用程序上传到 Google Play 后,您可以为其上传公共符号包。有关如何执行此操作的信息,请参阅 Google 的文档:Deobfuscate or symbolicate crash stack traces。

注意:Google Play 不会符号化您的应用程序在您上传符号包之前收到的崩溃。

你可能感兴趣的:(Unity,Unity,符号表)