精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

東坡下載:內容最豐富最安全的下載站!

首頁IT技術常見問題 → Android中APK打包流程

Android中APK打包流程

相關文章發表評論 來源:本站整理時間:2018/5/22 10:44:13字體大。A-A+

更多

作者:專題點擊:71次評論:0次標簽: APK打包流程

aapt: android application package tool,SDK

(Android打包流程圖)

#Android打包流程

1.通過aapt工具將 資源文件(res)、清單文件(AndroidManifest.xml)生成對應的R.java文件

* 在項目的根目錄下新建 gen目錄,并且依次在gen目錄下新建清單文件總包名對應的文件目錄

> 例如: 清單文件中包名是org.zdc.android,那么就在gen目錄中新建目錄結構為

> gen/org/zdc/android

* 通過命令生成R.java

aapt package -f -m -J [gen目錄] -S [res目錄] -I [android.jar目錄] -M [AndroidManifest.xml目錄]

2. 通過aidl工具 將 aidl文件轉化為java文件

aidl -I[src目錄] -p[aidl框架環境文件(framework.aidl)] -o[aidl輸出目錄(gen)] [要轉換的aidl文件(your.aidl)]

3. 通過javac工具,將*.java文件轉化為*.class文件

javac -encoding [編碼] -target [版本(1.6 or 1.7)] -bootclasspath [android.jar] -cp [依賴的jar(多個用;隔開;結尾)] -d [class文件輸出目錄] [要編譯的java文件(多個用空格分開)]

4. 將libs下的jar解壓到輸出目錄中

jar xvf [jar文件]

5. 通過dex命令 將class文件轉換為dex文件

dx.bat --dex --output=[全路徑的輸出文件(classes.dex)] [全路徑的class文件對應的目錄]

> [全路徑的class文件對應的目錄] : 如果此目錄依賴了其他的jar文件,需要用 `|`分隔開

> 命令: dex.bat --dex --output=輸出路徑 需要轉換的class文件對應的路徑

6. 通過aapt工具生成資源文件包

aapt package -f -M [清單文件(AndroidManifest.xml)] -S [資源文件目錄(res)] -A [資產文件目錄(assets)] -I [android環境jar(android.jar)] -F [輸出的文件(resoures.ap_)]

7. 生成未簽名的apk安裝文件

apkbuilder [apk輸出路徑] -u -z [打包好的資源文件全路徑] -f [全路徑dex文件]  -rf  [src全路徑]  -rj  [全路徑的libs目錄]

8. 生成簽名的apk安裝文件

* 生成簽名文件

keytool -genkeypair -alias zdc -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore zdc.keystore

>  -alias : 簽名的別名

>  -validity : 簽名的時效

>  -keyalg : 加密的算法,一般都用RSA

>  -keystore : 生成的簽名路徑

>  -keypass : 密鑰庫的密碼

>  -storepass :密鑰的密碼

* 通過簽名文件給apk文件進行簽名

jarsigner -keystore 簽名文件 -keypass 簽名密碼 -storepass 簽名文件的密碼 -signedjar 生成的簽名文件 未簽名的文件 簽名的別名

# 命令詳解

* package 命令: 打包編譯android資源

aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \

