Android JNI学习(一)

ubuntu ndk 环境变量配置

1. 下载NDK for linux版本,我下载的是android-ndk-r10e。

2. 将NDK添加到环境变量中。在/etc/environment 添加/root/android-ndk-r10e,然后source /etc/environment

3. 在Terminal中输入ndk-build。出现以下提示说明安装成功:

Android NDK: Could not find application project directory !    
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.    
/root/android-ndk-r10e/build/core/build-local.mk:143: *** Android NDK: Aborting    .  Stop.


在eclipse中使用jni

1. 新建Android应用程序。我的应用程序包名是com.mibound.sostest

2. 在项目根目录下新建jni文件夹

3. 使用javah命令生成.h文件。在项目根目录下打开Terminal,执行javah -jni -classpath /bin/classes/ -d jni/ com.mibound.sostest.MainActivity命令(参数不熟悉可以输入javah查看)。

   如果出现Error: Could not find class file for 'com.mibound.sostest.MainActivity'.

   或者Error: jni cannot access android.app.Activity

   需要将android.jar包加到classpath中。即javah -jni -classpath/root/tools/adt-bundle-linux-x86_64-20140702/sdk/platforms/android-20/android.jar:bin/classes/ -d jni/ com.mibound.sostest.MainActivity

   如果成功会发现jni目录下多了一个.h文件com_mibound_sostest_MainActivity.h

4. 编写MainActivity.java      

    private native String show();
    
    static {
        System.loadLibrary("app_jni");
    }
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mTxtData = (TextView) findViewById(R.id.txt_data);
        
        
        mTxtData.setText(show());

    }

 
5. 在jni目录下新建app_jni.c文件,实现本地方法 

  

#include <string.h>
#include <jni.h>

jstring Java_com_mibound_sostest_MainActivity_show(JNIEnv* env, jobject thiz)
{
	return (*env)->NewStringUTF(env, "Show message from jni");
}

6. 在jni目录下新建Android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := app_jni
LOCAL_SRC_FILES := app_jni.c

include $(BUILD_SHARED_LIBRARY)

7. 在项目根目录下执行ndk-build

    执行成功会在libs/armeabi/目录下生成libapp_jni.so


运行应用程序会发现TextView显示

“Show message from jni”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值