配置Android Studio以使用NDK(android-ndk-r10d,Windows 64位)

时间:2015-01-19 19:09:33

标签: android android-studio android-ndk

我有一个我尝试编译的应用程序,它使用* .c文件。

要编译它,我必须使用NDK。

下载64位版本并浏览网络,找到有关配置gradle的提示。

配置似乎没问题,并且gradle尝试运行NDK构建过程。

它通过调用ndk-build.cmd来完成此操作并停止并显示以下错误:

  

\ AppData \ Local \ VirtualStore \ Windows \ SysWOW64 \ android-ndk-r10d \ ndk-build.cmd":CreateProcess error = 2,系统找不到指定的文件

我在整个文件夹中搜索了ndk-build.cmd,但没有。

我错过了什么?

EDIT1:NDK安装在这里:

#ndk.dir=C\:\\Users\\user\\AppData\\Local\\VirtualStore\\Windows\\SysWOW64\\android-ndk-r10d

EDIT2:我确实试过我的系统路径没关系,这不是问题。但我确实安装了32位版本,而且这个版本确实有* .cmd文件。

我现在可以编译* .c文件。

我在AndroidStudio终端中使用了这个命令:

ndk-build -C C:\Users\Thatisme\AndroidStudioProjects\DeezerAP2\app\src\main\jni

所有* .c,*。h,*。mk和* .sh都放在jni文件夹中,如下图所示。

EDIT3:我现在可以生成* .so文件,但由于某些原因,找不到本机方法。

EDIT4:

这就是我的项目的样子:

enter image description here

我手动复制了jniLibs文件夹中的* .so文件。

* .c函数的声明是否正常?

JNIEXPORT jobject JNICALL Java_com_lexample_liggy_ldeezerap_SerialPort_open
  (JNIEnv *env, jclass thiz, jstring path, jint baudrate, jint flags)

EDIT5:我终于做到了。函数的正确名称是:

JNIEXPORT jobject JNICALL Java_com_example_iggy_deezerap_SerialPort_open
  (JNIEnv *env, jclass thiz, jstring path, jint baudrate, jint flags)

Package name is: com.example.iggy.deezerap
Java file calling the function "open()" is: SerialPort
The source file containing the native function is named: SerialPort.c
The function beeing called is: open()

我重新编译了* .c文件,也在jniLibs中复制了它们,重新编译了Android项目,现在它可以正常工作。

我很确定我之前有这个,我强烈怀疑这是由于* .c函数中出现某种不匹配错误。

关于粗体中的内容:

JNIEXPORT jobject JNICALL Java_com_example_iggy_deezerap_ SerialPort _open       (JNIEnv * env,jclass thiz,jstring path,jint baudrate,jint flags)

这是指* .c文件还是* .java文件?

6 个答案:

答案 0 :(得分:1)

您的NDK在哪里? ndk-build.cmd必须直接在其目录中,否则你的ndk安装会被破坏,你必须再次安装/解压缩它。

答案 1 :(得分:1)

您是否正确设置了NDK的路径?检查local.properties文件并确保已正确设置NDK的路径。

观看此视频,了解有关使用Android studio https://software.intel.com/en-us/videos/building-ndk-apps-with-android-studio

设置NDK的详细步骤

答案 2 :(得分:0)

尝试使用android NDK_r9d。 在我的情况下,我使用Android NDK_r9d,apache ant 1.9.4,Windows 64位和python 2.7.9。 它的工作非常完美。

答案 3 :(得分:0)

与Android Studio的完全NDK集成并不完全存在。 NDK现在与Android SDK捆绑在一起(虽然它不是随SDK下载的)。下载Android Studio和SDK后(我相信它们现在只需一次下载),打开Android Studio IDE并找到“项目结构”对话框,然后找到“SDK位置”面板。在那里,您可以看到NDK的下载链接。 Android Studio将NDK直接下载到名为“ndk-bundle”的文件夹中的Android SDK根目录下的文件夹中。此外,您还需要阅读Android NDK Preview。祝你好运,IDE的构建系统,Gradle和Gradle的不同插件与Gradle的系统版本(blah)相比很复杂。

答案 4 :(得分:0)

你可以用这些方式做到。

<强>一个即可。通过将export ANDROID_NDK='/Users/roofe/Documents/android-ndk-r14b'添加到.bash_profile来添加ANDROID_NDK环境变量。然后使用源./.bash_profile加载它。

<强> B'/ strong>即可。将sdk.dir=/Users/roofe/Library/Android/sdk添加到Android Studio的local.properties。

<强> C 即可。 文件&gt;项目结构

enter image description here

下载NDK或设置路径。

enter image description here

答案 5 :(得分:0)

万一有人通过,可以采取一种不涉及使用Android Studio重新下载NDK的变通方法。正如@BoiseBaked指出的那样,Android Studio将Android NDK存储在Android SDK根文件夹下的“ ndk-bundle”文件夹中。因此,在Linux中,只需在SDK根文件夹中创建指向NDK根文件夹的符号链接(如果使用Windows,则为快捷方式)即可解决该问题,例如:

ln -s [FULL_PATH_TO_NDK_ROOT] [FULL_PATH_TO_SDK_ROOT]/ndk-bundle

我相信在Windows中做类似的事情会起作用。