android studio 加入jni的简单操作

1 篇文章 0 订阅

android studio下的第一个jni项目

先配置ndk目录,百度即可,获取目录路径,下面要用到

1.新建一个项目,包名为com.app.myjni

2.在main下建立一个与java平级目录jni

3.在jni目录新建一个.C文件,取名(包名+文件名)com_app_myjni_Test,内容为:

#include <com_app_myjni_Test.h>
JNIEXPORT jstring JNICALL Java_com_app_myjni_Test_getName(JNIEnv * env, jobject jObj){
        jstring str = (*env)->NewStringUTF(env, "HelloWorld from JNI !");
        return str;
}

4.在jni目录新建一个.h头文件,取名(包名+文件名)com_app_myjni_Test,内容为:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>

#ifndef _Included_com_app_myjni_Test
#define _Included_com_app_myjni_Test
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:
 * Method:    getName
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_app_myjni_Test_getName
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

(3、4步骤新建也可以合成一个步骤,在新建.c文件的弹框里勾选Create an associated header即可)

5.找到项目的local.properties文件,最后的SDK.dir=你的sdk路径这行下面添加一行

ndk.dir=D\:\\android-ndk-r10(这个路径是我的)

6.在app目录下的build.gradle里的defaultConfig里面添加ndk

defaultConfig {
    ndk {
        moduleName "Test"//(生成的so名称,调用的时候用到)
        abiFilters "armeabi", "armeabi-v7a", "x86"  //输出指定三种abi体系结构下的so库。目前可有可无。
    }
}
7.新建一个Test类,内容:
public class Test {
    static {
        System.loadLibrary("Test");//
    }
    public native String getName();
}
8.找到项目的gradle.properties,在末尾添加
android.useDeprecatedNdk=true
9.跑一下,我的报错:
Error:Execution failed for task ':app:compileDebugNdk'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'D:\android-ndk-r10\ndk-build.cmd'' finished with non-zero exit value 2
这是NDK在Windows下一个bug,当只编译一个单一文件时出现,解决办法就是再添加一个空的文件就行了
于是在jni文件夹随便添加一个caca.c文件
10.再跑一次,报找不到so库的错误,clean一下再跑就OK了
http://blog.csdn.net/yanbober/article/details/45309049

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值