https://blog.csdn.net/annaload/article/details/42008257
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
留言列表