日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

《Android的设计与实现:卷I》——第2章 框架基础JNI

發布時間:2025/6/15 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Android的设计与实现:卷I》——第2章 框架基础JNI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第2章 框架基礎JNI

JNI(Java Native Interface,Java本地接口)是Java平臺上定義的一套標準的本地編程接口。JNI允許Java代碼與本地代碼互操作,即Java代碼可以調用本地代碼,本地代碼也可以調用Java代碼。所謂本地代碼指的是用其他編程語言(如C/C++)實現的、依賴于特定硬件和操作系統的代碼。通過JNI調用本地代碼,可以實現Java語言所不能實現的功能。在Android平臺上,Dalvik虛擬機會實現JNI定義的接口。

2.1 JNI在Android系統中所處的位置

Android采用分層的體系結構:上層的應用層和應用框架層主要使用Java語言開發;下層則運行一個Linux內核,并在內核之上集成了各種核心庫和第三方庫,以提供系統運行所需的服務,這部分是用C和C++語言開發。連接這兩部分的紐帶就是JNI。
JNI在Android系統中所處的位置如圖2-1所示。


從圖2-1中可以看出,JNI可以直接調用本地代碼庫,并可以通過Dalvik虛擬機實現與應用層和應用框架層之間的交互。Android JNI部分的代碼主要位于Android體系結構中的上面兩層:

應用層:采用NDK開發,主要使用標準JNI編程模型實現。

應用框架層:Android定義了一套JNI編程模型,使用函數注冊方式彌補了標準JNI編程模型的不足。

Android應用框架層JNI部分源碼主要位于frameworks/base/目錄下。按照模塊組織,不同的模塊將被編譯為不同的共享庫,分別為上層提供不同的服務。這些共享庫最終會被放置在目標系統的/system/lib目錄下。

注意 NDK與JNI的區別: NDK是為便于開發基于JNI的應用而提供的一套開發和編譯工具集;而JNI則是一套編程接口,可以運用在應用層,也可以運用在應用框架層,以實現Java代碼與本地代碼的互操作。

JNI編程模型的結構十分清晰,可以概括為以下三個步驟:
步驟1 Java層聲明Native方法。
步驟2 JNI層實現Java層聲明的Native方法,在JNI層可以調用底層庫或者回調Java層方法。這部分將被編譯為動態庫(SO文件)供系統加載。
步驟3 加載JNI層代碼編譯后生成的共享庫。
JNI的很多概念比較模糊,為了不引起歧義,這里規定本書中的涉及名詞的含義。

native:特指Java語言中的方法修飾符native。

Native方法:特指Java層中聲明的、用native修飾的方法。

JNI層:特指采用JNI技術實現Java層聲明的Native方法的部分。

JNI函數:特指JNIEnv提供的函數。

JNI方法:特指Native方法對應的JNI層實現方法。

了解了JNI的主要概念和基本結構,下一節將以一個實例詳細分析JNI編程的三個步驟。

總結

以上是生活随笔為你收集整理的《Android的设计与实现:卷I》——第2章 框架基础JNI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。