兄弟们,姐妹们,历尽两个月,改得我都怀疑自己适不适合搞这行了!!!真的是把网上说得可能得问题和解决方法都尝试了一遍,快疯了!!
看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版本,两行眼泪流下来啊!!!
贴上链接: