編輯:初級開發
在android系統中,所有安裝到系統的應用程序都必有一個數字證書,此數字證書用於標識應用程序的作者和在應用程序之間建立信任關系,如果一個permission的protectionLevel為signature,那麼就只有那些跟該permission所在的程序擁有同一個數字證書的應用程序才能取得該權限。Android使用Java的數字證書相關的機制來給apk加蓋數字證書,要理解android的數字證書,需要先了解以下數字證書的概念和Java的數字證書機制。android系統要求每一個安裝進系統的應用程序都是經過數字證書簽名的,數字證書的私鑰則保存在程序開發者的手中。android將數字證書用來標識應用程序的作者和在應用程序之間建立信任關系,不是用來決定最終用戶可以安裝哪些應用程序。這個數字證書並不需要權威的數字證書簽名機構認證,它只是用來讓應用程序包自我認證的。
使用zipalign優化APK
根據官方文檔的描述,android系統中Application的數據都保存在它的APK文件中,同時可以被多個進程訪問,安裝的過程包括如下幾個步驟:
Installer通過每個apk的manifest文件獲取與當前應用程序相關聯的permissions信息Home application讀取當前APK的Name和Icon等信息。System server將讀取一些與Application運行相關信息,例如:獲取和處理Application的notifications請求等。最後,APK所包含的內容不僅限於當前Application所使用,而且可以被其它的Application調用,提高系統資源的可復用性。zipalign優化的最根本目的是幫助操作系統更高效率的根據請求索引資源,將resource-handling code統一將Data structure alignment(數 據結構對齊標准:DSA)限定為4-byte boundarIEs。如果不采取對齊的標 准,處理器無法准確和快速的在內存地址中定位相關資源。目前的系統中使用fallback mechanism機制處理那些沒有應用DSA標准的應用程序,這的確大大的方便了普通開發者無需關注繁瑣的內存操作問題。但是相反,對於這樣的應用程序 將給普通用戶帶來一定的麻煩,不但影響程序的運行的效率,而且使系統的整體執行效率下降和占用大量不必要的內存資源,甚至消耗一定的電池資源 (battery life)。
命令行方式手動優化:
利用tools文件夾下的zipalign工具。首先調出cmd命令行,然後執行:zipalign -v 4 source.apk androidres.apk。這個方法不受API Level的限制,可以對任何版本的APK執行Align優化。同時可以利用zipalign工具檢查當前APK是否已經執行過Align優化。命令:zipalign -c -v 4 androidres.apk使用ADT自動優化:
從 ADT 0.9.3版本開始,可以通過export wizard自動對發布的application packages執行align操作。設置方法:鼠標右鍵點擊Project,然後選擇”android Tools” > “Export Signed Application Package…”。綜上所述,可以使用Keytool、Jarsigner、zipalign 給程序簽名並優化程序,這樣就需要三個不同的工具:
keytool -genkey -v -keystore android.keystore -alias android -keyalg RSA -validity 20000
jarsigner -verbose -keystore android.keystore -signedjar android123_signed.apk android123.apk android
zipalign -v 4 android123_signed.apk android123_signed_aligned.apk
當然,也可以通過ADT插件中Export Signed Application Package…來執行,圖形界面更為簡單、形象、直觀。
參考:blog.csdn.Net/zgfee/archive/2009/11/11/4796831.ASPx
Android SDK:androidappdocs.aPPSpot.com/guide/publishing/app-signing.Html
android123.com.cn/androidkaifa/173.Html
yarin.Javaeye.com/blog/549280
androidres.com/index.PHP/2009/10/18/use-zipalign-to-optimize-your-application-packages/
l 使用Intent物件雖然透過Intent並非最快速,但卻是最有彈性的。無論是同一進程或是跨進程的溝通都可以使用它。例如:/* ===== EX-02 ======
下面展示一段在android1.5上讀取手機通訊錄的代碼1 //鏈接通訊錄數據庫 2 ContentResolver content = getContentResol
注冊 android 地圖 API 密鑰運行:keytool -list -keystore ~/.android/debug.keystore用得到的MD5碼到:注冊
Notification通知界面可以用自己定義的界面來顯示。下面是我實現的帶進度條的通知效果下面是主要實現部分代碼,比較簡單直接看代碼可以了。Java代碼nf =new