导航:首页 > 编程大全 > 友盟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批量打包工具相关的资料

热点内容
wifi和数据哪个好 浏览:695
哪里适合孩子学习编程 浏览:773
miui8桌面文件夹 浏览:18
哪些文件值得收藏 浏览:549
linux查看几兆网卡 浏览:386
iphone4清理后台 浏览:599
new文件怎么改为pdf 浏览:930
刻录文件用什么打印机 浏览:888
德国大数据工程师年薪大概多少钱 浏览:870
训练哪个app好 浏览:821
90版本新男魔法师刷图加点2015 浏览:881
如何进行数据差异性比较 浏览:68
微信聊天记录默认存在哪个文件夹 浏览:252
张孝祥java邮件开发详解 浏览:431
财政保障水平分析取哪个数据 浏览:391
linux下增加路由命令 浏览:419
iphone冲刷固件 浏览:604
网络机房平面图 浏览:579
笔记本电脑卡慢怎么处理win10 浏览:77
编程仿真用什么软件 浏览:424

友情链接