NDK_PROJECT_PATH=null 相关

来源:互联网 发布:javimdb最新域名 编辑:程序博客网 时间:2024/06/03 13:54

项目编译的时候出现了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包也是放在该位置)


原创粉丝点击