国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android NDK開發簡單程序分享(Hello Word!)

2019-12-12 04:16:04
字體:
來源:轉載
供稿:網友

在之前的博客中已經為大家介紹了,如何在win環境下配置DNK程序,本篇我將帶大家實現一個簡單的Hello jni程序,讓大家真正感受一下NDK開發的魅力。這里我們選擇使用C+JAVA開發Android程序,首先你必須了解C語言、JAVA語言以及Linux操作系統,這樣可以幫助你開始上手,當然不是說你必須是大牛才能進行NDK開發,下面我們來一起實現一個簡單的NDK程序。

第一步,創建Android工程

打開開發環境eclipse,在左側空白區域,右鍵單擊創建Android工程(非常簡單,不再贅述)。

第二步,編譯頭文件

打開我們的主Activity,在里面定義一個native類型的方法:

public class MainActivity extends Activity { public static native String getStringFromC(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}

創建好我們的Android工程后,并定義好方法之后,然后在目錄下新建一個jni目錄,之后點擊運行輸入cmd回車-->通過cd命令進入當前的工程目錄

然后通過javah命令生成我們的頭文件,下面先看一下javah命令吧:

這里我們主要使用到-d、-jni、 -classpath,下面我們來生成我們的頭文件,在命令行輸入:

javah -classpath bin/classes -d jni com.edu.hpu.jni.MainActivity

遇到這個問題是因為我們的calsspath在編譯時,沒有找到Android.jar文件導致的,錯誤信息如下:

這個問題很好解決,第一種方式,我們在環境變量calsspath下添加一個Android.jar文件的目錄即可,Android.jar文件存在于我們的Android SDK文件夾,platforms文件夾下存在很多Android版本,我們任意選一個打開,我們就找到了我們需要的Android.jar文件,然后將地址配置到環境變量classpath下即可;第二種方式我們在命令行設置一個路徑即可:

這樣我們的頭文件就生成了,最下化我們的命令行窗口,因為隨后我們還要使用,完成上面的操作,我們刷新一下工程,這是在jni目錄下會對一個頭文件:com_edu_hpu_jni_MainActivity.h(文件名因工程而異),下面我們在jni目錄下新建一個.c文件:

#include <stdio.h>#include <stdlib.h>#include "com_edu_hpu_jni_MainActivity.h"JNIEXPORT jstring JNICALL Java_com_edu_hpu_jni_MainActivity_getStringFromC(JNIEnv* env, jclass this){ return (*env)->NewStringUTF(env, "Hello from JNI !");}

Java_com_edu_hpu_jni_MainActivity_getStringFromC簡單說一下這個名字,Java_是固定前綴,com_edu_hpu_jni_MainActivity:主activity包名+類名,getStringFromC:方法名

這里為了防止我們寫錯,我們打開剛剛生成的頭文件,從里面拷貝出來:

到這里我們的任務即將完成,下面我們將之前demo工程的jni目錄下的Android.mk拷貝到我們的工程jni目錄下,然后雙擊打開:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := helloLOCAL_SRC_FILES := hello.cinclude $(BUILD_SHARED_LIBRARY)

LOCAL_MODULE:指我們.c文件的訪問標記;LOCAL_SRC_FILES:指我們在jni目錄下新建的.c文件。

最后我們需要在我們的主Activity中進行調用.C類庫:

public class MainActivity extends Activity { static{ System.loadLibrary("hello"); } public static native String getStringFromC(); private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.hello); text.setText(getStringFromC()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}

做完上面的工作,我們打開我們的命令行窗口,輸入ndk-build編譯生成.so類庫

操作成功后,我們刷新一下工程,會發現obj目錄下增加了一個.so文件:

然后我們點擊運行工程,這樣我們的第一個NDK程序就算完工了,最后附一張圖:

上面提到的命令行方式生成.so文件是不是感覺很麻煩,接下來請和我一起探究一下如何使用編譯工具eclipse完成上面的操作。

第一步:安裝ndk

安裝方式詳見Android NDK開發入門

第二步:配置eclipse

首先我們需要將ndk環境配置到eclipse:點擊 window-->perferences:

然后選擇Android-->ndk-->將我們的ndk安裝目錄添加進來:

到這里我們的配置基本完成,最后給我們的工程配置一個啟動ndk-build的路徑,選擇我們的工程右鍵單擊選擇properties:

 

好了,我們的eclipse編譯ndk程序的配置就算大功告成,大家快去試一下吧,超級方便。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南华县| 禹州市| 台南县| 翼城县| 宜阳县| 安溪县| 昭通市| 荥经县| 同德县| 安宁市| 集贤县| 安宁市| 共和县| 拜城县| 泰顺县| 辽中县| 长寿区| 新密市| 石台县| 日照市| 湘乡市| 临清市| 讷河市| 文山县| 肇东市| 北票市| 隆子县| 永丰县| 会理县| 依安县| 湄潭县| 潍坊市| 平塘县| 梁河县| 成都市| 云浮市| 宝山区| 仁怀市| 朝阳市| 洛川县| 闽清县|