Android NDK:找不到应用项目目录?
Android NDK: Could not find application project directory?
首先,抱歉我的英语不好。
因此,我尝试 运行 使用此源代码录制音频 mp3 示例:
https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid
如果我构建项目,我得到一个错误:
Error:Execution failed for task ':app:ndkBuild'.
> A problem occurred starting process 'command 'ndk-build.cmd''
然后我在 AndroidStudio 中打开终端并输入:
1) cd c:\ndk
2) ndk-build
还有另一个错误:
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
c:\ndk\build/core/build-local.mk:148: *** Android NDK: Aborting . Stop.
好的,我在终端做下一步:
ndk-build NDK_PROJECT_PATH=c:/AndroidStudioProjects/Mp3VoiceRecorderSampleForAndroid-master/
这个命令给我肯定的结果:
[armeabi] Install : libmp3lame.so => libs/armeabi/libmp3lame.so
但是如果我重建我的项目第一个错误又来了!搜索了很多答案,但没有找到解决方案..
请帮忙!我做错了什么?
按照 Android NDK: Setup 的说明:
- 切换到项目的根目录。
- 通过在命令提示符下键入 ndk-build 来执行 ndk-build 以构建应用程序的本机组件。
- 像常规 Android 应用程序一样构建和安装您的项目。
您似乎跳过了第一步("c:\ndk" 很可能是 NDK 安装目录,而不是项目的根目录)。很可能是因为您跳过了设置说明中的位:
- 使用包含 NDK
的目录位置更新您的 PATH 环境变量
这将允许您从任何地方 运行 ndk-build。
如果你真的想按照上面描述的方式构建,你可以尝试将 NDK_PROJECT_PATH 添加到 user/system 环境变量 - 但是当你尝试构建不同的时,这可能会导致神秘的问题NDK 项目。
您正在使用 Android Studio,而当前 gradle 插件的 AS 会忽略您的 Makefile,这肯定会产生错误。
由于内置的 ndk 支持不支持本地依赖项(此处需要),您可以简单地停用对 ndk-build 的内置调用,然后 gradle 调用 ndk-build直接考虑您的 Makefile:
import org.apache.tools.ant.taskdefs.condition.Os
...
android {
...
sourceSets.main {
jniLibs.srcDir 'src/main/libs' //set .so files location to libs instead of jniLibs
jni.srcDirs = [] //disable automatic ndk-build call
}
// add a task that calls regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
} else {
commandLine 'ndk-build', '-C', file('src/main').absolutePath
}
}
// add this task as a dependency of Java compilation
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
}
您不能使用 'ndk-build' 构建 android 项目(如果您不使用 c 或 c++ 开发 android)。因为ndk builder是用来编译c或c++项目的。我能理解你为什么会犯这个错误。因为您在项目中使用了一个用 C 或 C++ 编写的库。因此,您应该在终端上转到用 c 或 c++ 编写的库,然后编写 'ndk-build' 和 运行.
例如:
$cd AndroidStudioProjects/OcrTest/C_orC++_Project/src/main
$ndk-build
@ph0b 我用过你的 build.gradle 但对我没用。现在我正在使用它并且工作正常。
import org.apache.tools.ant.taskdefs.condition.Os
...
android {
...
sourceSets.main {
jniLibs.srcDir 'src/main/libs' //set .so files location to libs instead of jniLibs
jni.srcDirs = [] //disable automatic ndk-build call
}
// add a task that calls regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk_path' + 'ndk-build.cmd', '-C', file('src/main').absolutePath
} else {
commandLine 'ndk-build', '-C', file('src/main').absolutePath
}
}
// add this task as a dependency of Java compilation
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
}
我的 NDK 项目遇到了完全相同的问题。它仅通过一个命令就解决了。
转到包含 Application.mk 和 Android.mk 文件的项目 jni 文件夹。
cd /home/rajib/Desktop/GIT_Code/testProject/jni/
现在输入以下命令
/home/rajib/Android/NDK-Manual/android-ndk-r10e/ndk-build NDK_PROJECT_PATH=./ NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk
N.B:这里要使用自己的NDK路径
希望能帮助到你。谢谢。
首先,抱歉我的英语不好。 因此,我尝试 运行 使用此源代码录制音频 mp3 示例: https://github.com/yhirano/Mp3VoiceRecorderSampleForAndroid
如果我构建项目,我得到一个错误:
Error:Execution failed for task ':app:ndkBuild'.
> A problem occurred starting process 'command 'ndk-build.cmd''
然后我在 AndroidStudio 中打开终端并输入:
1) cd c:\ndk
2) ndk-build
还有另一个错误:
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
c:\ndk\build/core/build-local.mk:148: *** Android NDK: Aborting . Stop.
好的,我在终端做下一步:
ndk-build NDK_PROJECT_PATH=c:/AndroidStudioProjects/Mp3VoiceRecorderSampleForAndroid-master/
这个命令给我肯定的结果:
[armeabi] Install : libmp3lame.so => libs/armeabi/libmp3lame.so
但是如果我重建我的项目第一个错误又来了!搜索了很多答案,但没有找到解决方案.. 请帮忙!我做错了什么?
按照 Android NDK: Setup 的说明:
- 切换到项目的根目录。
- 通过在命令提示符下键入 ndk-build 来执行 ndk-build 以构建应用程序的本机组件。
- 像常规 Android 应用程序一样构建和安装您的项目。
您似乎跳过了第一步("c:\ndk" 很可能是 NDK 安装目录,而不是项目的根目录)。很可能是因为您跳过了设置说明中的位:
- 使用包含 NDK 的目录位置更新您的 PATH 环境变量
这将允许您从任何地方 运行 ndk-build。
如果你真的想按照上面描述的方式构建,你可以尝试将 NDK_PROJECT_PATH 添加到 user/system 环境变量 - 但是当你尝试构建不同的时,这可能会导致神秘的问题NDK 项目。
您正在使用 Android Studio,而当前 gradle 插件的 AS 会忽略您的 Makefile,这肯定会产生错误。
由于内置的 ndk 支持不支持本地依赖项(此处需要),您可以简单地停用对 ndk-build 的内置调用,然后 gradle 调用 ndk-build直接考虑您的 Makefile:
import org.apache.tools.ant.taskdefs.condition.Os
...
android {
...
sourceSets.main {
jniLibs.srcDir 'src/main/libs' //set .so files location to libs instead of jniLibs
jni.srcDirs = [] //disable automatic ndk-build call
}
// add a task that calls regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath
} else {
commandLine 'ndk-build', '-C', file('src/main').absolutePath
}
}
// add this task as a dependency of Java compilation
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
}
您不能使用 'ndk-build' 构建 android 项目(如果您不使用 c 或 c++ 开发 android)。因为ndk builder是用来编译c或c++项目的。我能理解你为什么会犯这个错误。因为您在项目中使用了一个用 C 或 C++ 编写的库。因此,您应该在终端上转到用 c 或 c++ 编写的库,然后编写 'ndk-build' 和 运行.
例如:
$cd AndroidStudioProjects/OcrTest/C_orC++_Project/src/main
$ndk-build
@ph0b 我用过你的 build.gradle 但对我没用。现在我正在使用它并且工作正常。
import org.apache.tools.ant.taskdefs.condition.Os
...
android {
...
sourceSets.main {
jniLibs.srcDir 'src/main/libs' //set .so files location to libs instead of jniLibs
jni.srcDirs = [] //disable automatic ndk-build call
}
// add a task that calls regular ndk-build(.cmd) script from app directory
task ndkBuild(type: Exec) {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine 'ndk_path' + 'ndk-build.cmd', '-C', file('src/main').absolutePath
} else {
commandLine 'ndk-build', '-C', file('src/main').absolutePath
}
}
// add this task as a dependency of Java compilation
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
}
我的 NDK 项目遇到了完全相同的问题。它仅通过一个命令就解决了。 转到包含 Application.mk 和 Android.mk 文件的项目 jni 文件夹。
cd /home/rajib/Desktop/GIT_Code/testProject/jni/
现在输入以下命令
/home/rajib/Android/NDK-Manual/android-ndk-r10e/ndk-build NDK_PROJECT_PATH=./ NDK_APPLICATION_MK=./Application.mk APP_BUILD_SCRIPT=./Android.mk
N.B:这里要使用自己的NDK路径
希望能帮助到你。谢谢。