🎉 A framework for improving android 32bit app stability. (Alleviate crashes caused by insufficient virtual memory)
一行代�?解决 Android 32�?åº”ç”¨å› è™šæ‹Ÿå†…å˜ï¿½?足导致的 libc:abort(signal 6)
目�?国内的 Android App 大多数还是32�?架构,仅�??供了 arm-v7a 的动�?链接库,市�?�上大多数手机都是64�?çš„ CPU,App 通常都�?行在兼容模�?下,�?�以使用完整的 4GB 虚拟内å˜ï¼Œä½†æ˜¯å›½å†…应用一般都是集万�?�功能于一身,�?�?�业务越�?�越�?�?�(内置webview�?�?程�?�?高清大图�?çŸè§†é¢‘ç‰ç‰),以�?ï¿½éƒ¨åˆ†å†…å˜æ³„�?,4GB 的内å˜è¶Šï¿½?�越�?够用了。
从去年(2020)开始,�?�大头部应用的 Native Crash 开始暴增,通常 Top1 都是 libc:abort,通过上报的 maps �?��?,虚拟内å˜åœ°ï¿½?�空间大部分接近了 4GB,console logs ä¸ä¹Ÿæœ‰å¤§ï¿½?çš„ GL Errors: Out of memory(12)。
针对æ¤é—®é¢˜ï¼Œä¸€èˆ¬é¦–å…ˆèƒ½æƒ³åˆ°çš„å°±æ˜¯æŽ’æŸ¥å†…å˜æ³„�?问题,但往往收效甚微,多�?ï¿½æ˜¯å› ä¸ºï¿½?�?�业务的�?�展,确实是需�?这么多虚拟内å˜ã€‚诚然通过�?�级64�?架构�?�以把地�?�空间上�?扩充到512GBï¼Œä½†æ˜¯å› ä¸ºï¿½?��?åŽŸå› (包大�?�?维护�?本ç‰ç‰),目�?大部分应用尚未完�?�?�级,所以在这里�??供一�?新的�?路。
(还是推�??大家尽快把自己的应用�?�级到64�?架构哦~ 至少是�?�ABI架构,32�?版本ä¸ï¿½?�以继ç»ï¿½?ç•™ Patrons 用于�??�?�å˜ï¿½?用户的体验。)
通过一系列技术手段实现�?行期间动�?调整Region Space预分�?的地�?�空间,释放出最多900MB(æ ¹ï¿½?�实际情况调整�?�数)虚拟内å˜ç»™åˆ° libc:mallocï¼Œå¢žåŠ äº†æŽ¥è¿‘30%的地�?�上�?,大幅度给应用ç»å‘½ã€‚
详细介�?:阿里开�? Patrons:大型 32 �? Android 应用稳定性�??�?� 50% 的“黑科技�?
编译patrons模�?� or 使用以下ä¸å¿ƒä»“库的�??æ ‡ï¼Œä¸»å·¥ç¨‹ï¿½?赖该模�?�产物,在�?�适的时机进行�?始化:
repositories {
mavenCentral()
}
dependencies {
implementation 'com.alibaba:patrons:1.1.0'
} com.alibaba.android.patronus.Patrons.init(context, null);-
SDK 本身会带�?�多少接入�?本(包大�?�?稳定性):包大�?å¢žåŠ 20k左�?�,�?�以忽略�?计;关键逻辑ä¸ä¼šæœ‰å¤šå±‚�?护,�?会引�?�新的崩溃。
-
SDK å…¼å®¹æ€§æ€Žä¹ˆæ ·ï¼šåœ¨ Android 8�?8.1�?9�?10�?11�?12 å…± 6 个主�?版本生效,覆盖率接近 99.9%。在未兼容机型ä¸ï¿½?会生效,亦�?会产生新的崩溃。
-
使用�?ï¿½å°±èƒ½æ ¹æ²» Abort 么:肯定�?èƒ½ï¼Œå› ä¸º Abort 的�?å› å¾ˆå¤šï¼Œè™½ç„¶32�?应用多�?ï¿½æ˜¯å› ä¸ºè™šæ‹Ÿå†…å˜ï¿½?足,但是也�?�能å˜åœ¨å…¶ä»–问题,适�?性还是�?具体情况具体分�?。