2015-11-25 39 views
0

我試圖設置Android Studio和Gradle以使用本機代碼構建我們的android應用程序。在Gradle中指定toolchainVersion和productFlavors

由於我們的依賴關係,我們使用GCC 4.8編譯armeabiarmeabi-v7ax86。 我試圖指定下列方式工具鏈和ABI:

model { 
    android.ndk { 
     moduleName = "my_native" 
     toolchain = "gcc" 
     toolchainVersion = "4.8" 
     cppFlags.add("-std=c++11 -fexceptions -frtti") 
     stl = "gnustl_static" 
    } 

    android.productFlavors { 
     create("arm") { 
      ndk.with { 
       abiFilters.add("armeabi") 
      } 
     } 
     create("armv7") { 
      ndk.with { 
       abiFilters.add("armeabi-v7a") 
      } 
     } 
     create("x86") { 
      ndk.with { 
       abiFilters.add("x86") 
      } 
     } 
    } 
} 

指定工具鏈工作正常,但同步時搖籃忽略abiFilters和其未按GCC 4.8在不支持arm64-v8a所有的ABI創建任務最新版本的NDK(我相信r10e)。

我正在使用Gradle包裝器的gradle-experimental插件和版本2.8的版本0.4.0。 Android Studio版本爲1.5.0(最新版本)。

如何正確指定工具鏈與一組ABI一起使用?

回答

0

我有一個類似的問題,發現this article有幫助。

如果您一次建立3個架構一個APK,你應該模塊android.productFlavors在應用的build.gradle腳本創建另一個項目:

android.productFlavors { 
    create("abi3") { 
     ndk.abiFilters.add("x86") 
     ndk.abiFilters.add("armeabi") 
     ndk.abiFilters.add("armeabi-v7a") 
    } 
} 

現在同步與搖籃文件將導致的Android項目Studio自動創建另外兩個Build Variants(參見「Build Variants」工具欄):abi3Debug和abi3Release。所以你可以使用這些變體之一來構建你的項目。 現在我想你正在使用默認構建版本,它使用APP_ABI=all鍵構建您的項目。

+0

我不想創建一個胖APK,你的答案不涉及指定工具鏈。 – Jonas

+0

在我的回答中,我假定工具鏈版本已經在android.ndk模塊中指定:'toolchainVersion =「4.8」'。但無論如何,這將是沒有用的,如果你不創建胖APK。我會進一步調查問題。如果你有任何解決方案,我會很感激。 – Alex

相關問題