檔案格式
格式定義
在Android平台中dalvik vm的執行檔案被打包為apk格式,最終運行時載入器會解壓然後獲取編譯後的androidmanifest.xml檔案中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk檔案傳到/system/app資料夾下會發現執行是不受限制的。安裝的檔案可能不是這個資料夾,而在androidrom中,系統的apk檔案默認會放入這個資料夾,它們擁有著root許可權。
檔案結構
1. META-INF\ (註:Jar檔案中常可以看到);
2. res\ (註:存放資源檔案的目錄) ;
3. AndroidManifest.xml (註:程式全局配置檔案) ;
4. classes.dex (註:Dalvik位元組碼);
5. resources.arsc (註:編譯後的二進制資源檔案)。
開發環境
Android是一個基於Java的開發環境,它是一種與廣被接受的 Java極為類似,而且也比C++容易得多的開發語言,這是一種規範的移動開發環境。Google也在API文檔的書寫和樣例的提供上做了很出色的工作。
獲取SDK
下載並安裝android的SDK[軟體開發套件],這套SDK主要包括有核心庫檔案,一個模擬器,開發工具和一些示範的樣例檔案。推薦使用Eclipse 和androideclipse 擴展。如果只是使用android,Eclipse IDE就已經足夠了,但如果是第一次開發Java套用,建議下載完整的Java SE 開發工具 (JDK) 因為它包括簽發應用程式所需要的工具。
套用架構
android套用架構很關鍵,如果不學習它,設計出來的遊戲將是一種很難修復bug的產品。 需要了解應用程式、活動、Intents以及它們是如何互相聯繫互動的,Google在這兒提供了良好的信息架構。真正重要的是,要理解為什麼在設計的遊戲中需要不止一個的活動進程以及如何設計一個用戶體驗良好的遊戲。這些都應當配合到套用的生命周期中。
套用的生命周期
套用的生命周期是由AndroidOS作業系統進行管理的活動進程都將做為系統命令進行創建,正確處理這些事件對一個應用程式來說是極為重要的,因為終端用戶不會知道什麼是正確的。最好在開始設計遊戲之前搞明白這些,因為這有助於節省調試時間以及避免代價高昂的重新設計。對大多數套用而言,默認設定即可開始工作,但對遊戲而言,可能需要調整單態實例的信號為打開。在默認情況下,Android會新建一個活動實例進程,因為它認為這是比較合適的,而遊戲,可能只希望有一個活動的實例進程,這有一點兒影響,它需要了解一些系統狀態的管理。
apk反編譯
apk反編譯就是通過使用apk編譯工具將apk檔案中的源檔案和資源反編譯出來,得到的源檔案和資源檔案可以進行處理後再進行編譯,以達到個性化定製,漢化apk等目的。
apk反編譯工具
1、最典型的apk編譯工具的核心是apktool,但是因為操作需要調用cmd命令,所以出現了很多具有可視化界面的各種編譯工具,像easyapk,apkdb,doapk
2、dex2jar.jar,將apk中的classes.dex轉化成Jar檔案,再通過jd-gui工具反編譯jar檔案。
apk編譯方法
使用apkdb編譯apk檔案只需要在安裝apkdb後直接右擊反編譯就可以將apk檔案反編譯出來
1、使用原生apktool工具,需要將apktool的兩個檔案釋放到window目錄下,在cmd中使用 apktool d apk檔案名稱 命令來編譯apk檔案,此時命令行的執行目錄與apk檔案所在目錄必須一致。
2、首先將apk檔案,將後綴改為zip,解壓,得到其中的classes.dex,它就是java檔案編譯再通過dx工具打包而成的;將classes.dex複製到dex2jar.bat所在目錄。在命令行下定位到dex2jar.bat所在目錄,運行 dex2jar.bat classes.dex。