安卓崩溃日志基础知识扫盲1

大部分游戏我们都会接入bugly,用来监控游戏的崩溃和异常,在bugly后台我们会看到以下崩溃信息:

# GLThread 1371(29457) SIGSEGV(SEGV_MAPERR)
 #00 pc 0000000000aa3f58 /data/app/~~6_tV_wy5KiC1VMeFQPNi2g==/com.yddm.haiwai.game-bHeiJjIVfYMTmPlQwANbrw==/split_config.arm64_v8a.apk
 #01 pc 0000000000aafb84 /data/app/~~6_tV_wy5KiC1VMeFQPNi2g==/com.yddm.haiwai.game-bHeiJjIVfYMTmPlQwANbrw==/split_config.arm64_v8a.apk
java:
 org.cocos2dx.lib.Cocos2dxRenderer.onDrawFrame(Cocos2dxRenderer.java:105) // 一个jni函数,调用到了c++,进行OpenGL相关的绘制
 android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1593)
 android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1287)

该系列教程会带你一字一行解读崩溃日志,希望对你排查定位bug有所帮助。

Android Apk安装细节

这里需要补充一些基础知识,安卓系统已安装的软件会在/data/app目录内以base.apk形式存在

如果是通过google play安装的,因为Android App Bundle(aab)的原因,apk会以split的形式存在

我在模拟器上验证了,从google play上下载的apk结构,apk大小还都不一样

star2qltechn:/data/app/com.romewargames.strategyempire-AGP1qpUXkGG3E_m0dBHR1A== # ls -ll
total 408188
-rw-r--r-- 1 system system    8197841 2023-11-02 17:11:57.111427681 +0800 base.apk
-rw-r--r-- 1 system system      12532 2023-11-02 17:13:35.134761014 +0800 base.dm
drwxr-xr-x 3 system system       4096 2023-11-02 17:13:35.261427681 +0800 lib
drwxrwx--x 3 system install      4096 2023-11-02 17:13:35.944761014 +0800 oat
-rw-r--r-- 1 system system  355816799 2023-11-02 17:13:04.944761014 +0800 split_base_assets.apk
-rw-r--r-- 1 system system   53932934 2023-11-02 17:13:30.771427681 +0800 split_config.arm64_v8a.apk

通过adb install,或者直接拖拽安装的,是以base.apk存在

star2qltechn:/data/app/free.v2ray.proxy.VPN-6RDmu-BT0ZNqmAZImYDKlA== # ls -ll
total 14608
-rw-r--r-- 1 system system  14950019 2023-10-25 10:28:44.089183196 +0800 base.apk
drwxr-xr-x 3 system system      4096 2023-10-25 10:28:44.175849863 +0800 lib
drwxrwx--x 3 system install     4096 2023-10-25 10:28:45.615849863 +0800 oat

从google play上安装的游戏,发现split_config.arm64_v8a.apk才34M,游戏整体大小是800多M,发现体积最大的是split_asset_pack.apk

x1q:/data/app/com.yddm.haiwai.game-mbV5YOgNm4TcoRDp5ovYqg== # ls -ll
total 906060
-rw-r--r-- 1 system system   49230425 2023-11-03 11:13:00.186139000 +0800 base.apk
-rw-r--r-- 1 system system      20712 2023-11-03 11:13:07.536139000 +0800 base.dm
drwxr-xr-x 3 system system       4096 2023-11-03 11:23:44.736139000 +0800 lib
drwxrwx--x 3 system install      4096 2023-11-03 11:23:48.176139000 +0800 oat
-rw-r--r-- 1 system system  842630903 2023-11-03 11:23:32.496139000 +0800 split_asset_pack.apk
-rw-r--r-- 1 system system   35701753 2023-11-03 11:18:48.466139000 +0800 split_config.arm64_v8a.apk
-rw-r--r-- 1 system system      33177 2023-11-03 11:13:20.846139000 +0800 split_config.en.apk
-rw-r--r-- 1 system system      24985 2023-11-03 11:13:15.056139000 +0800 split_config.es.apk
-rw-r--r-- 1 system system      85791 2023-11-03 11:12:13.916139000 +0800 split_config.xhdpi.apk
-rw-r--r-- 1 system system      41369 2023-11-03 11:18:55.236139000 +0800 split_config.zh.apk

Split APK

细心的你会发现split_config.arm64_v8a.apk,而这个也在bugly中出现了,有必要我们需要了解下。

Android5.0引入了Split APK机制,Split APK是Google为解决65535上限以及APK越来越大的问题而提出的一种方案。

它可以将一个庞大的APK按照屏幕密度、ABI等形式拆分成多个独立的APK,这些APK共享相同的data、cache目录,共享相同的进程,共享相同的包名。

它们还可以使用各自的资源,并且继承了Base APK里的资源。在Android的官方文档中也有提到这一点。

Split APK机制可以将一个APK,拆分成多个独立APK。

在引入了Split APK机制后,APK有两种分类:

  • Single APK:安装文件为一个完整的APK,即base APK。Android称其为Monolithic。

  • Mutiple APK:安装文件在一个文件目录中,其内部有多个被拆分的APK,这些APK由一个 base APK和一个或多个split APK组成。Android称其为Cluster。

小结

了解以上的基础知识,我们再看这个,就更加清晰明了是什么意思了

/data/app
/~~6_tV_wy5KiC1VMeFQPNi2g==
/com.yddm.haiwai.game-bHeiJjIVfYMTmPlQwANbrw==
/split_config.arm64_v8a.apk

下一节我们继续~~~

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值