今天谈一下Androdi三种打包方式,Ant、Gradle、Python。

当然最开始打包用Ant 很方便,后来转Studio开发,自带很多Gradle插件就用了它,然后随着打包数量越多,打包时间成了需要考虑的事,前两者平均打一个包要花费2-3分钟,打30个就要差不多2个小时;而前两者打包的思路主要是,替换AndroidManifest.xml的meta-data下的value值,然后重新编译 注:不管Ant还是Gradle,下面这句都要加入AndroidManifest.xml

而Python打包非常快,几百个包5分钟以内搞定,而它的思路仅是打完一个可发布包后,往apk的META-INF下写入一个含渠道名的文件,由应用去解析这个渠道名即可,不再使用传统的meta-data去标识value值。

编译一般有以下几个步骤:

1.用aapt命令生成R.java文件

2.用aidl命令生成相应java文件

3.用javac命令编译java源文件生成class文件

4.用dx.bat将class文件转换成classes.dex文件

5.用aapt命令生成资源包文件resources.ap_

6.用apkbuilder.bat打包资源和classes.dex文件,生成unsigned.apk

7.用jarsinger命令对apk认证,生成signed.apk

-------------------------------------------------------------我是分割线----------------------------------------------------------------------------

一、简单讲一下Ant打包的流程

1、安装ant,并配置好环境变量,在ant->lib目录下放入一个ant-contrib-1.0b3.jar

2、在主项目和依赖项目目录下放置build.xml和local.properties(依赖文件只用放sdk_dir就行)

3、在主项目目录下放置custom_rules.xml即可

4、在命令行下,进入要打包的主项目目录下,输入ant deploy即可(如果二次打包要先输入ant clean)

build.xml文件如下

主要作用:声明主项目和依赖项目,sdk的位置、用到的文件如local.properties等

local.properties

## This file is automatically generated by Android Studio.

# Do not modify this file -- YOUR CHANGES WILL BE ERASED!

#

# This file must *NOT* be checked into Version Control Systems,

# as it contains information specific to your local configuration.

#

# Location of the SDK. This is only used by Gradle.

# For customization when using a Version Control System, please read the

# header note.

#Tue Feb 16 16:07:45 CST 2016

sdk.dir=AndroidSdk的位置,例如:D:\\Android_Software\\adt-bundle-windows-x86_64-20140702\\sdk

sdk.platformtools=YourSdkPm

sdk.tools=YourSdkTools

apk.dir=打出包放的位置-打包前要确定此路径存在,且无中文

app_version=版本号

app_name=版本名称

market_channels=渠道号-以逗号隔开

key.store=密钥存储路径-注意双斜杠\\

key.store.password=密码

key.alias=别名

key.alias.password=别名密码

最重要的custom_rules.xml来了

此文件配置获得打包命令,打包渠道,以及修改文件名,最后打包的过程《完》

-------------------------------------------------------------我是分割线----------------------------------------------------------------------------

二、再讲一下Gradle打包的流程

1、配置好build.gradle,如下

2、studio命令行:

gradlew assembleDebug --打非正式包

gradlew assembleRelease --打正式包

gradlew assembleWandoujiaRelease -打特定渠道

android {

signingConfigs {

debug {

keyAlias 'your_alias_key'

keyPassword 'your_key_pwd

storePassword 'your_store_pwd'

storeFile file('your_store_key')

}

release {

keyAlias 'your_alias_key'

storeFile file('your_store_key')

if (System.console() != null) {

keyPassword System.console().readLine("\nKey password: ")

storePassword System.console().readLine("\nKeystore password: ")

}

}

}

buildTypes {

debug {

//多余的参数

minifyEnabled false

zipAlignEnabled false

shrinkResources false

signingConfig signingConfigs.debug

// 显示Log

buildConfigField "boolean", "LOG_DEBUG", "true"

}

release {

minifyEnabled true//缩小

zipAlignEnabled true

shrinkResources true//删除无用资源

signingConfig signingConfigs.release

// 显示Log

buildConfigField "boolean", "LOG_DEBUG", "false"

applicationVariants.all { variant ->

variant.outputs.each { output ->

def outputFile = output.outputFile

if (outputFile != null && outputFile.name.endsWith('.apk')) {

// 输出apk名称为apkName_v1.0_wandoujia.apk

def fileName = "apkName${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"

output.outputFile = new File(outputFile.parent, fileName)

}

}

}

proguardFile 'your_cfg'--例:E:/SorkSpace/branches/studio/proguard.cfg

}

}

productFlavors {

baidu {}

tencent {}

}

productFlavors.all {

flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]

}

