eclipse怎么制作界面,Android之eclipse簡單NDK入門

 2023-10-08 阅读 29 评论 0

摘要:? ?之前寫了一篇JNI的使用,這里其實也是JNI的使用,只不過現在的使用更加方便,不需要什么cygwin或者gnu去創建那邊麻煩,直接eclipse完成所有操作。 先前的一篇:http://xuzhiwei.blog.51cto.com/978424/976839 ?1、首先現在Android的SDK和N

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

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


?1、首先現在Android的SDK和NDK

wKioL1OiefrhCR4FAACBUy4ndXI621.jpg

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

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

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

wKioL1OietPwXfUXAAIctFw-BEs361.jpg

4、創建項目

wKioL1OieyrhEMdGAAKr_JahOqI251.jpg

5、創建完成后,右擊項目Android Tools->Add Native Support就可以了。eclipse怎么制作界面?wKiom1OifBCwAzCyAADVLH372i8435.jpg


wKiom1OifPKw4a5FAAD38R0Tkd0164.jpg

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

wKioL1OifMTAbDwsAADxiR32eA4998.jpg


6、好了,開始寫代碼。

創建NativeUtils.java

1
2
3
4
5
6
7
8
9
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+/生成模板。eclipsejava。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?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文件了,也把一些依賴庫給我們創建好了,方便很多。

如圖

wKioL1OigSbi2Sv1AAFMqyN52e0911.jpg

打開com_xzw_firstndk_NativeUtils.h可以看到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*?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頭文件

wKioL1OiggvRaNqkAAJrQGLtjE8254.jpg

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

1
2
3
4
5
6
7
8
9
10
11
12
#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了,現在來調用咯。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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文件。

1
APP_ABI?:=armeabi?armeabi-v7a?x86

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


本文轉自xuzw13 51CTO博客,原文鏈接:http://blog.51cto.com/xuzhiwei/1428192,如需轉載請自行聯系原作者

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/130908.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息