調(diào)試的時(shí)候好好的晨逝,將打完的包傳輸?shù)绞謾C(jī)上進(jìn)行安裝弃锐,安裝成功,但是一打開(kāi)就閃退担败。
沒(méi)辦法昔穴,只好通過(guò)在命令行運(yùn)行adb logcat來(lái)抓取下log,發(fā)現(xiàn)閃退原因是:
com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi/librealm-jni.so
這是因?yàn)槲页绦蚶镉玫搅薘ealm數(shù)據(jù)庫(kù)提前,看樣子使用這個(gè)數(shù)據(jù)庫(kù)有個(gè)大坑啊吗货,沒(méi)辦法,只好各種google了
因?yàn)樯婕暗絣ib庫(kù)狈网,我還得從android的架構(gòu)看起宙搬,終于弄懂了lib/armeabi/是個(gè)什么鬼,簡(jiǎn)單地說(shuō)拓哺,這是為了支持那些特別特別老的手機(jī)用的庫(kù)勇垛,感謝下面這篇文章的講解
https://blog.csdn.net/u012400885/article/details/52923765
最終根據(jù)官方文檔找到了原因https://realm.io/docs/java/latest/#couldnt-load-librealm-jniso
意思是Android同時(shí)載入32位和64位的lib庫(kù)時(shí)會(huì)有問(wèn)題,因此把64位的庫(kù)排除出去士鸥,在App的build.gradle中添加
//過(guò)濾掉不支持的平臺(tái)
? ? packagingOptions {
????????????exclude"lib/arm64-v8a/librealm-jni.so"
? ? }
注意一定不要多加闲孤,我看有的文章讓同時(shí)加上了exclude "lib/mips/librealm-jni.so"等等,這些加了反而會(huì)有問(wèn)題烤礁。
重新編譯打包讼积,安裝,一切OK脚仔!
今天在新手機(jī)上使用勤众,還發(fā)現(xiàn)了一個(gè)問(wèn)題,也是打開(kāi)后遇到閃退鲤脏,發(fā)現(xiàn)還是librealm庫(kù)的問(wèn)題决摧,重新找了下文章,發(fā)現(xiàn)這篇文章很有用Mixing 32- and 64-bit Dependencies in Android