1. 程式人生 > >android 64位機子相容32位so包的操作

android 64位機子相容32位so包的操作

我是整合的融雲通訊,然而融雲的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這個目錄結構,就手動新增。

親測有效,希望對大家有所幫助