導航:首頁 > 編程大全 > 友盟apk批量打包工具

友盟apk批量打包工具

發布時間:2023-05-02 07:50:27

Ⅰ AAPT簡介

AAPT 是Android Asset Packaging Tool的縮寫,它存放在SDK的tools目錄下,AAPT的功能相對比較強大,可以通過它查看、創建、更新壓縮文件(如.zip文件,.jar文件,.apk文件),它可以把 資源 編譯為二進制文件,同時生成resources.arsc,AAPT這個工具在APK打巧神包過程中起到了非常重要的作用,在打包的過程中,用AAPT對APK中使用到的資源進行打包,這里不對AAPT這個工具做過多的討論。

我們來看一下AAPT打包的流程:

AAPT這個工具在 打包 的過程中主要做了以下工作:

1.把「assets」和「res/raw」目錄下的所有資源進行打包(會根據不同的文件後綴選擇壓縮或不壓縮),「孝型虧res/」目錄下的其他資源進行編譯或者其他處理(具體的處理方式視文件後綴的不同而不同,例如:「.xml」會編譯成二進制文件,「.png」文件會進行優化等等)後才進行打包。

2.會對除 assets資源 之外的所有資源賦予一個資源ID常量,並且會生成一個資源索引表resources.arsc;

3.編譯租鏈AndroidManifest.xml成二進制的XML文件。

4.把上面3個步驟中生成結果保存在一個「.ap_」文件,並把各個資源ID常量定義在一個R.java中;

.ap_文件會在生成APK時放入APK包中,.ap_這個文件本身是一個zip包,他裡麵包含了resources.arsc、AndroidManifest.xml、assets以及所有的資源文件。

Ⅱ android app 打包流程

App 打包

aapt是android中的資源打包工具,打包資源就用它。

打包大致流程:

aapt把resources目錄下的資源生成R.java文件,並為AndroidManifest.xml生成Manifest.java類。

aidl把項目中自定義的aidl文件生成對應的java類。

JavaCompiler把所有的Java源文件編譯成class文件,包括:aapt生成的、aidl生成的、項目中自有的java源文件

使用proguard混淆,並生成一個proguardMapping.xml文件(可選項:可以混淆也可以不混淆)

使用dex工具把所有的class文件生成.dex文件

使用aapt資源打包工具把resources、assets目錄下的資源打包成一個_ap文件

使用apkbuilder把所有的dex、_ap文件、AndroidManifest.xml文件打包成一個未簽名的apk

使用jarsinger生成一個簽名過的apk包

使用zipalign工具對要發布的apk文件進行對齊操作,以便在運行時節約內存。

Ⅲ 新一代Android渠道打包工具:1000個渠道包只需要5秒

♥♥♥  原文轉自 極分享 更多詳情及更新 查看原文   ♥♥♥

最新版本

v1.0.4 - 2016.01.19 - 完善獲取APK路徑的方法,增加MarketInfo

v1.0.3 - 2016.01.14 - 增加緩存,新增ResUtils,更有好的錯誤提示

v1.0.2 - 2015.12.04 - 兼容proctFlavors,完善異常處理

v1.0.1 - 2015.12.01 - 如果沒有讀取到渠道,默認返回空字元串

v1.0.0 - 2015.11.30 - 增加Java和Python打包腳本,增加文檔

v0.9.9 - 2015.11.26 - 測試版發布,支持全新的極速打包方式

源碼:https://github.com/mcxiaoke/packer-ng-plugin

項目介紹

packer-ng-plugin 是下一代Android渠道打包工具Gradle插件,支持極速打包,1000個渠道包只需要5秒鍾,速度是 gradle-packer-plugin 的1000倍以手局嘩上,可方便的用於CI系統集成,支持自定義輸出目錄和最終APK文件名,依賴包:com.mcxiaoke.gradle:packer-ng:1.0.+ 簡短名:packer,可以在項目的 build.gradle 中指定使用,還提供了命令行獨立使用的Java和Python腳本。實現原理見本文末尾。

使用指南

Maven Central

.

.

.

.

.

實現原理

PackerNg原理  

優點

使用APK注釋欄位保存渠道信息和MAGIC位元組,從文件末尾讀取渠道信息,速度快

實現為一個Gradle Plugin,支持定製輸出APK的文件名等信息,方便CI集成

提供Java版和Python的獨立命令行腳本,不依賴Gradle插件,支持獨立使用

由於打包速度極快,單個包只需要5毫秒左右,可用於網站後台動態生成渠道包

缺點

