中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

AndroidJni代碼的示例分析

這篇文章給大家介紹Android Jni代碼的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),銅山企業(yè)網(wǎng)站建設(shè),銅山品牌網(wǎng)站建設(shè),網(wǎng)站定制,銅山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,銅山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

在Android 模擬器中可以對(duì)Android手機(jī)操作系統(tǒng)進(jìn)行適當(dāng)?shù)男薷?,增加各種功能,以滿足用戶的需求。那么今天我們會(huì)為大家?guī)鞟ndroid Jni的相關(guān)使用方法,以方便大家對(duì)這一系統(tǒng)的解讀。Android的應(yīng)用程序(Dalvik VM)中使用JNI(Java Native Interface)調(diào)用C/C++開發(fā)的共享庫(kù)。

開發(fā)環(huán)境

  1. (eclipse + Android ADT)   

  2. WindowsXP SP3   

  3. JDK 1.6.0.12   

  4. VMWARE+Ubuntu Linux 8.04  

Android Jni使用方法步驟(1) Eclipse中新建Android工程

  1. 工程名 JNItest   

  2. Package名com.ura.test   

  3. Activity名 JNItest   

  4. 應(yīng)用程序名 JNItest  

Android Jni使用方法步驟(2) 編輯main.xml

  1. < ?xml version="1.0" encoding="utf-8"?>   

  2. < LinearLayout xmlns:android=
    "http://schemas.Android.com/apk/res/Android"   

  3. Android:orientation="vertical"   

  4. Android:layout_width="fill_parent"   

  5. Android:layout_height="fill_parent"   

  6. >   

  7. < TextView   

  8. Android:id="@+id/JNITest"   

  9. Android:layout_width="fill_parent"   

  10. Android:layout_height="wrap_content"   

  11. Android:text="@string/JNITest"   

  12. />   

  13. < /LinearLayout>   

Android Jni使用方法步驟(3)編輯java文件

package com.ura.test;   import Android.app.Activity;   import Android.os.Bundle;   import Android.widget.TextView;   public class JNITest extends Activity {   /** Called when the activity is first created. */   static {   System.loadLibrary("JNITest");   }   public native String GetTest();   @Override   public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   String str =GetTest();   TextView JNITest = (TextView)findViewById(R.id.JNITest);   JNITest.setText(str);   }   }

Android Jni使用方法步驟(4)生成head文件 

編譯上面工程聲稱class文件,然后用javah工具生成c/c++頭文件。

javah -classpath bin -d jni com.ura.test.JNItest

生成的頭文件如下

/* DO NOT EDIT THIS FILE - it is machine generated */   #include < jni.h>   /* Header for class com_ura_test_JNITest */   #ifndef _Included_com_ura_test_JNITest   #define _Included_com_ura_test_JNITest   #ifdef __cplusplus   extern "C" {   #endif   /*   * Class: com_ura_test_JNITest   * Method: GetTest   * Signature: ()Ljava/lang/String;   */   JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest   (JNIEnv *, jobject);   #ifdef __cplusplus   }   #endif   #endif

Android Jni使用方法步驟(5)編寫c/c++文件如下

  1. #include "com_ura_test_JNITest.h"   

  2. #define LOG_TAG "JNITest"   

  3. #undef LOG   

  4. #include < utils/Log.h>   

  5. JNIEXPORT jstring JNICALL Java_com_ura_test_JNITest_GetTest   

  6. (JNIEnv * env, jobject obj)   

  7. {   

  8. return (*env)->NewStringUTF(env, (char *)
    "JNITest Native String");   

  9. LOGD("Hello LIB!\n");   

  10. }   

Android Jni使用方法步驟(6)編寫Android.mk文件

LOCAL_PATH:= $(call my-dir)   include $(CLEAR_VARS)   LOCAL_SRC_FILES:= \   com_ura_test_JNITest.c   LOCAL_C_INCLUDES := \   $(JNI_H_INCLUDE)   LOCAL_SHARED_LIBRARIES := libutils   LOCAL_PRELINK_MODULE := false   LOCAL_MODULE := libJNITest   include $(BUILD_SHARED_LIBRARY)

Android Jni使用方法步驟(7)編譯生成動(dòng)態(tài)庫(kù)

新建文件夾

~/mydroid/external/libJNITest

把上面編寫好的頭文件,c/c++源文件,make文件拷貝進(jìn)上面目錄中

* 需要注意的是把PRELINK_MOUDULE設(shè)置成false

否則需要重新做成img文件再燒入。

在ubuntu中執(zhí)行

cd   cd mydroid/build/   envsetup.sh   cd ~/mydroid   cd external/libJNITest/   mm

編譯成功的后會(huì)在下面目錄中生成libJNITest.so文件

~mydroid/out/target/product/generic/system/lib/

Android Jni使用方法步驟(8)在模擬器中執(zhí)行程序

首先要把動(dòng)態(tài)庫(kù)拷進(jìn)/system/lib中。

啟動(dòng)模擬器

adb shell   adb remount   adb push libJNITest.so /system/lib

確認(rèn)拷貝成功。

cd /system/lib   ls

然后不要關(guān)閉模擬器(關(guān)掉再開動(dòng)態(tài)庫(kù)就沒了,因?yàn)槟M器rom是只讀)

執(zhí)行java程序JNITest

會(huì)看到屏幕上打印出

JNITest Native String

關(guān)于Android Jni代碼的示例分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)頁名稱:AndroidJni代碼的示例分析
鏈接URL:http://www.rwnh.cn/article24/gcgeje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、企業(yè)網(wǎng)站制作、虛擬主機(jī)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
湘阴县| 罗江县| 阿勒泰市| 资源县| 绥中县| 行唐县| 开封县| 西丰县| 曲麻莱县| 利津县| 郑州市| 丰顺县| 安乡县| 遂溪县| 昌平区| 元谋县| 肃北| 河东区| 靖远县| 阿城市| 两当县| 汽车| 舒兰市| 遵化市| 麻阳| 田阳县| 岚皋县| 商河县| 抚顺市| 福鼎市| 内丘县| 夏河县| 宜昌市| 卓尼县| SHOW| 苏尼特右旗| 邵阳县| 松原市| 德庆县| 锦州市| 元谋县|