當前位置:編程學習大全網 - 編程語言 - 如何入手學習android 底層開發

如何入手學習android 底層開發

android 底層開發學習:

壹、基於Android的CPU+GPU的異構編程開發,目前主要有以下幾種平臺:

1. OpenCL

在桌面系統和大規模並行計算領域被普遍使用的壹種底層API。最近壹段時間,主流的芯片廠商的旗艦或準旗艦芯片都開始支持OpenCL1.1或者1.2標準,包括高通,三星, 聯發科,Rockchip等廠商的芯片,都可以找到OpenCL的支持。

2. CUDA

目前只有NVIDIA自己出的基於Tegra K1芯片的設備(NVIDIA Shield)支持CUDA,所以支持的面比較窄。

3. RenderScript (RS)

Google力推的異構編程,宗旨是由平臺幫妳選擇運行的處理器,也就是說妳是不知道妳的程序跑在CPU還是GPU上的,這是由系統的驅動來決定的。想法是美好的,可現實是開發者並不買RS的帳, 大家覺得RS的性能不可控,靈活性太差,其文檔之缺乏也被人詬病;此外,芯片廠商對於RS的優化都還普遍處於比較低階的水平,這些都導致了RS在實際應用中很少被用到。

二、由於OpenCL的普及程度,以下部分只針對OpenCL展開。

目前支持OpenCL的設備和芯片

1. 支持OpenCL的GPU

高通幾乎全系的GPU, 包括但不限於以下GPU (Adreno 305, 320, 330, 405, 420, 430, 530 ...)

ARM Mali的6系和7系GPU, 比如T628, T760

2014年以來較新的Imagination PowerVR GPU,比如G6430

2. 支持OpenCL的芯片。以下是壹個很粗略地列舉了主要的支持OpenCL的芯片。

高通8064, 8974(驍龍800,801), 8084(驍龍805), 8994(驍龍810)等

三星 Exynos獵戶座 5420, 5433 (內置ARM Mali GPU)

聯發科 MT6752 (內置ARM Mali T760 GPU)

瑞芯微 RK3288 (內置ARM Mali GPU)

3. 支持OpenCL的手機和平板。 這個就數不勝數了,下面只隨手給出幾個例子以供參考。(註意:Google Nexus系列的手機或平板,雖然硬件上支持OpenCL,但因為刪掉了OpenCL的驅動程序,所以基本都不支持OpenCL;值得註意的是,據國外blog上報道,可以將相應的OpenCL驅動推送回設備以重新開啟OpenCL的支持, 詳見maxlv.net 的頁面)

三星 Galaxy S4, S5, S6, Note 3, Note 4

LG G2, G3, G4

HTC One M7, M8, M9

小米使用高通芯片的手機和平板

魅族M1 Note

臺積電P90HD

等等等等。。。。

如果不確定手頭的設備是否支持OpenCL, 可以使用OpenCL-Z Android進行檢測,這款軟件可以顯示詳細的OpenCL的設備信息,同時運行micro-benchmark檢測設備的計算能力。

三、需要掌握的知識:

1. 簡單的GPU基本知識

2. OpenCL並行程序設計

3. Android NDK知識

4. Android JNI接口的編寫

5. 簡單的Android程序開發知識

四、開發的步驟(這裏只是步驟的精簡版本,只闡述操作,不進行解釋):

1. 編寫OpenCL的C/C++程序實現GPU的核心計算代碼

2. 用Android NDK編譯之前寫的C/C++代碼。這壹階段可以在純C/C++環境下工作,可以編寫main函數測試實現的功能,用NDK將代碼編譯為可執行的代碼(BUILD_EXECUTABLE), 然後用ADB將可執行程序推送到設備上運行。運行可執行程序要求設備具有root權限,如果沒有root權限,可以通過Native Program Launcher (AndroidNativeLauncher · GitHub,可能需要翻墻) 這壹工具在設備上執行二進制代碼。

3. 上壹階段測試結束,功能基本正常。開始編寫JNI接口。

4. 開始編寫Android應用程序,使用JNI封裝native函數。編譯C/C++代碼成動態鏈接庫。

5. 在Android程序裏,以靜態方式加載上壹步編譯的動態鏈接庫。

6. 在需要的地方(比如點擊按鈕事件),調用相應的native函數,即可實現相應的功能。

  • 上一篇:數字雕塑
  • 下一篇:技術與藝術的碰撞
  • copyright 2024編程學習大全網