android studio使用jni
来源:互联网 发布:基数排序算法 编辑:程序博客网 时间:2024/05/01 18:24
如果你要使用jni的话首先下载一个ndk,然后配置一下环境变量。
在android studio中点击file->project structure中配置
然后在app->src->main中创建一个jni文件夹。
在jni文件中创建一个c文件,.c为后缀。
#include<stdio.h>#include<stdlib.h>#include<jni.h>jstring Java_com_jiang_shuaijie_test_HelloActivity_helloFromC(JNIEnv* env,jobject thiz){ char* arr="hello c"; jstring jstr=(*(*env)).NewStringUTF(env, arr); return jstr;}这是最基本的代码,返回一个字符串。jstring是ndk中定义好的一个字符串基本类型。
JNIEnv* env,jobject thiz
方法的参数是固定。你可以参考ndk文件夹下sample文件夹,里面有很多的事例。Java_com_jiang_shuaijie_test_HelloActivity_helloFromC这个是你java类中方法所在的位置。比如:
package com.jiang.shuaijie.test;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Toast;public class HelloActivity extends AppCompatActivity { static { System.loadLibrary("hello"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_hello); } public void onClick(View view) { Toast.makeText(this, helloFromC(), Toast.LENGTH_SHORT).show(); } public native String helloFromC();}这是我在java中创建的一个activity类。helloFromC()方法为本地c调用的方法,要在类型名前加上native定义。里面的static静态初始化把编译好的libhello.so文件加载进来。
文件创建好之后,你还需要在jni文件中创建一个Android.mk配置文件。
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello LOCAL_SRC_FILES := Hello.c include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULE 这个是你起的类库的名字LOCAL_SRC_FILES 这个是类库的源文件
编写好之后再jni文件夹中使用命令ndk-build.cmd编译,编译成功就可以运行了。
如果你要调用带参数的方法,只需在
jstring Java_com_jiang_shuaijie_test_HelloActivity_helloFromC(JNIEnv* env,jobject thiz)括号内继续加参数。比如:(JNIEnv* env,jobject thiz,jint a,jint b)
由于cpu平台架构的不同,有x86,arm的当你使用jni时会自动编译成arm的so文件,在x86下不能使用。所以为了兼容,ndk6.0以上的可以在jni下创建一个Application.mk配置文件,内容为:
APP_ABI := armeabi armeabi-v7a x86
然后在jni目录下重新编译会编译成三个目录,如上的三个目录。这样你就可以在两个平台上使用了。
你可以直接编译运行,不需要单独编译c文件。
0 0
- android studio JNI使用
- Android Studio使用JNI
- android studio使用jni
- Android Studio 使用JNI
- ANDROID STUDIO JNI使用
- Android studio 使用jni
- Android studio 使用jni
- Android Studio里使用JNI
- Android Studio 使用JNI入门
- 使用Android Studio开发 JNI
- Android Studio下使用JNI
- Android studio 中使用Jni
- android studio 使用JNI开发
- Android studio使用JNI实例
- Android Studio JNI使用实例
- Android studio JNI的使用
- Android Studio 使用JNI库
- Android studio使用JNI实例
- 原码, 反码, 补码 详解
- Quartz的简单使用,基于1.X(二)【类的详细解释】
- 数据库(序)
- 自定义Toast 吐出我的风格
- Eclipse中10个最有用的快捷键组合
- android studio使用jni
- Android drawable微技巧,你所不知道的drawable的那些细节
- POI
- Access-Control-Allow-Origin问题
- ORACLE-SQL:排序防止NULL影响排序结果的处理方法
- [ZooKeeper]ZooKeeper里的枚举和常量
- symfony使用security实现验证登录
- IOS UPickerView 的使用详解
- Xcode 工程打不开