亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android之eclipse簡單NDK入門

發布時間:2020-06-05 17:42:18 來源:網絡 閱讀:1356 作者:xuzw13 欄目:移動開發

    之前寫了一篇JNI的使用,這里其實也是JNI的使用,只不過現在的使用更加方便,不需要什么cygwin或者gnu去創建那邊麻煩,直接eclipse完成所有操作。

先前的一篇:http://xuzhiwei.blog.51cto.com/978424/976839


 1、首先現在Android的SDK和NDK

Android之eclipse簡單NDK入門

2、sdk中以及集成了eclipse,打開eclipse并下載CDT插件支持,一會兒寫c++使用。

    CDT下載地址:http://www.eclipse.org/cdt/

3、配置NDK環境,windows->preferences->Android->NDK進行配置。

Android之eclipse簡單NDK入門

4、創建項目

Android之eclipse簡單NDK入門

5、創建完成后,右擊項目Android Tools->Add Native Support就可以了。Android之eclipse簡單NDK入門


Android之eclipse簡單NDK入門

自動為我們生成了JNI的目錄,以及編譯的Android.mk等文件。

Android之eclipse簡單NDK入門


6、好了,開始寫代碼。

創建NativeUtils.java

package com.xzw.firstndk;
/**
 * 與c++的接口類,用來生成.h頭文件
 * @author xzw
 *
 */
public class NativeUtils {
    public static native String getWords();
}


現在要生成.h的頭文件,之前是在cmd里面通過javah命令來生成的,這里我們使用ant來自動為我們生成頭文件。


創建build_headers.xml然后以ant editor的方式打開,使用快捷鍵ALT+/生成模板。

<?xml version="1.0" encoding="UTF-8"?>
<!-- ====================================================================== 
     2014-6-19 下午2:07:38                                                        

     FirstNDK    
     description
                   
     XMYJ                                                                
     ====================================================================== -->
<project name="FirstNDK" default="BuilderHeaders">
    <description>
            description
    </description>

    <!-- ================================= 
          target: BuilderHeaders              
         ================================= -->
    <target name="BuilderHeaders" depends="BuildNativeHeader"/>

    <!-- - - - - - - - - - - - - - - - - - 
          target: BuildNativeHeader                      
         - - - - - - - - - - - - - - - - - -->
    <target name="BuildNativeHeader">
        <!--
        destdir:輸出目標目錄
        classpath:類路徑
        class:要生成的類
        -->
        <javah destdir="./jni" classpath="bin/classes" class="com.xzw.firstndk.NativeUtils"></javah>
    </target>

</project>

右擊運行ant,然后刷新jni目錄就可以看到.h文件了,也把一些依賴庫給我們創建好了,方便很多。

如圖

Android之eclipse簡單NDK入門

打開com_xzw_firstndk_NativeUtils.h可以看到:

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

#ifndef _Included_com_xzw_firstndk_NativeUtils
#define _Included_com_xzw_firstndk_NativeUtils
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_xzw_firstndk_NativeUtils
 * Method:    getWords
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_xzw_firstndk_NativeUtils_getWords
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif


現在開始實現,打開FirstNDK.cpp,引入.h頭文件

Android之eclipse簡單NDK入門

eclipse提示功能也是很不錯的,alt+/快捷快速提示,

#include <jni.h>
#include "com_xzw_firstndk_NativeUtils.h"

/*
 * Class:     com_xzw_firstndk_NativeUtils
 * Method:    getWords
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_xzw_firstndk_NativeUtils_getWords
  (JNIEnv *env, jclass clazz){
    return env->NewStringUTF("hello firt ndk");
}

好了,c++部分ok了,現在來調用咯。

package com.xzw.firstndk;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
    TextView resultText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
        resultText = (TextView)findViewById(R.id.result);
        //調用c++的輸出,顯示出來
        resultText.setText(NativeUtils.getWords());
        
    }

 
    static{
        System.loadLibrary("FirstNDK");
    }

}


完成了,默認生成的是armeabi架構的so文件,如果需要生成多中架構的支持的so,需要在jni目錄下創建Application.mk文件。

APP_ABI :=armeabi armeabi-v7a x86

添加好了,運行起來就可以在libs目錄下看到這幾個架構的文件夾了。搞定手工了。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青川县| 德保县| 张家界市| 盘锦市| 钟祥市| 大足县| 渝中区| 通海县| 金乡县| 金门县| 吐鲁番市| 竹溪县| 望谟县| 准格尔旗| 英吉沙县| 孝义市| 甘南县| 阿巴嘎旗| 黄骅市| 辽宁省| 增城市| 永福县| 石棉县| 精河县| 武山县| 蓬安县| 维西| 将乐县| 宁安市| 吉安市| 绥化市| 康乐县| 宣恩县| 塔河县| 洪江市| 公主岭市| 大兴区| 德安县| 酒泉市| 临海市| 桑日县|