Android jni简便开发流程

Android jni helloworld》中介绍了开发jni helloworld的步骤,本文将介绍jni简便开发流程html

① 写java代码 native 声明本地方法java

② 添加本地支持 右键单击项目->andorid tools->add native surportandroid

若是发现 finish不能点击,须要给工做空间配置ndk目录的位置c++

window->preferences->左侧选择android->ndk 把ndk解压的目录指定进来app

右键单击项目->andorid tools->add native surportide

点击“Finish”,自动生成函数

③ 若是写的是.cpp的文件 先修改一下生成的.cpp文件的扩展名 不要忘了 相应修改Android.mk文件中LOCAL_SRC_FILES的值post

④ javah生成头文件 在生成的头文件中拷贝c的函数名到.c的文件spa

运行cmd插件

切换到项目src目录:cd /d F:\workspace_sdk4\02_简便开发流程\src

输入:javah com.wuyudong.simpleprocess.MainActivity

src中自动生成“com_wuyudong_simpleprocess_MainActivity.h”文件

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

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

#ifdef __cplusplus
}
#endif
#endif

将其中的代码copy到hello.c中

⑤ 解决CDT插件报错的问题

右键单击项目选择 properties 选测 c/c++ general->paths and symbols->include选项卡下->点击add..->file system 选择ndk目录下 platforms文件夹 对应平台下(项目支持的最小版本)

usr 目录下 arch-arm -> include 肯定后 会解决代码提示和报错的问题

⑥编写C函数 若是须要单独编译一下c代码就在c/c++视图中找到小锤子图标

若是想直接运行到模拟器上 就不用锤子了

⑦ java代码中不要忘了 system.loadlibrary();

最后的代码以下:

package com.wuyudong.simpleprocess;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
    
    static{
        System.loadLibrary("hello");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    public void click(View v) {
        Toast.makeText(getApplicationContext(), helloFromC(), 0).show();
        
        
    }
    
    public native String helloFromC();
    
}
相关文章
相关标签/搜索