android 64位機子相容32位so包的操作
阿新 • • 發佈:2019-02-01
我是整合的融雲通訊,然而融雲的sdk中並沒有支援小視訊錄製的功能,所有的過程必須親自親手打造。在用的github上一個非常有名的媒體錄製開源庫之後,因為這個類庫中有用到so檔案,,在開發測試階段用的小米很老的一款手機(測試機都懂得),在這款機子上完全沒有問題,當功能都開發完之後,打包給老闆發過去,,閃崩,,額賊,什麼情況,老闆當時對我很無語,當然我也對自己很無語(測試階段不蹦,給老闆發過去就蹦)
最後找到原因了,,因為我測試的手機是之前小米手機32位的,而那個媒體類庫用到的so檔案是支援這類手機的,而老闆的那個手機是最新上市的手機,基本上現在的手機都是64位的吧,所以不相容。(對於Android中32位及64位相關知識 ,點選 點選開啟連結,這篇文章很好的解釋了 32位的ARMv7和64位的ARMv8兩種架構)。
解決問題;
在build.gradle 檔案中加上
defaultConfig {
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}
}
加上這句話可能會報錯:
NDK integration is deprecated in the
current plugin. Consider trying the new experimental plugin.
則在專案根目錄的gradle.properties檔案中新增:
android.useDeprecatedNdk=true
還有一點,如果說你的工程結構中沒有gradle.properties這個目錄結構,就手動新增。
親測有效,希望對大家有所幫助