使用IDEA开发jni

5 篇文章 0 订阅

使用IDEA或者Android Studio可以进行ndk开发。
由于Android Studio是基于IDEA的,所以方法都是通用的。(eclipes请参考网上其他网友的博文)

1、搭建JNI环境
2、开始Hello,JNI!
  • local.properties中添加NDK路径。如下:
sdk.dir=C\:\\Android\\android-sdk-windows
ndk.dir=C\:\\Android\\android-ndk
  • 新建一个普通的Android Project。Activity的类名为MainActivity。
  • 在类中添加一个native方法:public native String getStringFromJni()
  • make projct或者build project。
  • 使用javah来生成*.h头文件。
1、建立jni文件夹:在module(通常名为app)上右键->New->Folder->JNI Folder。如果已经存在则不需要添加。
2、 打开IDEA的Terminal窗口,默认是project根目录,通过``cd app\src\main``进入main目录。
3、 生成头文件:``java h -d jni -classpath sdkdir\platforms\android-21\android.jar;..\..\build\intermediates\classes\debug com.example.testandroid.app.MainActivity``。
我的是``java h -d jni -classpath c:\Android\android-sdk-windows\platforms\android-21\android.jar;..\..\build\intermediates\classes\debug com.example.testandroid.app.MainActivity
``,后面解释这个命令的含义。
4、 如果没有保存,jni目录下会生成头文件``com_example_testandroid_app_MainActivity.h``。
  • jni目录下添加.c文件,名称没有限制,这里我们使用main.c。添加引用#include "com_example_testandroid_app_MainActivity.h"
    你可以在上面生成的头文件里面最后找到native函数的声明。复制到main.c文件中,添加实现。
// 头文件中的生成函数声明
/*
 * Class:     com_example_testandroid_app_MainActivity    类名
 * Method:    getIntFromJni                               函数名
 * Signature: ()I                                         函数签名
 */
JNIEXPORT jint JNICALL Java_com_example_testandroid_app_MainActivity_getIntFromJni
  (JNIEnv *, jobject);
// 我们的实现,一定不要忘了添加参数名
JNIEXPORT jstring JNICALL Java_com_example_testandroid_app_MainActivity_getStringFromJni
  (JNIEnv *env, jobject obj)
  {
    return (*env)->NewStringUTF(env, "hello, jni!");
  }
  • app/build.gradle添加ndk配置
defaultConfig {
    applicationId "com.example.testandroid.app"
    minSdkVersion 9
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    ndk {
        moduleName "Myso";//生成的so文件名称,可以不跟c文件同名
    }
}
  • 在MainActivity.java里面添加引用
static {
    System.loadLibrary("Myso");
}
// oncreate()中添加,显示得到的字符串
Toast.makeText(this, getStringFromJni(), Toast.LENGTH_SHORT).show();
  • 到此完成整个hello,jni。你可以运行看看效果了。
3、一些解释
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值