編輯:關於Android編程
在過去的2個月裡,基本定制並評估完了項目所需要的基本需求,圍繞著全志A31和Android4.2.2來實現。最近由於需要,在修改他的Camera的架構中,需要應用程序給HAL透傳一個參數來控制底層圖像處理算法的實現,即需要提供一個合理的API供APP的開發使用。
起初想到的,最簡單有效的方法就是重新定制SDK,但不斷遇到的問題,使得最終切換了部分的思路,但核心沒有發生變化。
Android系統的架構層次分明,在復雜的架構中往往理解以後會變得十分的簡單,現在看來,過去2個多月的時間基本把Camera架構和SurfaceFlinger這兩者有了基本的深入理解,無論是控制流還是數據流,基本都可以定位到源碼的位置,也對最低層的HAL進行了算法的添加,同時最核心的是完成了對A31 Resize模塊的合理調度。
方案1:
1.在Camera.java中添加一個新的API函數,供APP開發。
2.進行API的更新:make update-api;
3.對源碼進行SDK編譯,產生新的android.jar。替換sdk,供eclipse下的APP開發
4. 手動安裝編譯後的APK。
問題:android4.2.2源碼制作SDK會有一個天然的Bug,解決方法如下:
cd frameworks/base git revert 5f9922d7c3bce158e4c7a58929d4075e7c91e32e
但鑒於源碼倉庫不是自己同步所得,故無法進行git操作。目前也不知道這個是否可以徹底解決這個bug的所在。
方案2:
1.在Camera.java中添加一個新的API函數,供APP開發。
2. 進行make update-api的更新。
3.添加帶有新的API到APP,並加入到/package/apps/下,只保留/res,/src, AndroidManifest.xml文件,添加如下的Android.mk:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-subdir-java-files) LOCAL_PACKAGE_NAME := A31Camera LOCAL_PROGUARD_ENABLED := full include $(BUILD_PACKAGE)
4.修改/build/target/product下面的sdk.mk函數
如下添加一行代碼,使得自己的APP作為系統默認的APP應用:
PRODUCT_PACKAGES := \ Calculator \ DeskClock \ Email2 \ Exchange2 \ FusedLocation \ Gallery \ Music \ Mms \ OpenWnn \ libWnnEngDic \ libWnnJpnDic \ libwnndict \ Phone \ PinyinIME \ Protips \ SoftKeyboard \ SystemUI \ Launcher2 \ Development \ DevelopmentSettings \ DrmProvider \ Fallback \ Settings \ SdkSetup \ CustomLocale \ sqlite3 \ InputDevices \ LatinIME \ CertInstaller \ LiveWallpapersPicker \ ApiDemos \ GestureBuilder \ CubeLiveWallpapers \ QuickSearchBox \ WidgetPreview \ monkeyrunner \ guavalib \ jsr305lib \ jython \ jsilver \ librs_jni \ ConnectivityTest \ GpsLocationTest \ CalendarProvider \ Calendar \ SmokeTest \ SmokeTestApp \ rild \ LegacyCamera \ A31Camera
5.make -j8 生成新的system.img。也完成了新的系統APP的定制。
以上兩種方案,前者可以加快app的開發,後者可以完成app直接定制到系統。在本項目中,後者的使用也帶來了一定的便利性。
自己定制系統的好處在於,無處不在的源碼不會讓你的開發以及想法不能繼續下去,當然你也不能違反規定進行胡亂的修改。一路走來,還是能發現閱讀代碼帶來的好處的:能加快代碼的再設計,以及業務流添加位置的定位以及優化等。
做開發的,最基本的調試要會,今天簡單做個步驟,希望對小白有幫助。網上很多教程講的都是使用這個按鈕進行調試今天我只講個簡單的吧。簡單流程:正常Run app也就是用&ldq
現在app基本都有推送的功能,於是看了下百度雲的推送,官方文檔和Demo都很到位,記錄下使用過程,目標是利用百度雲推送最為服務器寫個及時通訊的例子~當然了,
android 向服務器端發送json數據,本文講解的知識點比較基礎,如果你是大神,請直接關閉該網頁,免得浪費你寶貴時間。 1.向服務器端發送json數據 關鍵代碼:
在上一篇文章寫了SAX解析XML,感覺Pull方式和SAX方式非常相似,只是SAX需要一個輔助的類,解析時觸發事件後在回調方法裡面寫代碼,而Pull則通過調