代码提示对于开发者来说是非常重要的,对刚入门的人来说更为重要,当然如果你是高手的话,可以不用代码提示,但是代码提示无论对于高手还是新手来说都是可以提高开发效率的。Android Studio NDK开发时,默认是没有代码提示的,通过本文可以让NDK开发也具有代码提示功能。


在jni目录下创建CMakeLists.txt文件,内容如下(Android官方例子CMakeLists.txt里面的内容),其中add_library中的libname改成你的动态库名,source.cpp改成你的jni目录下的C/C++源文件名,target_link_librarieslibname你的动态库名。如果Android.mk文件中已经有写生成的动态库就可以将add_librarytarget_link_libraries注释掉,不然可以会报错More than one file was found with OS independent path 'libarmeabi-v7alibHelloWorld.so'

1
2
3
4
5
6
7
cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Werror")

add_library(libname SHARED source.cpp)

target_link_libraries(libname android GLESv2 log)

在没有CMakeLists.txtFile菜单的内容如下

添加CMakeLists.txtFile菜单如下,可以看到已经多出来了一个Link C++ Project with Gradle的选项

提示选择CMakeLists.txt路径

选择好CMakeLists.txt路径后点击ok,可以看到build.gradle文件都改变了

可以看到build.gradle中下图所示的内容,指定了CMakeLists.txt的路径。

1
2
3
4
5
externalNativeBuild {
cmake {
path file('src/main/jni/CMakeLists.txt')
}
}

等待Sync成功,如果失败的话有可能是网络问题。

然后在cpp文件里面写代码的时候就会出现提示了,但是在函数名上会报错,事实上是没有错误的,因为在cpp文件中已经引入了javah命令生成的头文件,用ndk-build命令也可以正常生成动态库(.so文件)。

代码提示有啦,终于可以愉快的写代码了!

可能会出现的错误

ERROR: executing external native build for cmake F:\Documents\develop\Demo\app\src\main\jni\CMakeLists.txt
Affected Modules: app

有可能是因为没有修改CMakeLists.txt中的动态库名和源文件名。

最后修改日期:2020年5月14日

留言

撰写回覆或留言