Java实现Android APK多渠道打包

使用Android Studio开发的朋友都知道,Gradle自带多渠道打包的功能,但是此功能较慢,对于我们这种近百个的渠道包来说,打包无疑是种痛苦。对于爱学习的我来说,自己动手写一份多渠道打包程序,那是多么的快乐!

原理:多渠道打包其实非常简单,编译好的APK中包含AndroidManifest.xml文件,基本APK都将渠道号存储在此文件中(本人使用的友盟渠道统计,KEY为UMENG_CHANNEL),将APK文件解压,读取AndroidManifest.xml,找到KEY值,修改保存,最后再将文件重新编译为APK,整个修改渠道就完成了。

PS:不过需要注意一点的是,重新编译好的APK是没有签名的,需要使用JDK下的jarsigner工具重新签名


备工具:jdk(别告诉我你没有)、apktool和aapt是反编译的常用工具,将三个工具添加到环境变量中,本人使用的是mac,将三个路径添加到.bash_profile中就可以了。

知道了原理,那么就不难实现我们的多渠道打包的程序,下面开始动手写程序!注意是JAVA程序,不是Android程序

1.写一个工具类,叫ApkUtil,

import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;

/**
 * Created by monch on 16/3/7.
 */
public class ApkUtil {

    /**
     * 检测文件是否存在
     *
     * @param filePath
     * @return
     */
    public static boolean fileExists(String filePath) {
        return new File(filePath).exists();
    }

    /**
     * 清除解压后生成的文件夹
     *
     * @param filePath
     */
    public static void fileClear(String filePath) {
        final File file = new File(filePath);
        if (!file.exists()) return;
        if (!file.isFile()) {
            fi
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值