您好,登錄后才能下訂單哦!
本人一直用真機調試極光推送,一直沒問題,今天準備在模擬器上運行項目看看,剛運行就爆掉了,感覺有些奇怪,遂查日志:
呵呵,致命錯誤:Fatal signal 11 (SIGSEGV) at 0x00070016 (code=1), thread 1417 (Thread-110)
Fatal signal 11 (SIGSEGV) at 0x00000048 (code=1), thread 1422 (com.xxx)
網上一搜,千奇百怪的答案都有,有說多線程的影響的,要加同步鎖保證異步線程爭搶資源的問題等等。本人差點想全部寫這塊的代碼,但是仔細一想,才加載app就報的問題,怎么會與多線程有關呢?于是再查看日志,問題來了,兩處報的致命錯誤都是在 ../libjpush.so 處,于是想到了和推送有關,再進一步的一想,推送在主頁就是一個實例化的一句話 JPushInterface.init(this); // 初始化 JPush ,這沒什么東西啊,畢竟內部的實例化也是極光自己寫好的,沒理由錯。
為了繼續能測試,此時引出了第一個解決方案,注釋掉這句話,哈哈,這樣問題就解決了,沒有報錯了。讀者到這里了不要開心,問題根本沒有解決,這只是權宜之計。
此時我就將問題發到極光官網,對方的回答是將lib下的../libjpush.so換成 X86下的 ../libjpush.so,地址:http://docs.jpush.cn/display/dev/Android,打開地址看見了X86SDK,毫不猶豫的下載后,進入lib目錄找到文件并將其替換,然后運行看看,Ok,在模擬器上可以運行了,大功告成。
天有不測風云,我立即在真機上試試,切,真機上報錯了,看來是魚與熊掌不可得兼啊,看圖:
這個錯誤說明我們在初始化極光的時候沒找到匹配的資源,也就是我們剛剛替換的那個只能解決模擬器的上的問題,而不能解決真機上的問題;于是我繼續追問,過2小時左右得到回復:
請不要替換,libs目錄是可以建多個文件夾的,名字也有規定,你現在需要兩個文件夾,一個名字叫x86,一個是armeabi文件夾。他們里面都有一個libjpush.so,這兩個文件是不一樣的。 |
于是按照其方法做了,最終徹底解決該問題。
回頭想想,也行在上一步的時候就可以把問題解決了,只是我理解上的偏差,多出了新的錯誤,所以很多事我們只有做了才知道里邊真正的原理。
總結:在開發中,如果我們的項目用了激光推送,只要保證libs下有x86文件夾和armeabi文件夾且各自有自己的libjpush.so文件,就不會出現任何問題了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。