最近做了一個項目,需要實現終端無人操守自動升級,但發現android2.2中對之前的安裝類都隱藏了。無奈之下去網上找資料,經過不懈的努力終於搞定了。
首先要解決的問題是如何調用已經隱藏的API、解決辦法是:
編譯源碼后會在out\target\common\obj\JAVA_LIBRARIES\framework_intermediates\下生成一個classes.jar的文件。把它加到項目的Library中。
具體步驟是:
1.在Eclipse中選中項目點右鍵選擇“Properties” 在彈出窗口左邊選擇Java Build Path, 然后選擇右邊的Libraries選項卡。
2.刪除其中的Android2.2 library,然后Add Library -> User Library 新建一個庫把剛才的classes.jar 與 android.jar再添加進來 注意先后順序,classes.jar放在前。
這時在項目中就可以引入那個隱藏的API了。前面這一步驟的作用是可以引用看到隱藏的API,在類中引用時不會報錯。
其次、經過上面的步驟后這時不要在eclipse中打包apk 會出現問題。這時把寫好的代碼拷到源碼環境中去通過mmm 命令編譯成apk.其中涉及到android.mk的編寫。
mmm命令:
$:source build/envsetup.sh
$:mmm apktest/xxx
apktest 是自己創建的目錄xxx代表項目
如果一切順利會在:out/target/product/generic/data/app下看到編譯成的apk文件。
代碼實現和android.mk編寫 我參考了這個帖子:
http://hi.baidu.com/6936995/blog/item/eca4436387a80d7b0d33fa31.html
最終問題解決了。