NDK_PROJECT_PATH=null 相关

当项目编译出现NDK_PROJECT_PATH=null错误时,意味着NDK路径配置有问题。常见原因是将jni目录放在了app/src/main下,而AS期望它在app/下。解决方案包括移动jni目录或在build.gradle中添加特定代码。推荐做法是将jni目录置于app目录下,并将.so文件放入app/libs,遵循AS的默认结构。

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

项目编译的时候出现了error,看里面的信息,编译的时候的参数有NDK_PROJECT_PATH=null,这说明项目的ndk相关的路径是有问题的,

比如对于我来说,我把jni目录放到了app/src/main下面(导致我出现提示找不到jni里面的头文件),而as能够识别的应该是在app/下面,所以要么把jni目录放到app/下面,要么在build.gradle加入下面这些代码

externalNativeBuild {
    ndkBuild {
        path file("src/main/jni/Android.mk")
    }
}

要十分注意,eclipse项目在as中转为as项目的时候,jni目录会被as放在app/src/main下面,然后就出现上面的问题的,所以我们要手动把它的位置移动出来才行。


N:这里附上合理的文件目录

首先在Android Studio工程的app目录下创建整个jni目录,jni目录里写Android.mk、Application.mk以及各类C/C++和汇编源文件。然后跟原来一样,用ndk_build工具去编,然后工具会自动生成libs目录,里面还有每个你在Application.mk里所指定处理器架构的so文件。


完成之后,编辑app目录下的build.gradle文件,为其添加以下代码:

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

完整的build.gradle文件如下所示:

复制代码
apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.adwo.gamecenter.civetcoffeegamecenter"
        minSdkVersion 9
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.0.0'
}



总之,你要是添加了

externalNativeBuild {
    ndkBuild {
        path file("src/main/jni/Android.mk")
    }
}
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

那么jni文件夹和生成的.so文件,  你爱放哪就放哪 !

 不然就老老实实把jni文件夹放在app目录下面 , 把.so文件放在src/main/jniLibs目录下面(as默认在这个目录找)。

比较推荐的做法是上面的红字后面的步骤,该做法是把jni文件夹放在app目录下面,把.so文件放在app/libs下面(as默认的jar包也是放在该位置)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值