標籤:
Android PDK,NDK,SDK都是做什麼的?三個詞應該是在軟體開發領域通用的,它們的全稱分別為:SDK(Software Development Kit)PDK(Platform Development Kit)NDK(Native Development Kit)1.SDK 軟體開發套件
一般平台都會發布自己的SDK,SDK包含該平台為應用程式開發人員提供的開發工具,主要是所有公開API
的集合,應用程式開發人員可以藉助SDK中的API快速的進行應用的開發。
Android SDK針對所有安卓應用開發人員開放,下載ADT查看sdk目錄如下:
sdk
├── add-ons
├── build-tools
├── extras
├── platforms
├── platform-tools
└── tools
SDK檔案目錄解釋:
1) add-ons 這裡儲存一些附加庫,例如GoogleMaps
2) build-tools 這裡放的是Android的一些重要的編譯工具,比如aapt、aidl、逆向調試工具dexdump和編譯指令碼dx等
3) extras 存放的是幾次大的升級添加的新功能相關的static library,如android-v4,android-v7,android-v13
4) platforms 存放的是平台真正的SDK,其中會根據APILevel來區分SDK的版本,命名規則android-APILevel,如android 4.4
SDK的檔案夾名稱為android-20,其檔案目錄如下:
├── android.jar
├── build.prop
├── data
├── framework.aidl
├── sdk.properties
├── skins
├── source.properties
├── templates
└── uiautomator.jar
該目錄下主要檔案android.jar為該版本framework的主要檔案,包括class,圖片等;
data目錄下為系統的資源檔,包括字串資源,fonts字型庫檔案,activity broadcast的action記錄,intent的category,
widget的列表等內容;skins目錄為Android模擬器的皮膚資源;templates目錄下為建立Android工程預設範本,包括
AndroidManifest.xml,java檔案,launch表徵圖等;
5) platform-tools 此目錄主要放置的是平台工具,如adb, fastboot, sqlite3等
6) tootls 這個目錄中有比較重要的調試工具,如ddms(包括一些),Android模擬器的主程式emulator,traceview效能最佳化工具,
UI控制項掃描工具uiautomatorviewer,UI層級顯示工具hierarchyviewer,代碼混淆工具proguard,ant編譯指令碼,代碼缺陷
掃描工具lint等,這個目錄下也有個templates目錄,簡單看了下不太明白是幹什麼用的,有興趣的可以瞭解一下。
2.PDK 平台開發套件(夥伴開發套件)
PDK主要針對系統和平台開發的人員,有的部落格上說PDK對於解決Android片段化有一定的作用,在PDK推出之前,未能參與Google
早期開發裝置計劃的OEM廠商和半導體供應商必須等到Android開源版本公布後,才能開始進行開發。而從Jelly Bean,也就是Android
4.1版本開始Google在發布新的Android版本之前會Release給與其簽約過的OEM廠商和半導體供應商PDK(PDK的擷取需要授權,因為
PDK中的新版Android尚未正式發布),這樣OEM廠商不會再落後於Google挑選的獨家早期開發夥伴。原來的時候,只有Google的自有品
牌Nexus裝置才能成為市場領先者,但以後的情況可能不一定會如此,因為會有許多積極的OEM 廠商也能藉助PDK快速推出新版產品。
這個就是PDK的作用,加快OEM廠商的update速度,不然Android的新版本的使用率會跟不上更新的速度。
這個PDK中會有一些平台的少量Code,以及一些binary檔案,能夠是系統工程師儘快的進行本平台的一些驅動的開發,調試,以及一些
平台的新功能開發,至於PDK的詳細檔案目錄以及檔案內容我暫時不太清楚。
3.NDK 原生開發套件(這個我翻譯得比較蹩腳)
Android的SDK是中的API都是java的,眾所周知,安卓應用跑在dalvik/ART上,所以第三方應用基本上只能通過java來進行開發,如果
想要通過C來開發,需要通過JNI來實現,個人理解由於C/C++上有很多成熟的庫可以用,所以Google開闢的NDK,可以使得C/C++的
應用也能直接在Android上跑起來,但是這裡面也存在技術障礙,比如程式更加複雜,相容性難以保障,無法訪問Framework API,Debug
難度更大等,開發人員需要自行斟酌使用。NDK官方說明
我沒有進行過NDK的開發,查閱到NDK的講述有一篇特別詳細的部落格,有興趣或這需求的可以根據該blog學習一下。
如果有更多關於NDK的問題可以到NDK論壇找找看。
參考文章:
1.http://www.cnblogs.com/Soprano/articles/2559332.html
2.http://www.eet-china.com/ART_8800676827_617693_NT_2debd506.HTM
3.http://www.oschina.net/p/android+ndk
Android SDK PDK NDK詳解