java生成apk工具,生成并运行apk流程
生成和運行apk文件相關的組件:
apk文件的編譯流程圖如下:
下面逐一說明:
項目的源文件結構如下:
E:\Example\
│??AndroidManifest.xml
│
├─assets
├─res
│??├─drawable-hdpi
│??│??????icon.png
│??│
│??├─drawable-ldpi
│??│??????icon.png
│??│
│??├─drawable-mdpi
│??│??????icon.png
│??│
│??├─layout
│??│??????main.xml
│??│
│??└─values
│??????????strings.xml
│
└─src
└─net
└─claudxiao
└─example
Example.java
1、從res生成R.java
mkdir gen
aapt package -f -m -J gen -S res -I “E:\Program Files\Android\android-sdk-windows\platforms\android-7\android.jar” -M AndroidManifest.xml
其中,-f將覆蓋已有結果,-m -J gen指定輸出路徑,-S指定資源文件目錄,-I指定要包含的包,-M指定AndroidMenifest.xml文件。
2、將.java編譯為.class
mkdir bin
javac -encoding GB18030 -target 1.6 -bootclasspath “E:\Program Files\Android\android-sdk-windows\platforms\android-7\android.jar” -d bin src\net\claudxiao\example\Example.java gen\net\claudxiao\Example\R.java
其中,-target指定類文件的虛擬機版本,-bootclasspath覆蓋引導類文件的位置,-d指定輸出路徑。
3、將.class編譯為classes.dex
dx.bat –dex –output=E:\Example\bin\classes.dex E:\Example\bin
注意這里必須用絕對路徑。
4、將資源文件打包
aapt package -f -M AndroidManifest.xml -S res -A assets -I “E:\Program Files\Android\android-sdk-windows\platforms\android-7\android.jar” -F bin\resources.ap_
-F指定輸出的apk文件。
5、打包成未簽名apk文件
apkbuilder.bat E:\Example\bin\Example_unsigned.apk -u -z E:\Example\bin\resources.ap_ -f E:\Example\bin\classes.dex -rf E:\Example\src
這個命令的常用格式為:
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}
參數必須使用絕對路徑。
此外,運行后提示這一工具即將被廢棄,但我沒有找到新的替代工具是什么。
6、生成一個簽名
keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore android.keystore
當前目錄下生成了一個android.keystore文件
7、對apk文件簽名
jarsigner -keystore E:\Example\android.keystore -storepass claudxiao -keypass claudxiao -signedjar E:\Example\bin\Example.apk E:\Example\bin\Example_unsigned.apk android.keystore
這個命令的常用格式為:
jarsigner -keystore ${keystore} -storepass ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}
至此,bin\Example.apk就是一個可以安裝的apk文件了。作為對比,現在的目錄結構如下:
E:\Example\
│??android.keystore
│??AndroidManifest.xml
│
├─assets
├─bin
│??│??classes.dex
│??│??Example.apk
│??│??Example_unsigned.apk
│??│??resources.ap_
│??│
│??└─net
│??????└─claudxiao
│??????????└─example
│??????????????????Example.class
│??????????????????R$attr.class
│??????????????????R$drawable.class
│??????????????????R$layout.class
│??????????????????R$string.class
│??????????????????R.class
│
├─gen
│??└─net
│??????└─claudxiao
│??????????└─example
│??????????????????R.java
│
├─res
│??├─drawable-hdpi
│??│??????icon.png
│??│
│??├─drawable-ldpi
│??│??????icon.png
│??│
│??├─drawable-mdpi
│??│??????icon.png
│??│
│??├─layout
│??│??????main.xml
│??│
│??└─values
│??????????strings.xml
│
└─src
└─net
└─claudxiao
└─example
Example.java
8. 對齊
如果apk是Release模式,則必須使用zipalign工具進行對齊,對齊可減少內存使用。
總結
以上是生活随笔為你收集整理的java生成apk工具,生成并运行apk流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓+php推,使用 PHP 消息队列实
- 下一篇: oracle11g 查看磁盘,oracl