[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \

[--min-sdk-version VAL] [--target-sdk-version VAL] \

[--max-sdk-version VAL] [--app-version VAL] \

[--app-version-name TEXT] [--custom-package VAL] \

[-I base-package [-I base-package ...]] \

[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] \

[-S resource-sources [-S resource-sources ...]] [-F apk-file] [-J R-file-dir] \

[raw-files-dir [raw-files-dir] ...]

> []的參數都是可選參數。

> __[-d]:  指定一個或多個設備的資源文件被添加,多個資源文件用逗號隔開__

> __[-f]:  是否覆蓋已經存在的文件(添加此參數即為覆蓋,否則不覆蓋)__

> __[-m]:  打包資源的文件目錄,目錄地址是`-J`參數指定__

> __[-J]:  知道R文件生成的目錄__

> __[-S]:  需要打包的資源文件目錄__

> __[-I]:  指定環境android.jar的文件目錄__

> __[-M]:  清單文件的路徑__

#指令打包之R文件生成

1、API文檔路徑:

develop  ->  tools  ->  buid system(打包系統,主要介紹打包的原理過程)  ->  查看流程圖

2、AAPT:Android Application Package Tool  android應用打包工具

路徑:sdk -> buildtools – 版本 -> aapt

操作步驟:

①配置java環境,建議使用JDK1.6,因為JDK1.7/1.8對指令操作有缺陷。

②拷貝工程到CMD文件夾(自己創建),刪除工程中自動生成的目錄和文件(.setting、bin、gen、.classpath、.project)。

3、使用指令進行操作

①在當前工程根目錄下中創建gen目錄,在gen目錄下根據工程包名創建不同的目錄。

②CMD指令進入到當前工程的目錄下

③執行命令

aapt package -f -m -J gen -S res -I ...\sdk\platforms\android-16\android.jar -M AndroidManifest.xml

#.aidl轉java文件

1、工具指令路徑:sdk -> platform-tools -> aidl.exe

2、framework.aidl路徑:sdk -> platforms -> android-14 –>framework.aidl

3、使用指令

aidl -Isrc -pD:\...\sdk\platforms\android-16\framework.aidl -ogen 項目路徑\src\aidl目錄\ITelephony.aidl

注意:有的aidl不會產生java文件

#指令打包之java轉class

1、Application source code:應用源碼,指的就是我們工程中.java文件,比如src下的文件等等。

2、Java Compiler:java編譯器,R.java、Application source code和java InterFaces是通過java編譯器編譯成.class文件的

3、操作指令:

①在工程的根目錄下創建bin目錄,在bin目錄中classes目錄

②使用指令進行操作

javac -encoding utf-8 -bootclasspath D:\...\sdk\platforms\android-16\android.jar -cp libs\android-support-v4.jar; -d bin\classes .\gen\cn\zdc\packagedemo\R.java

4、解壓jar包

因為jar包或者庫文件也在我們工程中的,所以在轉化的時候需要將jar包或者庫文件中的class文件一起轉化成dex

①進入到bin目錄下的classes目錄下

②使用指令(兩個依次使用)

jar xvf ..\..\libs\nineoldandroids-2.4.0.jar

#指令打包之class轉dex

1、將class文件轉化成dex文件

①使用指令進入到工程的bin目錄下的classes目錄中

②使用指令

dx --dex --output=項目路徑\bin\classes.dex 項目路徑\bin\classes

#指令打包之生成未簽名的apk

1、打包Apk需要三個元素

①編譯后的資源文件

②dex文件

③其他資源

2、操作步驟:

①得到編譯后的資源文件,使用指令

aapt package -f -M AndroidManifest.xml -S res -A assets -I D:\...\sdk\platforms\android-16\android.jar  -F bin\resources.ap_

②使用dex和.ap_資源打包Apk

需要使用apkbuilder工具,路徑:sdk\tools\apkbuilder.bat

指令:

apkbuilder 項目路徑\bin\mobliesafe.apk -u -z 項目路徑\bin\resources.ap_ -f 項目路徑\bin\classes.dex -rf 項目路徑\src -rj 項目路徑\libs

3.注意:這個打包的apk是不能安裝的,因為android系統安裝apk需要知道apk的簽名

#指令打包之生成簽名的apk

打包一個簽名的apk需要兩步操作

1.生成簽名文件

2.根據簽名文件進行打包的apk

操作步驟:

1.生成簽名文件

①指令工具路徑:Java -> jdk -> bin -> keytool.exe

②使用指令進入到工程的根目錄下

③使用指令

keytool -genkeypair -alias zdc -keyalg RSA -validity 3650 -keypass 123456 -storepass 123456 -keystore zdc.keystore

2.根據簽名文件進行打包的apk

①指令工具路徑:Java -> jdk -> bin -> jarsigner.exe

②使用指令

jarsigner -keystore zdc.keystore -keypass 123456 -storepass 123456 -signedjar bin\mobliesafe_signed.apk bin\mobliesafe.apk zdc

#ant介紹

1.環境變量配置

ANT_HOME ....\apache-ant-1.9.6-bin

Path %ANT_HOME%\bin

2.校驗

ant -help  或者 ant -version

#ant基本操作

1.腳本必須寫在build.xml中

2.常用標簽

project根標簽    name: 項目名稱。必填    baseDir: 指定當前目錄。(選填)    default: 默認執行的任務。 (選填)Target任務標簽 name: 任務名稱。必填echo輸出打印標簽message:指定打印的內容示例:<?xml version="1.0" encoding="utf-8"?><project name="test01"> <target name="helloworld"> <echo message="Hello World"></echo> </target></project>

3.執行ant

①cmd -> ant : 查看build.xml文件是否構建成功

②cmd -> ant helloworld : 執行相應的任務

4.如果不想通過ant helloworld執行任務,也可以設置project的default標簽設置默認執行任務

示例:<project name="test01" default="helloworld"> <target name="helloworld"> <echo message="Hello World"></echo> </target></project>

4.也可以輸出引用

示例:<project name="test01" default="helloworld"> <target name="helloworld"> <echo message="Hello World"></echo> <echo message="${basedir}"></echo> </target></project>

${名稱}:引用;${basedir} : 本地路徑引用

5.執行多個任務

5.1.兩個任務

示例:<project name="test01" default="helloworld"> <target name="helloworld"> <echo message="Hello World"></echo> </target> <target name="printdir" depends="helloworld"> <echo message="${basedir}"></echo> </target></project>

depends:和哪個任務關聯,運行先執行depends中的任務,再執行當前任務

運行Cmd -> ant printdir,這時候就會先打印第一個任務,在打印第二個任務

5.2.三個任務

示例:<project name="test01" default="helloworld"> <target name="helloworld"> <echo message="Hello World"></echo> </target> <target name="printdir" depends="helloworld"> <echo message="${basedir}"></echo> </target> <target name="helloAndroid" depends="helloworld,printdir"> <echo message="helloAndroid"></echo> </target></project>

多個任務depends中使用“,”分隔

#ant的文件操作

1.添加文件

示例:<project name="test02"> <target name="mkdir"> <mkdir dir="hehe"></mkdir> </target></project>

mkdir:表示創建目錄,dir:是目錄的名稱

2.刪除目錄

示例:<project name="test02"> <target name="deldir"> <delete dir="hehe"></delete> </target></project>

delete:刪除目錄,dir:目錄的名稱

3.創建文件

因為創建出來文件還需要編輯,ant沒有這么強大,所以不能創建文件

4.刪除文件

創建文件test.txt示例:<project name="test02"> <target name="delfile"> <delete file="test.txt"></delete> </target></project>file:文件的名稱

#ant執行javac指令

1.創建java文件

2.使用ant執行編譯指令

原先:編譯:javac Test.java執行java Test

示例:

<project name="test03"> <target name="javac"> <javac> <src path="."/> <exclude name="Test.java"/> <exclude name="Test1.java"/> </javac> </target></project>

javac:標示javac指令,src:根目錄,exclude:表示不編譯哪個文件

#ant打包手機衛士

eclipse的手機衛士的項目根目錄中新建文件build.xml,發現無法進行快捷提示,這是因為缺少ant.dtd系統文件,將ant.dtd導入到工程的根目錄下在,在重新創建build.xml,創建的時候點擊下一步,不要直接點擊完成,在跳轉的下一個界面中選擇導入自己的dtd文件,完成即可

1.生成R文件

1.1.創建存放R文件的目錄,工程 -> build

1.2.創建gen目錄

示例:

<!-- 創建R文件存放的目錄 --><target name="init"> <!-- 當下次調用的時候,要將文件目錄刪除,重新創建 --> <delete dir="${builddir}"></delete> <!-- 創建build\gen --> <mkdir dir="${gendir}"/></target>

路徑下面還會用,抽取路徑

<property name="builddir" location="${basedir}/build"/><property name="gendir" location="${builddir}/gen" />

property : 設置屬性

2.運行

window -> show view -> ant -> 點擊加號將build.xml添加到ant中,如果出現錯誤將build.xml中的<!DOCTYPE pro                                                                                                 ject SYSTEM "ant.dtd" >注釋調用,點擊運行即可

3.生成R文件

3.1.生成R文件需要aapt,但是aapt是在sdk目錄下的,如何去獲取呢?可以通過環境變量獲取

示例:<property environment="env"/><property name="sdkhome" location="${env.SDK_HOME}"/><property name="aapt" location="${sdkhome}/build-tools/19.1.0/aapt.exe"/>environment : 表示設置環境變量的標示

3.2.生成R文件

示例:

<!-- 創建R文件思路: 1.找到aapt2.運行aapt指令:aapt package -f -m -J gen -S res -I d:\...\sdk\platforms\android-14\android.jar -M AndroidManifest.xml--><target name="genR" depends="init"> <exec executable="${aapt}"> <arg value="package"></arg> <arg value="-f"></arg> <arg value="-m"></arg> <arg value="-J"></arg> <arg value="${gendir}"></arg> <arg value="-S"></arg> <arg value="${resdir}"></arg> <arg value="-I"></arg> <arg value="${androidjar}"></arg> <arg value="-M"></arg> <arg value="${manifest}"></arg> </exec></target>

exec : 執行指令    executable:執行什么指令,ant無法通過快捷提示出來的。

3.3.在執行的時候還需要創建保存目錄

示例:

<!-- 創建R文件2:設置各種目錄 --><!-- res --><property name="resdir" location="${basedir}/res"></property><!-- android.jar --><property name="androidjar" location="${sdkhome}/platforms/android-14/android.jar"></property><!-- AndroidManifest.xml --><property name="manifest" location="${basedir}/AndroidManifest.xml"></property>

4.aidl轉化java文件操作:

4.1.設置屬性獲取aidl工具

示例:

<property name="aidl" location="${sdkhome}/build-tools/19.1.0/aidl.exe"></property>

4.2.執行指令

因為有多個aidl文件所以需要執行多個aidl指令,在ant中exec標簽是執行一條指令,apply標簽執行多條指令

示例:

<target name="aidltojava" depends="mkR"> <apply executable="${aidl}"> <arg value="-I${srcdir}"/> <arg value="-p${frameworkaidl}"/> <arg value="-o${gendir}"/> <fileset dir="${srcdir}" includes="**/*.aidl"/> </apply></target>

fileset : 執行的文件的組,dir:文件存放的根目錄 includes:文件的位置

**/*.aidl : **/:表示:aidl文件的上級目錄  *.aidl:任何aidl文件

4.3.將相應的目錄生成一下

示例:

<property name="srcdir" location="${basedir}/src"></property><!-- framwork.aidl --><property name="frameworkaidl" location="${sdkhome}/platforms/android-14/framework.aidl"></property>

5.java轉class操作

5.1.創建classes目錄,修改init任務

示例:

<target name="init"> <delete dir="${builddir}"></delete> <mkdir dir="${gendir}"/>   <mkdir dir="${classesdir}"></mkdir></target>

5.2.設置轉化操作

示例:

<target name="javattoclass" depends="aidltojava"> <javac encoding="utf-8" bootclasspath="${androidjar}" destdir="${classesdir}"> <classpath>         <fileset dir="${lisbsdir}" includes="**/*.jar"></fileset> </classpath> <src path="${srcdir}"></src> <src path="${gendir}"></src> </javac></target>

classpath : 表示設置路徑組,fileset:標示多個文件

5.3.設置路徑屬性

示例:

<property name="lisbsdir" location="${basedir}/libs"></property><property name="classesdir" location="${builddir}/classes"></property>

6.解壓jar包

示例:

<target name="unjar" depends="javattoclass"> <unjar dest="${classesdir}"> <fileset dir="${lisbsdir}" includes="**/*.jar"></fileset> </unjar></target>

7.class文件轉dex文件

7.1.獲取dx工具

示例:

<property name="dx" location="${sdkhome}/platform-tools/dx.bat"></property>

7.2.設置執行任務

示例:

<target name="classtodex" depends="unjar"> <exec executable="${dx}">       <arg value="--dex"></arg>       <arg value="--output=${classesdex}"></arg>       <arg value="${classesdir}"></arg>         </exec></target>

7.3.設置路徑

示例:

<property name="classesdex" location="${builddir}/classes.dex"></property>

8.打包資源文件

8.1.設置執行任務

示例:

<target name="restoresources" depends="classtodex"> <exec executable="${aapt}"> <arg value="package"></arg> <arg value="-f"></arg> <arg value="-M"></arg> <arg value="${manifest}"></arg> <arg value="-S"></arg> <arg value="${resdir}"></arg> <arg value="-A"></arg> <arg value="${assetsdir}"></arg> <arg value="-I"></arg> <arg value="${androidjar}"></arg> <arg value="-F"></arg> <arg value="${resourcesap}"></arg> </exec></target>

8.2.設置路徑

示例:

<property name="assetsdir" location="${basedir}/assets"></property><property name="resourcesap" location="${builddir}/resources.ap_"></property>

9.生成未簽名的apk

9.1.獲取打包指令

示例:

<property name="apkbuilder" location="${sdkhome}/tools/apkbuilder.bat"></property>

9.2.設置執行任務

示例:

<target name="unsignedapk" depends="restoresources"> <exec executable="${apkbuilder}"> <arg value="${unsingedapk}"></arg> <arg value="-u"></arg> <arg value="-z"></arg> <arg value="${resourcesap}"></arg> <arg value="-f"></arg> <arg value="${classesdex}"></arg> <arg value="-rf"></arg> <arg value="${srcdir}"></arg> <arg value="-rj"></arg> <arg value="lisbsdir"></arg> </exec></target>

9.3.設置路徑

示例:

<property name="unsingedapk" location="${builddir}/mobliesafe_unsigned.apk"></property>

10.生成簽名的apk

將之前用命令寫的key文件拷貝到工程的根目錄下

10.1.獲取執行指令工具

示例:

<property name="javahome" location="${env.JAVA_HOME}"></property><property name="jarsigner" location="${javahome}/bin/jarsigner.exe"></property>

10.2.設置執行任務

<target name="signedapk" depends="unsignedapk"> <exec executable="${jarsigner}"> <arg value="-keystore"></arg> <arg value="${keystore}"></arg> <arg value="-keypass"></arg> <arg value="123456"></arg> <arg value="-storepass"></arg> <arg value="123456"></arg> <arg value="-signedjar"></arg> <arg value="${signedpakdir}"></arg> <arg value="${unsingedapk}"></arg> <arg value="zdc85"></arg> </exec> </target>

10.3.設置路徑

示例:

<property name="keystore" location="${basedir}/zdc85.keystore"></property><property name="signedpakdir" location="${builddir}/mobliesafe_signed.apk"></property>

11.資源混淆

11.1.解壓AndResGuard-master.zip,在其中的tool_output找到AndResGuard-cli-1.1.4.jar

11.2.將AndResGuard-cli-1.1.4.jar拷貝到工程的tools目錄下

11.3.將config.xml文件拷貝到工程的tools目錄下

11.4.修改config.xml文件

示例:

<resproguard> <issue id="sign" isactive="true"> <!--the signature file path, in window use \, in linux use /, and the default path is the running location--> <path value="zdc85.keystore"/> <!--storepass--> <storepass value="123456"/> <!--keypass--> <keypass value="123456"/> <!--alias--> <alias value="zdc85"/> </issue> </resproguard>

11.5.使用指令測試,必須使用JDK1.7,并且路徑不能有空格

D:\java\jdk7\bin\java.exe -jar AndResGuard-cli-1.1.4.jar ..\build\mobliesafe_unsigned.apk

11.6.解決7za的錯誤

  將SevenZip\executable目錄下找到7za-windows_x86_64.exe拷貝到工程的tools目錄下

11.7.將key文件也放到目錄下重新執行命令

D:\java\jdk7\bin\java.exe -jar AndResGuard-cli-1.1.4.jar ..\build\mobliesafe_unsigned.apk -7zip 7za-windows_x86_64.exe

11.8.設置ant執行任務

設置JDK1.7路徑

示例:

<property  name="java7"  location="D://java/jdk7/bin/java.exe" /> 設置執行任務示例:<target name="proguardResourceApk" depends="unsignedapk"> <exec executable="${java7}"> <arg value="-jar" /> <arg value="tools/AndResGuard-cli-1.1.4.jar" /> <arg value="${unsingedapk}" /> <arg value="-7zip" /> <arg value="tools/7za-windows_x86_64.exe" /> </exec></target>   

注意:這時候需要將config.xml拷貝到根目錄下

  • apk提取工具合集
  • 專業的音頻提取器
  • 手機網名生成器軟件
  • RE管理器版本大全
apk提取工具合集
(6)apk提取工具合集

我們經常會發現安裝在手機上的apk文件不知道哪里去了,想刪也不會刪,或者想提取出來發送給別人也不知道位置,小編也經常會有這樣的困難,所以找了幾款蠻好用的apk提取工具,可以將手機上所有的apk文件都提取出來,編輯刪除或者發送都可以隨意操作。

...更多>>
專業的音頻提取器
(6)專業的音頻提取器

專業的音頻提取器,讓您從各種格式視頻中提取各種格式的音頻,從視頻中提取音頻保存為MP3等格式,其操作極其簡單,且轉換后的音頻文件可以保存到您的手機中。軟件支持所有視頻格式,在里面直接播放也可以。

...更多>>
手機網名生成器軟件
(9)手機網名生成器軟件

每個人都想要擁有獨一無二的網名,那么特殊的、個性化的網名如何制作呢?東坡小編為你收集整理了幾款手機網名生成器軟件,都擁有體積小、操作簡單,花樣多等特點,軟件中多種網名樣式可供選擇,只需要輸入網名就能制作一款個性化的名字了,在微信、QQ中輕松秀一把。

...更多>>
RE管理器版本大全
(7)RE管理器版本大全

喜歡搗鼓手機的軟件對re管理器應該不會陌生,它的全稱Root Explorer,是一款可以幫助用戶獲得手機最高權限的文件管理工具,root后就能對權限文件進行操作,支持新建文件夾,編輯文件和安裝等功能,還有zip、ara文件解壓的功能。

...更多>>

擴展知識

相關評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)

