1. 如何解包/編輯/打包android系統的boot.img文件
Android產品中,內核格式是linux標準的zImage,根文件系統採用ramdisk格式。這兩者在Android下是直接合並在一起取名為boot.img,會放在一個獨立分區當中。這個分區格式是Android自行制定的格式。Android開發時,最標準的做法是重新編譯於內核和根文件系統,然後調用Android給的命令行文件mkbootimg(out/host/linux-x86/bin/)來打包。 在製作手機ROM時,有時會單獨編譯內核或抽出根文件進行修改內容,比如我只編譯內核,其餘的地方不變。這樣重新安裝巨大的Android開發環境實在不劃算。因此很多boot.img解包工具被人開發出來,這一些工具都是把內核和根文件系統從一個現成的boot.img抽取出來,修發後再次打包還原。一.常見的解包工具因為boot.img的格式比較簡單,它主要分為三大塊(有的可能有四塊)因此很多人開發分析工具,有是linuxshell腳本,比如repack-zImage,也有人採用perl,還有C語言編寫的unbootimg, 我使用的是在源碼位置system/core/mkbootimg/下的mkbootimg。為了簡化,藍點工坊把與mkbootimg中打包工具和解包工具以及所包含的libmincrpty庫抽出來,並且重寫一個Makefile,作為開源項目。使用者只需要在linux(需安裝gcc,make,一般是標配)或windows(需要安裝mingw)的命令行執行make,即可產生可執行文件mkbootimg,unpackbootimg。二.解/打包工具使用解包工具:unpackbootimg常見格式 unpackbootimg-i.\tmp\boot.img-o.\out 這一句命令行表示把boot.img解包,所有文件輸出到out目錄下它會解壓出如下文件:boot.img-zImage(內核文件)boot.img-ramdisk.gz(根文件系統打包文件) boot.img-cmdline(mkbootimgcmdline參數) boot.img-pagesize(mkbootimgpagesize參數) boot.img-base(mkbootimgbase參數)打包工具:mkbootimg(Android自帶)常見的命令格式: ./mkbootimg --cmdline'no_console_suspend=1console=null' --kernel zImage --ramdisk boot/boot.img-ramdisk.gz -o boot.img--base02e00000 這句含義是把內核文件zImage和boot目錄下的根文件壓縮包boot.img-ramdisk.gz打包成boot.img. 其中cmdline和base的值均來源於unpackbootimg的結果
2. 寫好的android項目怎麼打包成Apk文件
1.)生成keystore
按照下面的命令行 在C:Program Filesjavajdk1.6.0_10in>目錄下,輸入keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore
參數意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵 都算密碼。
命令執行後會在C:Program FilesJavajdk1.6.0_10in>目錄下生成android.keystore文件。如圖-1
最終生成的apk文件
3. 如何反編譯android應用並重新打包
反編譯android步驟入下:
第一:使用apktool直接反編譯apk
第六:把生成的hellodemo.apk安裝到手機,可以看到主界面上已經顯示的是hello,而不再是你好。說明反編譯重新打包成功!
4. 命令行指定類打包成dex文件
生成了jar後,我們就可以採用命令來生成對應的dex了,我們採用dx命令來生成,這里命令主要在Android sdk下bulid-tools中的dx工具。
出現這個問題是打包生成jar的時候,直接復制了test.class文件到D盤,路徑是test.class與Test.java裡面的packagename不匹配,只需要乎伍碼把com包整個復制出來就ok了。然後使用 jar cvf D:\test.jar D:\歲哪com\demo\Test.class 命令就可以了。(下面也有另一種命令,完成.classs to .dex)
這里只是演示如何分步打包得到dex文件,其實使用gradle命令更加簡橘知單方便。
tip:工程目錄存放在命名中有空格的路徑下面(如:Program Files),Program Files需要使用「 」包裹,否則在讀取class文件或者寫入dex到該目錄會失敗。
另外有命令直接由.class 生成 .dex文件,其中 dx.jar 在 D:\Program Files"\Android\Sdk\build-tools\28.0.3\lib 下面,需要使用絕對路徑