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
    评论
Android Studio中调用JNI(Java Native Interface)可以实现Java与C/C++之间的相互调用。下面是一般的步骤: 1. 创建JNI文件夹:在Android Studio的项目目录下,创建一个名为"jni"的文件夹。 2. 创建C/C++源文件:在"jni"文件夹中创建一个C/C++源文件,例如"native-lib.c"。 3. 编写C/C++代码:在源文件中编写C/C++代码,实现所需的功能。 4. 生成头文件:在终端或命令提示符中,进入到"jni"文件夹,并执行以下命令生成头文件: ``` javah -d ../app/src/main/cpp -classpath ../app/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes com.example.appname.MainActivity ``` 这里的"com.example.appname.MainActivity"是你的Java类的完整路径。 5. 配置CMakeLists.txt:在项目的根目录下找到"CMakeLists.txt"文件,并添加以下内容: ``` # 设置C/C++源文件路径 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} -std=c++11") add_library(native-lib SHARED src/main/cpp/native-lib.c) # 链接JNI库 target_link_libraries(native-lib log) ``` 6. 在Java代码中加载JNI库:在需要使用JNI的Java类中,使用`System.loadLibrary("native-lib")`加载JNI库。 7. 调用JNI方法:在Java代码中,使用`native`关键字声明需要调用的JNI方法,并在C/C++代码中实现对应的JNI方法。 8. 构建和运行:点击Android Studio的"Build"菜单,选择"Make Project"来构建项目。然后可以在Java代码中调用JNI方法。 希望以上步骤对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值