2017-05-28 83 views
0

我們的Android項目包含一些本地庫,我們僅支持arbeabi-v7。所以生成的apk只包含這個體系結構的本地庫。RenderScript包含所有平臺的本機二進制文件

最近我們增加了RenderScript引起生成APK包括librsjni.solibRSSuport.so本地的即x86所有支持的平臺,arbeabi-v7

build.gradle文件的更改添加RenderScript是:

defaultConfig { 
    // Other configs 

    renderscriptTargetApi 18 
    renderscriptSupportModeEnabled true 

} 

生成的apk庫文件夾如下所示:

libs 
- armeabi-v7 
    - librsjni.so 
    - libRSSuport.so 
    - Other native libs 
- x86 
    - librsjni.so 
    - libRSSuport.so 
- Other archs 
    - librsjni.so 
    - libRSSuport.so 

由於運行時間可能認爲非支持armeabi-v7體系結構並嘗試運行它並導致應用程序崩潰,這會導致主要abi不是armeabi-v7的手機中出現問題。

截至目前,我們已經增加了以下內容build.gradle

ndk { 
    abiFilters "armeabi-v7a" 
} 

gradle.properties

android.useDeprecatedNdk=true 

雖然此方法可以解決問題,但它似乎是一個黑客或非標準的解決方案。

有沒有一種標準或推薦的方法來解決這個問題?

+0

恕我直言,** ** abiFilters是你的問題一個完美的標準溶液。 –

+0

@AlexCohn感謝您的回覆。我所關心的是使用'android.useDeprecatedNdk'。有沒有一種方法可以排除「non depricated ndk」的庫? – Abdullah

回答

2

如果你只使用預編譯庫,你最好的選擇是採用splits功能:

android { 
    … 
    splits { 
    abi { 
     enable true 
     reset() 
     include "armeabi-v7a" 
     universalApk false 
    } 
    } 
} 
相關問題