沒有使用Android的proctFlavors,無法利用flavors條件編譯的功能

文件格式

Android應用使用的APK文件就是一個帶簽名信息的ZIP文件,根據 ZIP文件格式規范,每個ZIP文件的最後都必須有一個叫Central Directory Record 的部分,這個CDR的最後部分叫"end of central directory record",這一部分包含一些元數據,它的末尾是ZIP文件的注釋。注釋包含Comment Length和File Comment兩個欄位,前者表示注釋內容的長度,後者是注釋的內容,正確修改這一部分不會對ZIP文件造成破壞臘枯,利用這個欄位,我們可以添加一些自定義的數據,PackerNg項目就是在這里添加和讀取渠道信息。

細節處理

原理很簡單,就是將渠道信息存放在APK文件的注釋欄位中,但是實現起來遇到不少坑,測試了好多次。

同類工具

gradle-packer-plugin - 舊版渠道打包工具,完全使用Gradle系統實現,能利用Android提供的proctFlavors系統的條件編譯功能,無任何兼容性問題,方便集成,但是由於每次都要重新打包,速度比較慢,不適合需要大量打包的情況。(性能:200個渠道包需要一到兩小時)

Meituan-MultiChannelTool - 使用美團方案的實現,在APK文件的META-INF目里增加渠道文件,打包速度也非常快,畢行但讀取時需要遍歷APK文件的數據項,比較慢,而且以後可能遇到兼容性問題

MultiChannelPackageTool - 將渠道寫入APK文件的注釋,這個項目沒有提供Gradle插件,只有命令行工具,不方便CI集成,使用ZIP文件注釋的思路就是來自此項目

轉自 極分享     閱讀原文

Ⅳ ANDROID多渠道快速打包實踐

參考資料:
美團Android自動化之旅—生成渠道包
Android批量打包提速
AndroidMultiChannelBuildTool

背景
隨著發版需要,每次發版所需渠道包越來越多(現在差不多有一百個左右了),正常gradle打包由於耗時效率過低已無法滿足需求,開始了android多渠道快速打包實踐。

方法
下面主要介紹兩種快速打包的方式:
1、類似美團的方式,在META-INF中寫入渠道名的空文件,用於讀取空文件。 美團Android自動化之旅—生成渠道包
2、在apk末尾動態寫入渠道信息。 一種動態為apk寫入信息的方案
其實這兩種方式都是同一個原理,替換以前從manifest中讀取渠道號的方式,而使用新的獲取方式(渠道號如何寫入就如何讀取)。
所以這首先需要客戶端(重要!):
1、統一應用中獲取渠道的方式並替換之前的(最好兼容)。
2、注意第三方SDK渠道號的傳入,比如友盟sdk,否則第三方會使用默認從manifest中讀取的方式。

下面介紹一種已經測試過的方法(git上開源項目 AndroidMultiChannelBuildTool )
1、安裝環境由於腳本環境是使用python語言,所以需要我們 安裝環境 。
2、導入項目導入開源項目 AndroidMultiChannelBuildTool ),並把悔拿想要批量打包的apk文件拷貝到PythonTool目錄下(與py同級),運行py腳本即可打包完成。

以上基本實現快速好前滾打包,經過測試一分鍾百十個無壓力。另外需要注意這種方式只適用於打包需求一致渠道號不同,不適用特殊定製渠道。

備註:9月21日友余補充快速打包java版本,詳見 AndroidMultiChannelBuildTool-Java-master

Ⅳ android 工程 如何一鍵編譯打包成apk

打包步驟:

1、生成keystore

按照下面的命令行在C:ProgramFilesJavajdk1.6.0_10in>目錄下,輸入keytool-genkey-aliasandroid.keystore-keyalgRSA-validity100000-keystoreandroid.keystore

參數意義:-validity主要是證書的有效期,寫100000天;空格,退格鍵都算密碼

命令執行後會在C:ProgramFilesJavajdk1.6.0_10in>目錄下生成android.keystore文件。如圖-1

圖-2EclipseAndroid打包工具

接下來的步驟就是不斷的next。下面僅貼出圖片,不解釋。

step2:選擇打包的項目

step3:選擇生成的EclipseAndroid.keystore文件並輸入密碼

step4:選擇aliaskey並輸入密碼

step5:最後選擇生成androidapk文件的目錄及文件名

最終生成的apk文件。

Ⅵ 如何應用安卓APK文件進行解包打包和修改

不需要解包跟打包,直接修改就可以,修改的的方法。

如下參考:內

