gpt4 book ai didi

android - Gradle /安卓 : single ndk build for multiple flavors?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:40 27 4
gpt4 key购买 nike

我有一个包含以下内容的 build.gradle 文件设置(为了简洁起见,我显然排除了无关紧要的部分):

android { defaultConfig { ndk { abiFilters 'armeabi', 'armeabi-v7a', 'x86' } }
productFlavors {
flavor1 { ... }
flavor2 { ... }
flavor3 { ... }
flavor4 { ... }
flavor5 { ... }
}
buildTypes {
debug {
externalNativeBuild { ndkBuild { cFlags '-DDEBUG' } }
...
}
release {
externalNativeBuild { ndkBuild { cFlags '-DRELEASE' } }
...
}
}
externalNativeBuild {
ndkBuild {
path 'jni/Android.mk'
}
}

有效,但它会为每个 flavor+buildType 编译 native 代码。所以不仅是debug和release,还有flavor1Debug,flavor2Release等等,耗时很久

我如何告诉 gradle 只为两种构建类型执行 externalNativeBuild,并将它们用于所有类型?

最佳答案

这是真的,如果你查看文件 .externalNativeBuild/ndkBuild/flavor1Debug/armeabi/ndkBuild_build_command.txt,你会看到类似于我的内容:

Executable : ~/Library/Android/sdk/ndk-bundle/ndk-build
arguments :
NDK_PROJECT_PATH=null
APP_BUILD_SCRIPT=~/proj/jni/Android.mk
APP_ABI=armeabi
NDK_ALL_ABIS=armeabi
NDK_DEBUG=1
APP_PLATFORM=android-21
NDK_OUT=~/app/build/intermediates/ndkBuild/flavor1/debug/obj
NDK_LIBS_OUT=~/app/build/intermediates/ndkBuild/flavor1/debug/lib
APP_SHORT_COMMANDS=false
LOCAL_SHORT_COMMANDS=false
-B
-n
jvmArgs :

对于每个 buildVariant 依此类推。您可以做些什么来减少构建时间?

  1. 将耗时的部分提取到一个静态库(或一组静态库)中,最后只留下集成的ndkBuild链接。使用这些静态库作为 $(PREBUILT_STATIC_LIBRARY)

  2. 完全禁用集成的 ndkBuild,并设置

    jniLibs.srcDir 'src/main/libs'

    禁用集成 ndkBuild 的最简单方法是指向

    jni.srcDirs = []

    但您也可以保留 Android Studio 对您的 cpp 文件的索引,但禁用 gradle 任务:

    tasks.all { task ->
    if (task.name.startsWith('compile') && task.name.endsWith('Ndk')) {
    task.enabled = false
    }
    }

关于android - Gradle /安卓 : single ndk build for multiple flavors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43495127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com