2015-09-01 17 views
7

Nella mia applicazione utilizzo il renderscript con codice nativo per x86, armeabi-v7a e mips (~ 2.7 Mb ciascuna). Inoltre ho letto che l'architettura di mips ha solo pochi dispositivi. Quindi vorrei raggruppare la mia applicazione in due APK: universale (ad esempio x86 e armeabi-v7a) e mips. Ho trovato che la sezione divisa aiuta a creare l'apk per i mips, ma l'apk universale contiene ancora l'architettura mips. Quindi la mia domanda è come escludere abi dall'apk dei risultati?Escludi abi dall'apk

Grazie

risposta

7

È possibile provare a impostare un altro sapore che contenga tutto tranne MIPS. Nel file build.gradle da uno dei progetti di test che fanno parte delle fonti di plugin Gradle Android, ho trovato questo:

apply from: "../commonHeader.gradle" 
buildscript { apply from: "../commonBuildScript.gradle", to: buildscript } 
apply plugin: 'com.android.application' 
android { 
    compileSdkVersion 21 
    buildToolsVersion = rootProject.ext.buildToolsVersion 
    productFlavors { 
     x86 { 
      ndk { 
       abiFilter "x86" 
      } 
     } 
     arm { 
      ndk { 
       abiFilters "armeabi-v7a", "armeabi" 
      } 
     } 
     mips { 
      ndk { 
       abiFilter "mips" 
      } 
     } 
    } 
} 

Sembra che il loro sapore arm fondamentalmente comprende due ABI ARM comuni. Probabilmente potresti definire un sapore "universale" contenente x86 e armeabi-v7a.

hanno un altro test project, la cui build.gradle contiene:

splits { 
    abi { 
     enable true 
     reset() 
     include 'x86', 'armeabi-v7a', 'mips' 
    } 
} 

si potrebbe essere in grado di utilizzare qualcosa di simile, e rilasciare il mips da lì.

+0

attualmente la sezione ndk {} è deprecata. Hai un altro modo di usarlo? – Vetalll

+0

Questo può essere fatto senza usare sapori del prodotto, basta aggiungere la sezione ndk nella sezione di debug o release, se necessario. Vedi qui http://stackoverflow.com/questions/30946365/how-to-import-only-selected-native-library-abis-from-aar – sham

+0

@Vetalll puoi usare android.useDeprecatedNdk = true in gradle.properties. Tuttavia, non sono sicuro – Killer