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();
    
}
相關文章
相關標籤/搜索