2017-05-28 5 views
0

Androidプロジェクトには一部のネイティブライブラリが含まれており、私たちはarbeabi-v7のみをサポートしています。したがって、生成apkにはこのアーキテクチャ用のネイティブライブラリのみが含まれています。 RenderScriptを追加するRenderScriptにはすべてのプラットフォーム用のネイティブバイナリが含まれています

最近、我々はx86すなわち、すべてのサポートされているプラ​​ットフォーム用のlibrsjni.solibRSSuport.soネイティブを含むように生成されたAPKを引き起こすRenderScriptを追加し、arbeabi-v7など

build.gradleファイルの変更は以下のとおりです。

defaultConfig { 
    // Other configs 

    renderscriptTargetApi 18 
    renderscriptSupportModeEnabled true 

} 

生成されたapk libsフォルダは次のようになります。

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 
    } 
    } 
} 
関連する問題