mac下 JNI-Hello world
2016-05-05 00:38
363 查看
新建android工程
文件目录如下native接口和System.loadLibrary()
package cn.laura.laurajni; /** * JNI文件 * User: ZhiyaZhao(zhiyazhao@126.com) * Date: 2016-05-04 * parma: 23:20 * FIXME */ public class NdkJniUtils { public native String getCLanguageString(); static { System.loadLibrary("LauraJNI"); //defaultConfig.ndk.moduleName } }
Activity中调运JNI
package cn.laura.laurajni; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView = (TextView) findViewById(R.id.tv_helloworld); NdkJniUtils jni = new NdkJniUtils(); mTextView.setText(jni.getCLanguageString()); } }
生成对应的 .h头文件
后build project得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录
app_path/build/intermediates/classes/debug
创建名为jni的目录并复制.h文件
在工程的main目录下新建一个名字为jni的目录,然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫jnitest.c 。然后编辑代码如下
#include "cn_laura_laurajni_NdkJniUtils.h" JNIEXPORT jstring JNICALL Java_cn_laura_laurajni_NdkJniUtils_getCLanguageString (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"Hello world! Laura~"); }
配置build.gradle
接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "cn.laura.laurajni" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" ndk{ moduleName "LauraJNI" //生成的so名字 abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。 } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' }
运行效果
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Native 绘图方法
- 什么是Mac OS X?跟Linux有什么区别
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- Linux vs Mac:Linux 比 Mac 好的 7 个原因
- 苹果mac OS X上安装metasploit
- Validation of viewstate MAC failed.的解决方法
- Mac平台中编译安装Lua运行环境及Hello Lua实例
- 在Mac OS中安装Lua的教程
- vbs Windows系统改变或修改网卡的MAC地址的脚本与软件第1/2页
- MAC官方菜单纯CSS实现灰色会换色
- mac系统OS X10.10版本安装最新5.7.9mysql的方法
- 在Mac OS下使用Node.js的简单教程
- Mac环境下php操作mysql数据库的方法分享
- PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
- jQuery根据用户电脑是mac还是pc加载对应样式的方法
- 在MAC OS X上安装MYSQL
- Shell脚本获取本地网卡IP、mac地址、子网掩码、dns IP、外网IP