una studio para moviles movil estructura descargar configurar arquitectura app aplicaciones aplicacion android gradle jni native

moviles - descargar gradle para android studio



Android gradle, libs nativos para diferentes arquitecturas (2)

Supongo:

ndk { moduleName "resolver" stl "gnustl_shared" cFlags "-std=c++11" abiFilters = [''armeabi'',''arm-v7''] }

Y eliminar

sourceSets { main { jniLibs.srcDirs = [''libs''] } }

Estoy intentando construir apk universal para todas las arquitecturas. Aquí está mi estructura de proyecto:

-App -appModule -libraryModule -libs -armeabi -lib.so -src -java -jni

Aquí está mi archivo gradle para libraryModule:

apply plugin: ''com.android.library'' // http://stackoverflow.com/questions/28485309/how-to-build-single-apk-with-andoid-ndk-and-gradle android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { ndk { moduleName "ProxyResolver" // <-- This is the name of AndroidProxy native module stl "gnustl_shared" cFlags "-std=c++11" abiFilters = [''armeabi''] ldLibs (projectDir.absolutePath + "/libs/armeabi/libresolver.so") } } sourceSets { main { jniLibs.srcDirs = [''libs''] } } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) }

Como puede ver, la ruta de la biblioteca está codificada . Y ahora funciona en los procesadores arm-v7. Pero necesito agregar soporte de x86 sin agregar sabor


Configurar abiFilters en tu defaultConfig solo agrega información a las capacidades de la aplicación (solo es útil para el instalador, es decir, el instalador muestra un error cuando el dispositivo que intentas instalar no es compatible) y no cambia los binarios que se agregan a la aplicación final. ver también https://.com/a/39445685/1827156 .

Supongo que lo que quieres lograr es tener diferentes apk para diferentes arquitecturas. Este es un uso común, es decir, para reducir el tamaño de construcción. Puede lograr esto mediante el uso de splits en build.gradle su aplicación. Consulte https://developer.android.com/studio/build/configure-apk-splits.html .

Recomiendo encarecidamente https://www.neotechsoftware.com/blog/native-libraries-part-i-common-pitfalls (no soy el autor).

Nota sobre aar trabajar con libraries / aar s: Sin embargo, hay una gran dificultad cuando trabajas con bibliotecas ( aar lugar de apk ). Imho, no puedes (automágicamente) crear diferentes aar específicas de aar . En cambio, crea aar s que contiene los binarios para todos los ABI. Al agregar el aar a una aplicación de Android, especifique splits en las aplicaciones build.gradle como se mencionó anteriormente.