2015-09-01 11 views
7

In meiner Anwendung verwende ich payscript, die nativen Code für x86, armeabi-v7a und Mips (~ 2,7 Mb jeweils) hat. Ich habe auch gelesen, dass die Mips-Architektur nur wenige Geräte hat. Daher möchte ich meine Anwendung in zwei APKs bündeln: universal (z. B. x86 und armeabi-v7a) und Mips. Ich fand, dass Split-Sektion hilft, Apk für Mips zu erstellen, aber universelle Apk enthält immer noch Mips-Architektur. Also meine Frage ist, wie man abi vom Ergebnis apk ausschließt?Exclude abi von apk

Dank

Antwort

7

Sie können versuchen, einen anderen Geschmack einrichten, der alles andere als MIPS enthält. In der build.gradle Datei von einem der Testprojekte, die Teil der Android Gradle Plugin Quellen sind, fand ich diese:

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" 
      } 
     } 
    } 
} 

Es ist wie ihre arm Geschmack sieht beinhaltet im Wesentlichen die beiden gemeinsamen ARM ABIs. Sie könnten wahrscheinlich einen "universellen" Geschmack mit x86 und armeabi-v7a definieren.

Sie haben eine andere test project, deren build.gradle enthält:

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

Sie könnten in der Lage sein, etwas ähnliches, zu verwenden und die mips von dort ab.

+0

Derzeit ist der Abschnitt ndk {} veraltet. Kannst du es jetzt anders benutzen? – Vetalll

+0

Dies kann ohne Verwendung von Produktaromen auch getan werden, fügen Sie einfach die ndk-Abschnitt in Ihrem Debug oder Release-Abschnitt nach Bedarf. Siehe http://stackoverflow.com/questions/30946365/how-to-import-only-selected-native-library-abis-from-aar – sham

+0

@Vetalll Sie können android.useDeprecatedNdk = true in gradle.properties verwenden. Ich bin mir jedoch nicht sicher – Killer