1.將需要修改的apk包復制到100apktool的路徑中容。注意:您需要將文件名更改為123apk,如下圖。

Ⅶ 請教如何使用android studio同時打包多個apk

渠道信息一般在 AndroidManifest.xml中修改以下值:

<meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />

首先你必須在AndroidManifest.xml中的meta-data修改以下的樣子:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />

其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定義配置的值。
build.gradle文件就利用proctFlavors這樣宴高寫:

proctFlavors {

wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}

{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: ""]
}

c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}

uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}

}

其中[UMENG_CHANNEL_VALUE: "wandoujia"]就是對應${UMENG_CHANNEL_VALUE}的值。
最新更新
後來發現上面的重復代碼太多,就在網上又發現了一個更簡潔的寫法

proctFlavors {

wandoujia {}
{}
c360 {}
uc {}

proctFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

}

其中name的值對相對應各個proctFlavors的選項值,這樣就達到自動替換渠道值的目的了。
這樣生成apk時,選擇相應的Flavors來生成指定渠道的包就可以了,而且生成的apk會自動幫你加上相應渠道的後綴,非常方便和直觀。大家可以自己反編譯驗證。
一次生成所有渠道包
在android studio底欄中有個命令行工具Terminal,打開後就CMD可以自動切換到當前項目的目錄下。
有的項目下會有graldew.bat這個文件,你就可以輸入這個命令:
gradlew assembleRelease
就可以一次性生成所有的渠道包了
不過我一般不建議大家使用這個命令,gradlew這個命令的gralde的版本無法控制,有時候會莫名其妙的下載老版本的gradle
所以我個人推薦大家使用以下的用法。
先找到gralde的根目錄,在系統變數里添加兩個環境變悄吵量:
變數名為:GRADLE_HOME,變數值就為gradle的根目錄;
所以變數值為:C:\Users\yazhou\.gradle\wrapper\dists\gradle-2.1-all\27drb4udbjf4k88eh2ffdc0n55\gradle-2.1
還有一個在系統變數里PATH裡面添加gradle的bin目錄
我的就是C:\Users\yazhou\.gradle\wrapper\dists\gradle-2.1-all\27drb4udbjf4k88eh2ffdc0n55\gradle-2.1\bin
這里配置完成了,接著在Terminal中敲下 gradle assembleRelease就可以一次性生成所有的渠道包了。
所有生成的apk在項目的build\outputs\apk下。
如果只是想生成單個渠道的包呢?
打開Android Studio的Gradle tasks面板(右邊側邊欄),會發現模塊啟祥侍多了很多任務

Ⅷ android友盟集成測試需要生成apk么

看一些博客的流程是需要生成apk的,如下:
1、安裝DeviceID.apk(用來查看設備信息)
2、安裝成功後,在設備上打開(推薦 海馬玩模擬器)
3、軟體會自動獲取到 IMEI 和WIFI MAC Address ,這兩個值在友盟的後台需要用到
4、在友盟的 集成測試後台 中添加設備,如下圖所示

輸入獲取到的device_id,mac,例如:{"device_id":"xxxx","mac_address":"xxxx"姿慎} 名稱孝伍:填設備名稱
註:前提是應用已集成友盟SDK
5、打包APK,安裝好在模擬器上,啟動APP,在友盟巧冊或的後台日誌就會實時刷新,如下圖所示

閱讀全文

與友盟apk批量打包工具相關的資料

熱點內容
程序員死後網站怎麼處理 瀏覽:667
數控編程方向怎麼寫 瀏覽:591
win10怎麼找到寫字板 瀏覽:756
陰陽師安卓獨立版本 瀏覽:395
無法復制u盤內的文件錯誤 瀏覽:737
u盤裝系統不是iso文件 瀏覽:181
vivoy18l刷安卓44 瀏覽:853
wifi和數據哪個好 瀏覽:695
哪裡適合孩子學習編程 瀏覽:773
miui8桌面文件夾 瀏覽:18
哪些文件值得收藏 瀏覽:549
linux查看幾兆網卡 瀏覽:386
iphone4清理後台 瀏覽:599
new文件怎麼改為pdf 瀏覽:930
刻錄文件用什麼列印機 瀏覽:888
德國大數據工程師年薪大概多少錢 瀏覽:870
訓練哪個app好 瀏覽:821
90版本新男魔法師刷圖加點2015 瀏覽:881
如何進行數據差異性比較 瀏覽:68
微信聊天記錄默認存在哪個文件夾 瀏覽:252

友情鏈接