中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Android Jni代碼的示例分析

發布時間:2021-11-11 15:58:25 來源:億速云 閱讀:151 作者:柒染 欄目:移動開發

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

在Android 模擬器中可以對Android手機操作系統進行適當的修改,增加各種功能,以滿足用戶的需求。那么今天我們會為大家帶來Android Jni的相關使用方法,以方便大家對這一系統的解讀。Android的應用程序(Dalvik VM)中使用JNI(Java Native Interface)調用C/C++開發的共享庫。

開發環境

  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. 應用程序名 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)編譯生成動態庫

新建文件夾

~/mydroid/external/libJNITest

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

* 需要注意的是把PRELINK_MOUDULE設置成false

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

在ubuntu中執行

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

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

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

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

首先要把動態庫拷進/system/lib中。

啟動模擬器

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

確認拷貝成功。

cd /system/lib   ls

然后不要關閉模擬器(關掉再開動態庫就沒了,因為模擬器rom是只讀)

執行java程序JNITest

會看到屏幕上打印出

JNITest Native String

關于Android Jni代碼的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

沐川县| 广水市| 衡东县| 伊通| 深州市| 民和| 南投县| 仁布县| 岗巴县| 文登市| 昌都县| 黄山市| 犍为县| 瑞金市| 揭西县| 延边| 法库县| 化州市| 石林| 萝北县| 开原市| 肇东市| 苍溪县| 宜良县| 蓬安县| 佛冈县| 丹阳市| 海宁市| 昌平区| 闽侯县| 稷山县| 云霄县| 集贤县| 兴海县| 新密市| 平定县| 吉首市| 沈阳市| 溆浦县| 台南市| 恩平市|