首页 > 其他分享 >Unity-Firebase Crashlytics安卓上传符号表

Unity-Firebase Crashlytics安卓上传符号表

时间:2022-10-30 12:23:11浏览次数:94  
标签:符号表 Crashlytics 安卓 editorSymbolsPath apkProjSymbolsPath Unity so 上传

最近项目线上突然多了不少崩溃记录,但是看不到崩溃的具体方法。
简单写下过程,很多都是文档有的,就不抄一遍了。毕竟这都是接好就忘的东西。
ios 没啥问题,就不记录了。

什么是符号表

符号表是内存地址与函数名、文件名、行号的映射表。有了符号表,才能根据程序堆栈看出方法调用过程。
格式:<起始地址> <结束地址> <函数> [<文件名:行号>]

Unity 安卓工程的符号表在哪里

有三种符号文件:libmain,libunity,libil2cpp

不同的打包方式和代码裁剪设置,获取符号文件的方式不一样。
我们打包是导出安卓工程,不裁剪代码。所以从编辑器安装目录 /PlaybackEngines/AndroidPlayer/Variations/<scripting backend="">//Symbols 拿到 libmain 和 libunity,从导出工程的 unityLibrary/symbols 拿到 libil2cpp。
Unity Manual : Android symbols
Firebase 上无 NDK 符号表的解决

上传符号表到 Firebase

两种方法。

  • 通过 gradle 上传
    但是不知为何,libil2cpp 始终无法解析成功,符号文件的 uuid 应该是正确的,因为用第二种方法上传后,就可以解析。
    Firebase 文档:获取 Android NDK 崩溃报告

  • 通过 firebase cli 命令上传,最后用这个方法才能解析 il2cpp.so。FIREBASE_APP_ID 在 Firebase Crashlytics 控制台拿,符号文件需要自己符号表收集一个文件夹中,然后指定上传这个文件夹。

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS

为非 Gradle 构建或不可访问的未剥离本机库上传符号

如何触发 Unity Crash

Unity 提供了方法,有好几种类型,但这种是我验证过可以触发后台记录的。

UnityEngine.Diagnostics.Utils.ForceCrash(UnityEngine.Diagnostics.ForcedCrashCategory.AccessViolation);

Unity异常处理与分析
用addr2line手动解析函数地址 Symbolicate Android crash

部分参考代码

apkProjectPath = '安卓导出工程路径'
editorPath = 'Unity 编辑器路径'
editorSymbolsPath = editorPath + "/../../../PlaybackEngines/AndroidPlayer/Variations/il2cpp/Release/Symbols"

if 测试包:
    editorSymbolsPath = editorSymbolsPath.replace("/Release/Symbols", "/Development/Symbols")

apkProjSymbolsPath = apkProjectPath + "/unityLibrary/symbols"

FileUtil.copyfile(
    editorSymbolsPath + "/arm64-v8a/libmain.sym.so",
    apkProjSymbolsPath + "/arm64-v8a/libmain.so")

FileUtil.copyfile(
    editorSymbolsPath + "/arm64-v8a/libunity.sym.so",
    apkProjSymbolsPath + "/arm64-v8a/libunity.so")

FileUtil.copyfile(
    editorSymbolsPath + "/armeabi-v7a/libmain.sym.so",
    apkProjSymbolsPath + "/armeabi-v7a/libmain.so")

FileUtil.copyfile(
    editorSymbolsPath + "/armeabi-v7a/libunity.sym.so",
    apkProjSymbolsPath + "/armeabi-v7a/libunity.so")

# 用这个方法,il2cpp 解析不了,不知为何
# cmddSYM = "./gradlew app:uploadCrashlyticsSymbolFileGoogleRelease"

firebaseAppId = "firebase 应用 id"

cmddSYM = "firebase crashlytics:symbols:upload --app=%s %s"% (firebaseAppId, apkProjSymbolsPath)

执行命令 cmddSym

标签:符号表,Crashlytics,安卓,editorSymbolsPath,apkProjSymbolsPath,Unity,so,上传
From: https://www.cnblogs.com/nickcan/p/16840953.html

相关文章

  • 安卓开发 第一个安卓开发程序
        1.manifestsxml清单文件2.java 源代码3.res资源文件1.图片2.布局文件3.图片文件4.一些字符串等资源都在里面  ......
  • 安卓逆向 IDA 静态调试分析
    1.找到我们分析的接口  2.F5进入C伪代码修正一下参数,IDA无法正常识别jstring__fastcallJava_com_example_sfs_MainActivity_getText(JNIEnv*a1){return(*......
  • 网狐荣耀手机端安卓屏幕常亮的修改
    代码已提交:https://pan.baidu.com/s/1kKR-vieIzkagcjmYcG75KQ提取码:4dxt默认的源码里,安卓手机进游戏后一段时间没有操作,屏幕会自动调低亮度或者熄灭,这个也是要改两个文件......
  • 安卓之按钮状态的保存
    1:首先定义全局变量。作为按钮状态的一个保存//rawData是否上传的全局状态publicstaticbooleanrawDataStatus=false;2:点击按钮时,在onClick方法中·实现按钮点击的开关......
  • 安卓广播常用代码介绍1——广播的介绍
    首先声明一下,水平有限,说明错误,请多多指正,谢谢。广播作用接受或者发出广播,可以使应用程序得到自己关心的广播内容(如系统的开关机,WiFi开关机,或者其他应用程序的广播内容),或者发......
  • 安卓布局常用代码介绍6——线性布局使用代码例子
    效果如下:设置思路:先利用线性布局先垂直排列第一行插入一个线性布局:水平排列,用比例排列;第二行插入一个线性布局:垂直排列,用weight=1垂直;中间这个线性布局就各种微调......
  • 安卓布局常用代码介绍5——使用布局的个人经验
    水平较差,仅供参考,欢迎指正一、距离单位使用的经验1.不要使用px;(因为总是冒黄色警告,手动滑稽);2.设置控件大小,距离时,使用pd单位;3.设置字体大小时,使用sp单位;二、使用布局的......
  • 安卓Material Desigh常用代码介绍1——MD的介绍。
    首先说明一点,这博客属于笔记的一种,所以缘由介绍什么的都省略了。前期就主要写写代码。想到啥写啥。深入的问题,等水平提高之后再说。对于MD,按照我的理解不完全分类可分为七部......
  • 安卓布局常用代码介绍1——相对布局篇
    安卓常用布局有五个,框架布局FrameLayout(也称帧布局)相对布局RelativeLayout绝对布局AbsoluteLayout线性布局LinearLayout表格布局TableLayout这五个布局在View......
  • 反编译安卓aar文件
    下载地址:https://varaneckas.com/jad/下载最新的符合自己系统的文件,解压之后包含jad.exe和Readme.txt文件将要反编译的aar包改成zip然后解压一下,再将解压后里面的classes......