Lanzamiento del complemento xmake-gradle v1.0.7, integrado con xmake para construir rápidamente el programa Android JNI

Introduccion

xmake-gradle es un complemento de gradle que integra perfectamente xmake.

En la actualidad, hay dos formas de hacer un desarrollo integrado de Android Jni en Gradle, soportado por ndkBuild o CMake, Gradle también tiene integración integrada de estas dos herramientas

Sin embargo, mantener  Android.mk  sigue siendo muy tedioso, especialmente para proyectos grandes, y la sintaxis dsl de cmake no es simple e intuitiva, y personalmente no me gusta mucho. Por lo tanto, utilicé xmake para implementar el desarrollo multiplataforma. Es simple, rápido, amigable para los principiantes, y también es muy poderoso. Puede ir a la página de inicio del proyecto xmake para ver la introducción.

Pero antes de que quiera usar xmake para compilar la biblioteca de Android, solo puedo usar la línea de comando, como:

xmake f -p android --ndk=xxxx
xmake

Aunque es muy simple, pero si desea empaquetar e integrarse con Android apk / aar, aún necesita mucho trabajo adicional. Con el fin de mejorar la eficiencia de los desarrolladores, recientemente reorganicé este complemento de Gradle para integrarlo sin problemas en toda la construcción de Gradle Sistema.

De esta manera, los usuarios pueden usar fácilmente xmake para compilar la biblioteca jni en el estudio de Android, y la integración automática.

Además, la configuración de gradle relacionada es básicamente la misma que cmake y ndkbuild, la mayoría de ellas son compatibles, y el costo de cambio también se reducirá mucho.

Todos pueden probarlo, el complemento recientemente lanzado. Si desea obtener más información, consulte:

Preparación

Primero debemos instalar la herramienta de línea de comandos xmake correspondiente. Para obtener instrucciones de instalación, consulte: xmake .

Complemento de aplicación

Integración mediante plug-in DSL

plugins {
  id 'org.tboox.gradle-xmake-plugin' version '1.0.6'
}

Método de integración de complemento abandonado

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath 'org.tboox:gradle-xmake-plugin:1.0.6'
  }
  repositories {
    mavenCentral()
  }
}

apply plugin: "org.tboox.gradle-xmake-plugin"

Configuracion

El ejemplo de configuración más simple.

Si le agregamos xmake.luaarchivos projectdir/jni/xmake.lua, entonces solo necesitamos habilitar la ruta del proyecto JNI correspondiente especificada en xmake especificada en build.gradle.

build.gradle

android {
    externalNativeBuild {
        xmake {
            path "jni/xmake.lua"
        }
    }
}

JNI

Estructura de ingeniería JNI

projectdir
  - src
    - main
      - java
  - jni
    - xmake.lua
    - *.cpp

xmake.lua:

add_rules("mode.debug", "mode.release")
target("nativelib")
    set_kind("shared")
    add_files("nativelib.cc")

Más instrucciones de configuración de Gradle

android {
    defaultConfig {
        externalNativeBuild {
            xmake {
                // 追加设置全局 c 编译 flags
                cFlags "-DTEST"

                // 追加设置全局 c++编译 flags
                cppFlags "-DTEST", "-DTEST2"

                // 设置切换编译模式,与`xmake f -m debug`的配置对应,具体模式值根据自己的 xmake.lua 设置而定
                buildMode "debug"

                // 设置需要编译的 abi 列表,支持:armeabi, armeabi-v7a, arm64-v8a, x86, x86_64
                // 如果没有设置的话,我们也支持从 defaultConfig.ndk.abiFilters 中获取 abiFilters
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
    }

    externalNativeBuild {
        xmake {
            // 设置 jni 工程中 xmake.lua 根文件路径,这是必须的,不设置就不会启用 jni 编译
            path "jni/xmake.lua"

            // 启用详细输出,会显示完整编译命令行参数,其他值:verbose, warning, normal
            logLevel "verbose"

            // 指定 c++ stl 库,默认不指定会使用 c++_static,其他值:c++_static/c++_shared, gnustl_static/gnustl_shared, stlport_static/stlport_shared
            stl "c++_shared"

            // 设置 xmake 可执行程序路径(通常不用设置)
            // program /usr/local/bin/xmake

            // 禁用 stdc++库,默认是启用的
            // stdcxx false

            // 设置其他指定的 ndk 目录路径 (这是可选的,默认 xmake 会自动从$ANDROID_NDK_HOME 或者`~/Library/Android/sdk/ndk-bundle`中检测)
            // 当然如果用户通过`xmake g --ndk=xxx`配置了全局设置,也会自动从这个里面检测
            // ndk "/Users/ruki/files/android-ndk-r20b/"

            // 设置 ndk 中 sdk 版本
            // sdkver 21
        }
    }
}

Compilar JNI

Compila JNI y genera APK

Cuando gradle-xmake-pluginse aplica el complemento, la xmakeBuildtarea se inyectará automáticamente en la assembletarea existente , y la compilación e integración de la biblioteca jni se realizará automáticamente.

$ ./gradlew app:assembleDebug
> Task :nativelib:xmakeConfigureForArm64
> Task :nativelib:xmakeBuildForArm64
>> xmake build
[ 50%]: ccache compiling.debug nativelib.cc
[ 75%]: linking.debug libnativelib.so
[100%]: build ok!
>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/arm64-v8a
> Task :nativelib:xmakeConfigureForArmv7
> Task :nativelib:xmakeBuildForArmv7
>> xmake build
[ 50%]: ccache compiling.debug nativelib.cc
[ 75%]: linking.debug libnativelib.so
[100%]: build ok!
>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a
> Task :nativelib:preBuild
> Task :nativelib:assemble
> Task :app:assembleDebug

Reconstrucción forzada de JNI

$ ./gradlew nativelib:xmakeRebuild

Supongo que te gusta

Origin www.oschina.net/news/114960/xmake-gradle-1-0-7-released
Recomendado
Clasificación