compileSdkVersion 19

buildToolsVersion '22.0.1'

sourceSets {

main {

manifest.srcFile 'AndroidManifest.xml'

java.srcDirs = ['src']

resources.srcDirs = ['src']

aidl.srcDirs = ['src']

renderscript.srcDirs = ['src']

res.srcDirs = ['res']

assets.srcDirs = ['assets']

}

// Move the tests to tests/java, tests/res, etc...

instrumentTest.setRoot('tests')

// Move the build types to build-types/// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...

// This moves them out of them default location under src//... which would

// conflict with src/ being used by the main source set.

// Adding new build types or product flavors should be accompanied

// by a similar customization.

debug.setRoot('build-types/debug')

release.setRoot('build-types/release')

}

defaultConfig {

applicationId 'com.chemayi.manager'

versionCode 20

versionName '3.0'

minSdkVersion 10

targetSdkVersion 19

// dex突破65535的限制

multiDexEnabled true

// AndroidManifest.xml 里面UMENG_CHANNEL的value为 ${UMENG_CHANNEL_VALUE}

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: "channel_name"]

}

dexOptions {

incremental true

javaMaxHeapSize "4g"

}

packagingOptions {

exclude 'META-INF/NOTICE.txt'

exclude 'META-INF/LICENSE.txt'

}

lintOptions {

abortOnError false

}

}

配置比Ant简单多了,当然在命令行也可以打包,只不过将gradle换成gradlew即可

-------------------------------------------------------------我是分割线----------------------------------------------------------------------------

三、Python打包

1、安装python软件

2、在项目中放入ChannelUtil.java类,用来获得渠道号

3、打好一个包放在与MultiChannelBuildTool.py同级目录

4、在.py同级目录info下的channel.txt添加渠道号

5、点击MultiChannelBuildTool.py即可

文件目录:

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" />

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" />

新包:

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" />

ChannelUtil.java

package com.blog.util;

import java.io.IOException;

import java.util.Enumeration;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.content.pm.ApplicationInfo;

import android.content.pm.PackageManager.NameNotFoundException;

import android.preference.PreferenceManager;

import android.text.TextUtils;

