編輯:關於Android編程
Ant是歷史比較悠久的一個自動化構建工具,Android開發者可以通過它來實現自動化構建,也可以實現多渠道打包,關於apk打包的方式一般有Ant、Python、Gradle三種,這三種打包方式都各自有優點和缺點,本篇博文先給大家介紹如何使用Ant來實現自動構建和多渠道發布。
mac系統下所需要的運行環境也是類似的,我們都需要配置Ant、jdk、sdk的環境變量,我們可以看一下window下是環境變量配了些什麼:
ANT_HOME : D:\android\apache-ant-1.9.4
JAVA_HOME : C:\Program Files\Java\jdk1.6.0_45
ANDROID_SDK_HOME : D:\android\adt-bundle-windows-x86_64-20140321\sdk
PATH: %JAVA_HOME%/bin;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;%ANT_HOME%\bin;
CLASSPATH : .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar
以上環境變量配好之後,你才可以進入下一步,不會配?回家吧,開發不適合你。
下面來簡單描述下apk構建的過程:
1. 使用aapt生成R.java類文件
2. 使用android SDK提供的aidl.exe把.aidl轉成Java文件
3. 使用javac命令編譯.java類文件生成class文件
4. 使用android SDK提供的dx.bat命令行腳本生成classes.dex文件
5. 使用android SDK提供的aapt.exe生成資源包文件
6. 使用apkBuilder.bat生成未簽名的apk安裝文件
7. 使用jdk的jarsigner對未簽名的包進行apk簽名
8. 使用Zipalign工具對apk進行優化
我們從上面的描述可以知道apk具體的步驟和使用到的工具,對應的工具在sdk中都可以找到,自己去翻翻吧,但你會發現新的sdk版本,aapt被放到了build-tools目錄下,apkBuilder.bat文件在tools目錄找不到了,你可以去網上去下一個,然後放到tools目錄下。為了讓大家更清楚apk構建的過程,放上官方的一張圖:
有了這張圖,相信大家已經清楚了apk到底是如何生成的吧,不多說了。
示例命令:
aapt package -m -J
命令解釋:
-f 如果編譯出來的文件已經存在,強制覆蓋
-m 使生成的包的目錄存放在-J參數指定的目錄
-J 指定生成的R.java 的輸出目錄
-S res文件夾路徑
-A assert文件夾路徑
-I 某個版本平台的android.jar的路徑
-F 具體指定APK文件的輸出
示例命令:
aidl -p<framework.aidl路徑> -I
注意:命令和路徑是沒有空格的。
示例命令:
javac -d destdir srcFile
參數解釋:
-d 指定存放類的文件夾
-bootclasspath 覆蓋引導類文件的位置
-encoding 指定源文件使用的編碼
-sourcepath 指定查找輸入源文件位置
dx --dex --output classes.dex bin/classes/ libs/
命令解釋:將bin/classes下的class文件和libs下的jar文件編譯成classes.dex文件
aapt生成資源包文件resources.ap_命令示例:
aapt package -m -J -S -I -A -M -F
示例命令:
java -cp com.android.sdklib.build.ApkBuilderMain <未簽名.apk> -v -u -z bin\resources.ap_ -f bin\classes.dex -rf src
jarsigner -verbose -keystore -signedjar -<輸出簽名apk路徑> <未簽名apk路徑>
示例命令:
zipalign [-f] [-v] infile.apk outfile.apk
上面的8個步驟就是實現apk構建的過程,都是通過命令來一步一步實現,要注意每一步生成的東西。
本篇博文主要給大家介紹了Android中apk構建的過程,也詳細的講解了每一步具體的命令操作,由於不想一篇把所有東西堆在一起,我將會在下一篇來具體使用Ant腳本實現自動化構建和多渠道打包,大家可以繼續關注。
目前64bit android系統也慢慢的多了,看到也有apk聲稱支持64bit system,然後就往裡面打包搞了個arm64-v8a 目錄,放了個64bit的so,但
在這篇文章中Android React Native的使用細節問題提到了 圖片使用的問題,也提到了無論用哪種方法都不能加載app內部的圖片資源的問題,當時的代碼是這樣子的
快三個月了沒寫博客了,因為工作調動,很多經驗、心得都沒有時間記錄下來。現在時間稍微充裕了點,我會盡量抽時間將之前想寫而沒寫的東西補上。進入正題。去年某個時候,我偶然看到一
我也來說說android master key 漏洞,官方稱為ANDROID-8219321。 先是在看雪上看到android