android studio 已有NDK代码并且包含application.mk android.mk 使用ndkcmd 直接编译

本文介绍了如何在Android Studio项目中,针对已有NDK代码且包含application.mk和android.mk的情况,使用ndkcmd进行编译。通过在APP模块的build.gradle中添加特定配置,确保新项目或移植项目都能支持ndkcmd编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从传统的NDK编译过渡到android studio 中去编译,不管如何改变,ndkcmd编译始终是支持的,

所以如下的配置,不管是新项目还是移植项目都是支持的,算是一种通用的配置。

依赖关系通过 mk文件维护

1,在APP module中的build.gradle中添加

Android{

task ndkBuild(type: org.gradle.api.tasks.Exec) {
        workingDir file('src/main')
//        workingDir file('src/main/TrulyHandsfreeSDK')
        commandLine  getNdkBuildCmd()
    }
    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
    task cleanNative(type: Exec) {
        workingDir file('src/main')
        commandLine getNdkBuildCmd(),'clean'
    }
    clean.dependsOn cleanNative

}

 

def getNdkDir() {
    if(System.env.ANDROID_NDK_ROOT !=null)
        returnSystem.env.ANDROID_NDK_ROOT
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties')
            .newDataInputStream())
    def ndkdir = properties.getProperty('ndk.dir',null)
    if(ndkdir ==null)
        throw newGradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an ANDROID_NDK_ROOT environment variable.")
    return ndkdir
}
def getNdkBuildCmd() {
    def ndkbuild =getNdkDir() +"\\ndk-build.cmd"
//    def ndkbuild ="E\\:\\adt\\sdk\\ndk-bundle\\ndk-build.cmd"
    /*if (Os.isFamily(Os.FAMILY_WINDOWS))
        ndkbuild += ".cmd"*/
    return ndkbuild
}

 

 

然后使用ndkBuild task编译即可:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值