首頁 > 後端開發 > C++ > 我可以在 NDK DSL 中定義 LOCAL_SRC_FILES 嗎?

我可以在 NDK DSL 中定義 LOCAL_SRC_FILES 嗎?

DDD
發布: 2024-11-23 09:55:17
原創
338 人瀏覽過

Can I define LOCAL_SRC_FILES in NDK DSL?

可以定義在 NDK DSL 中 LOCAL_SRC_FILES 嗎?

為了在 Gradle ndk{} 區塊中定義 LOCAL_SRC_FILES,需要注意的是,此功能不支援目前的 Gradle 外掛程式。即使是“實驗性”插件也只允許添加目錄。

推薦方法

建議使用傳統的 Android.mk 可靠地完成此任務。此外,建議將 jni.srcDirs 保留為 [${jniSrc}],以便 Android Studio 顯示這些文件,以便於存取和語法突出顯示。

NDK 建置停用

如果傳統Android.不需要mk 方法,可以停用常規NDK 建置任務,並可以注入buildNative 執行相反:

def ndkBuild = android.ndkDirectory
import org.apache.tools.ant.taskdefs.condition.Os
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
    ndkBuild += '.cmd'
}

task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
    commandLine '$ndkBuild', 'NDK_PROJECT_PATH="$jniSrc/..'
}

task cleanNative(type: Exec, description: 'Clean JNI object files') {
    commandLine '$ndkBuild', 'clean', 'NDK_PROJECT_PATH="$jniSrc/..'
}

clean.dependsOn 'cleanNative'

tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn buildNative
}

tasks.all {
    task -> if (task.name.contains('compileDebugNdk') || task.name.contains('compileReleaseNdk')) task.enabled = false
}
登入後複製

Gradle Experimental Plugin

對於'com.android.tools.build:gradle-experimental:0.2.0' 插件,可以採取類似的方法,但是使用不同的任務匹配:

tasks.all {
    task ->
        if (task.name.startsWith('compile') && task.name.contains('MainC')) {
            task.enabled = false
        }
        if (task.name.startsWith('link')) {
            task.enabled = false
        }
        if (task.name.endsWith("SharedLibrary") ) {
            task.dependsOn buildNative
        }
}
登入後複製

從NDK 中排除文件構建

使用實驗性插件0.4.0,可以透過模式從NDK建置中排除檔案:

android.sources {
    main {
       jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}
登入後複製

以上是我可以在 NDK DSL 中定義 LOCAL_SRC_FILES 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板