Android Studio开发JNI工程
2015-04-16 18:44
429 查看
转:http://www.2cto.com/kf/201412/361768.html
使用Android Sutdio创建一个新的工程后,接下来记录创建NDK工程的基本步骤。 本文将达到:
1. 创建NDK工程
2. 在JNI中输出Log语句
3. 指定编译的so库的abi版本
4. 解决在创建NDK工程中的问题
Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处
。P.S:onCreate()中对R.id.txt执行setText(),所以这里需要对xml布局文件按正常的开发步骤进行修改即可。 直接给出代码如下:
?
Step: 2.执行Build->Make Project
这一步骤执行一下,验证工程中并无其它错误,并对工程进行了编译,生成了.class文件..class文件的生成路径是在 app_path/build/intermediates/classes/debug下的.如下图:
Step: 3.javah生成c头文件
点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件。这里需要注意的是要进入 \app\src\main的目录下执行javah命令,为的是生成的 .h 文件同样是在\app\src\main路径下,可以在Studio的工程结构中直接看到。 操作命令:javah -d jni -classpath <sdk_android.jar>;<app_classes> lab.sodino.jnitest.MainActivity具体操作图如下:
例如:javah -d jni -classpath D:\Dev\Android\android-sdk-windows\platforms\android-16\android.jar;..\..\build\intermediates\classes\debug com.example.abc.MainActivity
对于"主版本51比50新,此编译器支持最新的主版本"则是由于电脑上安装了两个版本的jdk引起的,而当前使用的是旧的jdk。把旧的jdk删除,并执行java version命令后显示当前jdk为最新的1.7时,则不会再有此提示了。如下图:
最后的生成结果: <喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20141216/2014121608565552.png" alt="\" />
Step: 4.编辑c文件
在main.c文件中实现头文件中的方法,具体功能为直接return回一个String,并且使用android_log打印出相关日志。代码如下:
?
到这里后,我们再执行一个"Build->Make Project",发现"Messages Gradle Build"会给出提示如下:
?
这里提示了NDK未配置,并且需要在工程中的local.properties文件中配置NDK路径。好了,提示很清楚了,那我们就进入下一步吧。
Step: 5.配置NDK这一步包括两个动作:
1.指明ndk路径
2. 修改build.gradle配置 工程中共有两个build.gradle配置文件,我们要修改的是在\app\build.gradle这个文件。为其在defaultConfig分支中增加上
?
以上配置代码指定的so库名称为JniTest,链接时使用到的库,对应android.mk文件中的LOCAL_LDLIBS,及最终输出指定三种abi体系结构下的so库。添加后如下图:
这时,再执行"Build->Rebuild Project",就可以编译出so文件了。但在Window平台上会出现一个问题:
?
出现这个错误很莫名其妙..几番折腾下,找到一个视频出来了大概原因及解决方式:出处见Youtube视频 02:50分开始:https://www.youtube.com/watch?v=okLKfxfbz40#t=362在Windows下NDK一个bug,当仅仅编译一个文件时出现会出现此问题,解决方法就是再加入一个空util.c文件即可。编译出来的库文件被Studio输出到了下图的路径中
Step: 6.安装运行
界面:
查看Log打印:
使用Android Sutdio创建一个新的工程后,接下来记录创建NDK工程的基本步骤。 本文将达到:
1. 创建NDK工程
2. 在JNI中输出Log语句
3. 指定编译的so库的abi版本
4. 解决在创建NDK工程中的问题
Step: 1. 添加native接口注意写好native接口和System.loadLibrary()即可了,并无特别之处
。P.S:onCreate()中对R.id.txt执行setText(),所以这里需要对xml布局文件按正常的开发步骤进行修改即可。 直接给出代码如下:
?
这一步骤执行一下,验证工程中并无其它错误,并对工程进行了编译,生成了.class文件..class文件的生成路径是在 app_path/build/intermediates/classes/debug下的.如下图:
Step: 3.javah生成c头文件
点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件。这里需要注意的是要进入 \app\src\main的目录下执行javah命令,为的是生成的 .h 文件同样是在\app\src\main路径下,可以在Studio的工程结构中直接看到。 操作命令:javah -d jni -classpath <sdk_android.jar>;<app_classes> lab.sodino.jnitest.MainActivity具体操作图如下:
例如:javah -d jni -classpath D:\Dev\Android\android-sdk-windows\platforms\android-16\android.jar;..\..\build\intermediates\classes\debug com.example.abc.MainActivity
最后的生成结果: <喎�"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cD48aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20141216/2014121608565552.png" alt="\" />
Step: 4.编辑c文件
在main.c文件中实现头文件中的方法,具体功能为直接return回一个String,并且使用android_log打印出相关日志。代码如下:
?
?
Step: 5.配置NDK这一步包括两个动作:
1.指明ndk路径
2. 修改build.gradle配置 工程中共有两个build.gradle配置文件,我们要修改的是在\app\build.gradle这个文件。为其在defaultConfig分支中增加上
?
这时,再执行"Build->Rebuild Project",就可以编译出so文件了。但在Window平台上会出现一个问题:
?
Step: 6.安装运行
界面:
查看Log打印:
相关文章推荐
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- #菜鸟之旅#Android Studio开发JNI工程——Native调用Java方法获取IMEI
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio上面使用Ndk JNI 开发工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio 开发JNI工程步骤
- 利用Android studio开发JNI工程
- Android Studio开发JNI工程
- Android Studio最新版本(1.3)JNI开发流程总结
- Android Studio 2.3.3 图解配置NDK开发环境以及Hello Word To jni~