studio写jniHelloWorld的步骤
来源:互联网 发布:淘宝卖土特产前景分析 编辑:程序博客网 时间:2024/06/08 13:29
studio写jniHelloWorld的步骤
1. 创建一个项目2. 创建一个java项目例如myJNI 1. 类中声明一个本地方法: 2. 声明链接 这样才能在java代码中调用c 代码如下: public class myJNI { static { System.loadLibrary("hello"); //加载动态链接库 } public static native String helloFromC(); }3. 在Terminal中进行命令行操作 1. 进入myJNI所在的文件夹下 cd app\src\main\java\com\wal\jni 2. 对于myJNI.java进行编译,生成class文件 javac myJNI.java 3. 退回到com的上一层 4. 用myJNI.class生成javah文件 4. 创建c文件 1. 在main文件夹下创建文件夹 例如 : jni 2. 在jni中创建c文件,文件名为hello(要与2.2中声明的相同) 3. c文件中写代码,先将h文件中生成的头考过来.注:虽然h文件不影响运行,但是方法多的时候可以方便写c文件 #include <jni.h> JNIEXPORT jstring JNICALL Java_com_wal_encode_myJNI_encode (JNIEnv *env, jclass obj, jstring str) { char *cstr = (*env)->GetStringUTFChars(env, str, 0); int i; for (i = 0; i < strlen(cstr); i++) { *(cstr + i) += 1; } return (*env)->NewStringUTF(env, cstr); }5. 重要配置 1. 配置ndk路径 2. appbuild.Gradle中配置ndk(defaultConfig节点下) defaultConfig { applicationId "com.wal.jni" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk{ moduleName "hello" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。 } } 3. appbuild.Gradle中的android下配置:否则找不到ndk,c文件会报错 sourceSets.main { jni.srcDirs = [] }6. 在Mainactivity中进行c的调用(例如输入一个字符串 或弹个土司) public class MainActivity extends AppCompatActivity { private String str; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); str = new myJNI().helloFromC(); } public void click(View view) { Toast.makeText(this,str,Toast.LENGTH_SHORT).show(); } }7. 运行到手机上
0 0
- studio写jniHelloWorld的步骤
- 写程序的步骤
- Android Studio的安装步骤
- android studio的安装步骤
- Anroid Studio的安装步骤
- 写一个模块的步骤:
- 内核的烧写步骤
- 写linux驱动程序的步骤
- 写网页的常用步骤
- 写linux驱动程序的步骤
- visual studio导出mexFunction的步骤
- Visual Studio开启远程调试的步骤
- Android Studio删除项目的步骤
- Android Studio 中使用JNI的步骤
- Android Studio的安装步骤及设置.
- android studio 下shareSDK的步骤
- Android Studio 2.0的安装步骤
- MAC下安装android studio的步骤
- PDO在CI框架中的使用
- 淘宝MM资料Python爬虫1.0
- Android中EditTex焦点设置和弹不弹出输入法的问题
- c libcurl 基本使用
- Android4.4 Camera callback注册和回调过程分析
- studio写jniHelloWorld的步骤
- 基于CentOS7开发之路 --- 第一章 : 安装 CentOS 7.2-1511
- UVa11019 Matrix Matcher 留坑[AC自动机]
- ROS通信原理介绍
- 大数据运维框架(四)--开发篇:自动部署程序的功能实现
- 使用 RandomStringUtils 类来生成随机码/随机数 java生成指定范围的随机数
- 【JavaWeb-22】slf4j和log4j的转化、一对一关系的配置、二级缓存的四种类别、阶段案例注意事项
- Java泛型中<? extends E>和<? super E>的区别
- unity3d抛物线的运动的制作