2012-09-28 21 views
16

Tenemos un proyecto de C++ bastante grande que creamos multiplataforma para Android e iOS. Xcode usa todos los núcleos al compilar y es mucho más rápido (4-5x dependiendo de la máquina). ¿Hay alguna manera de mejorar el desempeño abismal del NDK? ¿Alguna opción de CPU múltiple? Tenemos encabezados precompilados, pero me parece que es el uso de los recursos el que tiene la culpa.Cómo acelerar las compilaciones de android ndk

¡Así que cualquier consejo o trucos para acelerar los tiempos de compilación del proyecto ndk de Android sería muy apreciado!

Respuesta

19

No es necesario que utilice el sistema de compilación de Android para su compilación; todas las herramientas están disponibles para su uso dentro de un Makefile (aunque deberá tener cuidado de configurar las rutas incluidas, las rutas de las bibliotecas y las opciones del compilador).

Dado que puede crear su propio Makefile en lugar de utilizar las secuencias de comandos de compilación predeterminadas, puede utilizar la opción -jN para especificar el número de operaciones simultáneas a realizar.

+24

El comando 'NDK-build' en sí es el uso de hacer. Podrías usar 'ndk-build -jN'. – kennytm

+4

@usman la N no es literal, debe colocar un número allí, elegido en función de la cantidad de núcleos de CPU en su sistema de compilación. Ejemplo: -j4 – mah

+0

@kennyTM hice j2. El mismo comando construye cosas mucho más rápido en el sistema de mi amigo – usman

1

siguiente fragmento de bulid.gradle muestra un ejemplo de -Jn y abifilters: (ver http://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.ExternalNativeNdkBuildOptions.html y https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.NdkOptions.html)

android { 
compileSdkVersion 21 
buildToolsVersion '25.0.3' 

defaultConfig { 
    applicationId "test" 
    minSdkVersion 21 
    targetSdkVersion 21 

    ndk { 
     moduleName "native_lib" 
     abiFilters 'armeabi-v7a', 'arm64-v8a' 
    } 
    externalNativeBuild { 
     ndkBuild { 
      arguments '-j4' 
     } 
    } 
    jackOptions { 
     enabled true 
    } 
}.....