public class ChannelUtil {

private static final String CHANNEL_KEY = "yourchannel";

private static final String CHANNEL_VERSION_KEY = "yourchannel_version";

private static String mChannel;

/**

* 返回市场。 如果获取失败返回""

* @param context

* @return

*/

public static String getChannel(Context context){

return getChannel(context, "");

}

/**

* 返回市场。 如果获取失败返回defaultChannel

* @param context

* @param defaultChannel

* @return

*/

public static String getChannel(Context context, String defaultChannel) {

//内存中获取

if(!TextUtils.isEmpty(mChannel)){

return mChannel;

}

//sp中获取

mChannel = getChannelBySharedPreferences(context);

if(!TextUtils.isEmpty(mChannel)){

return mChannel;

}

//从apk中获取

mChannel = getChannelFromApk(context, CHANNEL_KEY);

if(!TextUtils.isEmpty(mChannel)){

//保存sp中备用

saveChannelBySharedPreferences(context, mChannel);

return mChannel;

}

//全部获取失败

return defaultChannel;

}

/**

* 从apk中获取版本信息

* @param context

* @param channelKey

* @return

*/

private static String getChannelFromApk(Context context, String channelKey) {

//从apk包中获取

ApplicationInfo appinfo = context.getApplicationInfo();

String sourceDir = appinfo.sourceDir;

//默认放在meta-inf/里, 所以需要再拼接一下

String key = "META-INF/" + channelKey;

String ret = "";

ZipFile zipfile = null;

try {

zipfile = new ZipFile(sourceDir);

Enumeration entries = zipfile.entries();

while (entries.hasMoreElements()) {

ZipEntry entry = ((ZipEntry) entries.nextElement());

String entryName = entry.getName();

if (entryName.startsWith(key)) {

ret = entryName;

break;

}

}

} catch (IOException e) {

e.printStackTrace();

} finally {

if (zipfile != null) {

try {

zipfile.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

String[] split = ret.split("_");

String channel = "";

if (split != null && split.length >= 2) {

channel = ret.substring(split[0].length() + 1);

}

return channel;

}

/**

* 本地保存channel & 对应版本号

* @param context

* @param channel

*/

private static void saveChannelBySharedPreferences(Context context, String channel){

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);

Editor editor = sp.edit();

editor.putString(CHANNEL_KEY, channel);

editor.putInt(CHANNEL_VERSION_KEY, getVersionCode(context));

editor.commit();

}

/**

* 从sp中获取channel

* @param context

* @return 为空表示获取异常、sp中的值已经失效、sp中没有此值

*/

private static String getChannelBySharedPreferences(Context context){

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);

int currentVersionCode = getVersionCode(context);

if(currentVersionCode == -1){

//获取错误

return "";

}

int versionCodeSaved = sp.getInt(CHANNEL_VERSION_KEY, -1);

if(versionCodeSaved == -1){

//本地没有存储的channel对应的版本号

//第一次使用 或者 原先存储版本号异常

return "";

}

if(currentVersionCode != versionCodeSaved){

return "";

}

return sp.getString(CHANNEL_KEY, "");

}

/**

* 从包信息中获取版本号

* @param context

* @return

*/

private static int getVersionCode(Context context){

try{

return context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;

}catch(NameNotFoundException e) {

e.printStackTrace();

}

return -1;

}

}

MultiChannelBuildTool.py

#!/usr/bin/python

# coding=utf-8

import zipfile

import shutil

import os

# 空文件 便于写入此空文件到apk包中作为channel文件

src_empty_file = 'info/yourchannel_.txt'

# 创建一个空文件(不存在则创建)

f = open(src_empty_file, 'w')

f.close()

# 获取当前目录中所有的apk源包

src_apks = []

# python3 : os.listdir()即可,这里使用兼容Python2的os.listdir('.')

for file in os.listdir('.'):

if os.path.isfile(file):

extension = os.path.splitext(file)[1][1:]

if extension in 'apk':

src_apks.append(file)

# 获取渠道列表

channel_file = 'info/channel.txt'

f = open(channel_file)

lines = f.readlines()

f.close()

for src_apk in src_apks:

# file name (with extension)

src_apk_file_name = os.path.basename(src_apk)

# 分割文件名与后缀

temp_list = os.path.splitext(src_apk_file_name)

# name without extension

src_apk_name = temp_list[0]

# 后缀名,包含. 例如: ".apk "

src_apk_extension = temp_list[1]

# 创建生成目录,与文件名相关

output_dir = 'output_' + src_apk_name + '/'

# 目录不存在则创建

if not os.path.exists(output_dir):

os.mkdir(output_dir)

# 遍历渠道号并创建对应渠道号的apk文件

for line in lines:

# 获取当前渠道号,因为从渠道文件中获得带有\n,所有strip一下

target_channel = line.strip()

# 拼接对应渠道号的apk

target_apk = output_dir + src_apk_name + "_" + target_channel + src_apk_extension

# 拷贝建立新apk

shutil.copy(src_apk, target_apk)

# zip获取新建立的apk文件

zipped = zipfile.ZipFile(target_apk, 'a', zipfile.ZIP_DEFLATED)

# 初始化渠道信息

empty_channel_file = "META-INF/yourchannel_{channel}".format(channel = target_channel)

# 写入渠道信息

zipped.write(src_empty_file, empty_channel_file)

# 关闭zip流

zipped.close()

channel.txt

baidu

tencent

python中if brthon环境安装包_Ant、Gradle、Python三种打包方式的介绍相关推荐

  1. python中if brthon环境安装包_python-模块系列

