Unity导出到AS中真机测试apk没有问题,aab提交到GooglePlay审核通过,但是从Google Play下载的应用闪退问题

兄弟们,姐妹们,历尽两个月,改得我都怀疑自己适不适合搞这行了!!!真的是把网上说得可能得问题和解决方法都尝试了一遍,快疯了!!

看google开发者后台得测试报告,提供得crash信息:

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr ffffffffffffffff
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build type 'Release', Scripting Backend 'il2cpp', CPU 'arm64-v8a'
Build fingerprint: 'google/redfin/redfin:11/RQ3A.211001.001/7641976:user/release-keys'
Revision: 'MP1.0'
pid: 23182, tid: 23578, name: UnityMain  >>> com.xxx.xxx <<<
    x0   ffffffffffffffff  x1   534a3a1a643b66a4  x2   0000000000000001  x3   0000000000000002
    x4   00000000ffffffff  x5   0000000000000000  x6   0000000000000012  x7   0000007ecdf9e1d0
    x8   0000007c9071dfb8  x9   534a3a1a643b66a4  x10  000000002e736f00  x11  0000000000000000
    x12  000000002e736f00  x13  000000002e716900  x14  0000000000000001  x15  0000000000000009
    x16  0000007fb0f8db50  x17  0000007fb0f23084  x18  000000002aaf39ad  x19  0000007c9071bbe0
    x20  534a3a1a643b66a4  x21  ffffffffffffffff  x22  0000007fb350e3b8  x23  0000007c9071bb30
    x24  0000007c9071bb10  x25  0000007fb476f000  x26  0000007fb476f000  x27  0000007c9071e000
    x28  0000000000000000  x29  0000007c9071baf0  x30  0000007c83d7711c
    sp   0000007c9071baa0  pc   0000007c83d77128  pstate 0000000020001000
backtrace:
	#00  pc 00000000000005bc  [vdso] ()
	#01  pc 00000000007e7124  /data/app/~~Nls7zScPmwKrus3S9v6Sgw==/com.xxx.xxxx-HlQF7QyJI5KnDR1b5Ir73g==/split_config.arm64_v8a.apk ()
	#02  pc 0000000000000dd4  /apex/com.android.runtime/bin/linker64 (__dl__Z18do_dl_iterate_phdrPFiP12dl_phdr_infomPvES1_+260)
	#03  pc 00000000000003d8  /apex/com.android.runtime/bin/linker64 (__loader_dl_iterate_phdr+48)
	#04  pc 00000000000000a0  /apex/com.android.runtime/lib64/bionic/libdl.so (dl_iterate_phdr+8)
	#05  pc 00000000007e702c  /data/app/~~111==/com.x.newzombie-xxxxx==/split_config.arm64_v8a.apk ()
	#06  pc 00000000007ae480  /data/app/~~111==/com.xxx.xxx-xxx==/split_config.arm64_v8a.apk ()
	#07  pc 000000000067fa94  /data/app/~~111==/com.xxx.xxx-xxx==/split_config.arm64_v8a.apk ()
	#08  pc 00000000006d1134  /data/app/~~111==/com.xxx.xxx-xxx==/split_config.arm64_v8a.apk ()
	#09  pc 00000000006d180c  /data/app/~~111==/com.xxx.xxx-xxx==/split_config.arm64_v8a.apk ()
	#10  pc 00000000006dea88  /data/app/~~111==/com.xxx.xxx-xxx==/split_config.arm64_v8a.apk ()
	#11  pc 0000000000012ed4  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148)
	#12  pc 0000000000009564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548)
	#13  pc 000000000007ea6c  /apex/com.android.art/lib64/libart.so (_ZN3art9ArtMethod6InvokeEPNS_6ThreadEPjjPNS_6JValueEPKc+200)
	#14  pc 00000000001ec5ec  /apex/com.android.art/lib64/libart.so (_ZN3art11interpreter34ArtInterpreterToCompiledCodeBridgeEPNS_6ThreadEPNS_9ArtMethodEPNS_11ShadowFrameEtPNS_6JValueE+376)
	#15  pc 00000000001e26b0  /apex/com.android.art/lib64/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+912)
	#16  pc 0000000000547728  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+568)
	#17  pc 0000000000003914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20)
	#18  pc 80200801fffffffc  <unknown/absolute> ()

这只是其中一份crash,还有另外4份类似得crash,根据网上得教程,都说去看logcat

中的详细信息,看具体是什么问题,然而,我想说,原谅鄙人比较菜,猜测可能是缺少对应的依赖架构,像提到的lib64,arm64_v8a,是否是这个so文件的问题,然后又去追溯so文件是哪里来的,起什么作用。。。。只想说,白扯。

但是的确没有其他可用的或者说是可参考的log。真真的是要秃。

然后换思维,为什么真机测试可以,商店中下载的闪退呢?真机测试是直接安装apk,商店中提交的是aab,分析同一个工程打出的apk和aab包的区别:

很明确的一点,aab的包在商店中会根据不同的环境下载对应的arm64_v8a,armeabi-v7a,而apk包中arm64_v8a和armeabi-v7a会直接全部打包进去。

再回到crash提到:split_config.arm64_v8a.apk,正好对应,的确可能是架包拆分导致的问题,优先解决这个问题。

发现了一个属性参数:android:extractNativeLibs="true",这个属性有个特殊性,是针对apk瘦身的,再gradle版本较高的时候 android:extractNativeLibs的默认值发生了变化,

我使用的是gradle3.5.4,minisdkversion=19,所以在AndroidManifest.xml中在<application>标签,添加:

<application 
        android:extractNativeLibs="true" 
        android:theme="@style/UnityThemeSelector" 
        android:label="@string/app_name" 
        android:icon="@mipmap/app_icon">

具体想了解的可以去查询这个属性,论坛上有详细的说明。

添加完后测试,发现了新的问题,但至少人家开始有error的报错了,感动。

error:Using memoryadresses from more that 16GB of memory

这个查看下来是因为使用的unity2018.3.11f,据unity官方论坛中讨论,这个版本就是在IL2CPP打包并且Target Architecture to ARM64时,会导致启动app在闪屏时crash

这万万没想到,是unity的坑啊!!!解决办法就是更新unity版本,两行眼泪流下来啊!!!

贴上链接:

​​​​​t​​​​​Unity Issue Tracker - [Android][IL2CPP] App crashes during launch with "Using memoryadresses from more than 16GB of memory" messages on Android 11Repro steps: 1. Create a new project 2. Switch build target to Android 3. Set Scripting Backend to IL2CPP and Target Architecture to...https://issuetracker.unity3d.com/issues/android-il2cpp-empty-project-crashes-on-launch-with-using-memoryadresses-from-more-than-16gb-of-memory-messages 于是我们更新了unity版本,unity2018.4.36,终于解决了闪退问题!


                
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值