本類常用軟件

主站蜘蛛池模板: 久久综合偷拍 | 麻豆成人精品国产免费 | 久久久久久久久久久久久久 | 97色在线观看免费视频 | 五月婷婷丁香网 | 国产成人精品系列在线观看 | 午夜欧美成人久久久久久 | 国产一区在线mmai | 男女视频在线免费观看 | 亚洲六月婷婷 | 中文字幕在线不卡精品视频99 | 国产精品视频公开费视频 | 国产真实一区二区三区 | 国内精品久久久久影院嫩草 | 国产色片在线观看 | 国产精品久久久久久久久久久威 | 色香五月 | 欧美日本日韩aⅴ在线视频 欧美日本日韩 | 精品国产网站 | 久久婷婷激情综合色综合也去 | 婷婷综合丁香 | 亚洲国产天堂在线观看 | 全网免费在线播放视频入口 | 日韩欧美综合视频 | 免费电影在线观看网站入口 | 久久精品欧美日韩精品 | 伊人精品在线视频 | 99久久精品一区二区三区 | 国产成人精品久久免费动漫 | 四虎w345com| 国产99在线视频 | 久久一级 | 理论片在线观看视频 | www..com黄| 久久亚洲aⅴ精品网站婷婷 久久鸭综合久久国产 | 久久久久久久久久久9精品视频 | 日本久久中文字幕 | 久久99精品久久久久久噜噜噜 | 四房激情网 | 欧美亚洲日本国产综合网 | 日韩精品午夜视频一区二区三区 |