    python-模块系列 楚时邀月 2015-12-08 --> 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了 ...

  2. python中if brthon环境安装包_Python实现base64编码的图片保存到本地功能示例

    本文实例讲述了Python实现base64编码的图片保存到本地功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 import os import ...

  3. python中if brthon环境安装包_python这个正则表达式有什么问题?

    origin_src='https://img-blog.csdnimg.cn/2022020211025286938.jpeg' r=re.compile(r'src\s*=\s*(?:" ...

  4. apache+python+php+mysql集成环境安装包

    一款使用JS框架制作开源的环境集成,代码在test.js文件里 apache+python+php+mysql(mariadb)+phpmyadmin集成包 这里要用到xxjs 是基于原生js封装的一 ...

  5. pip 常用命令及控制台怎么查看python 及pip 和已安装包版本号

    在使用python的时候,经常使用到pip这个工具,可以很方便的线上安装依赖库,当然pip还有很多参数都可以帮我们去查询一些库信息,在安装python的时候,下载带有pip的安装包就可以直接安装pip ...

  6. 游戏服务器环境部署说明文档,游戏服务器环境安装包

    游戏服务器环境安装包 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. expor ...

  7. Python——annoy的安装如何安装包

    Python--annoy的安装&如何安装包 目标:在不同操作系统中安装annoy,用于从海量文本中快速查找出相似的Top N 文本. 背景:Annoy是高维空间求近似最近邻的一个开源库.Gi ...

  8. [转]英文版VS2010制作中文环境安装包

    本文转自:http://www.cnblogs.com/upupto/archive/2010/10/29/1864726.html 自从VS2010发布以来,一直在用英文版本,接下来就说明用英文版本 ...

  9. win7 32位php安装包下载地址,appserv官方下载|AppServ(php环境安装包)下载v8.6 64位/32位 支持win7/win8/win10_ IT猫扑网...

    AppServ(php环境安装包)是一个功能强大的PHP环境集成安装包,安装十分方便,按照提示操作即可,包括PHP.mysql.phpMyAdmin 等工具,需要的朋友就来IT猫扑下载吧! AppSe ...

最新文章

  1. LeetCode 1021:Remove Outermost Parentheses
  2. 数据预处理(完整步骤)
  3. 中科院基因组所高远组诚聘生物信息学方向助理/副研及博士
  4. ph值图片_螃蟹养殖大数据——高温季节的pH值过高,不适宜养殖螃蟹?未必
  5. mysql中数据库覆盖导入的几种方式
  6. defer和async的原理与区别
  7. 设计模式(十五):解释器模式
  8. 如图所示是一种轧钢计算机控制系统,高速线材厂轧钢工艺培训(活套)
  9. csharp read excel file get sheetName list
  10. python日历模块_Python日历模块| prmonth()方法与示例
  11. angular.js入门基础(一)
  12. CSS3鼠标滑过图片3D旋转动画
  13. JavaWeb中实现验证码(ssh框架版)
  14. 2021服务器cpu性能天梯图,显卡天梯图2021年3月最新版 显卡性能排行天梯图2021
  15. JavaScript获取当前url路径
  16. 化妆品选购指南_痘痘肌专属
  17. kuwo.php采集,PHP获取酷我音乐MP3外链
  18. 计算机101页报告翻译,冯诺伊曼 101页报告 First Draft of a Report on the EDVAC
  19. python能做些什么事_一起来看看Python能干什么?使用Python能做哪些事
  20. 路在脚下、梦在身上,技能提升不是为了别人!

热门文章

  1. 爬取小说1--高并发
  2. 将string转成dict(Python)
  3. 去重之后统计条数_BOPET:12的普通包装膜到底去哪了?
  4. mysql自动转库_JAVA自动操作0racle数据库转mysql数据库
  5. 关于爬虫的日常复习(8)—— 实战:request+正则爬取猫眼榜单top100
  6. java中的构造方法,this、super的用法
  7. python2.7练习小例子(二)
  8. 迷你DVD管理器项目
  9. 计算几何常用算法的理论基础【转】
  10. CentOS下首次使用as86汇编器