apk自动打包上传

简介

apk自动打包上传困扰了我很久,很想有一个脚本或程序能够一键自动打包上传,这样可以节省很多时间,还不容易出打包的错误,拿这点时间,去抽跟烟,扯扯蛋,该多好。。。

项目已经上传到githup了,想要自己定制化需求,可以通过修改源码实现,项目为Java项目,需要配置java和aapt环境变量,且项目为window环境系统下的脚本操作

思路

以下为上传到fir服务器为例:

  1. 配置gradle的apk输出路径
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    //开始输出,自定义输出路径
                    output.outputFile =
                            new File("f:/app/apkauto"+".apk")
                }
            }
        }
    }
  1. 通过Java运行cmd命令到项目目录,运行grald命令,gradlew assembleRelease命令为正式环境打包,你可以手动配置打包环境命令
  public static  String  genAPK(String projectPath) throws IOException {
        String params1=projectPath.substring(0,1);
        String params2=projectPath;

        String cmd=params1+": "+"&cd "+params2+" &gradlew assembleRelease";
         return   Cmd.exec(cmd);
    }
  1. 通过 aapt解析apk的信息,解析命令为<code>aapt dump badging apk路径</code>
 public static APPInfo parasAPk(String apkPath) throws IOException {
         String reulst=Cmd.exec(PARASE_APK+apkPath);
         return APPInfo.getAPPInfo(reulst);
    }
  1. 配置上传文件信息
#apk生成后绝对地址,这个路径需要在gralde里面设置
apkPath=f:/app/apkauto.apk
#app项目的本地路径
appProjectPath=E:/work/APkAuto/
#更新日志
updateLog=更新日志
  1. 上传到服务器(目前以上传到fir为例,具体请参考fir上传接口
    a.获取apk上传信息->b.上传icon->c.上传apk

流程

apk自动打包流程

启动程序(App.java)

  public static void main(String[] args) {

        String apkPath = PropertiesUtils.getValue("apkPath");
        String projectPath=PropertiesUtils.getValue("appProjectPath");
        String updateLog=PropertiesUtils.getValue("updateLog");

        try {
            //1. 生成apk
            APkUtils.genAPK(projectPath);

             //2. 解析apk,获取apk的信息
            APPInfo info2 =APkUtils.parasAPk(apkPath);
            System.out.println(info2.toString());

            //3. 上传apk
            UpdateI updateI=new FirUpdate();
            try {
                updateI.updateAPk(info2,apkPath,updateLog);
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println(e.getMessage());
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("上传失败");
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,143评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,180评论 19 139
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,695评论 0 17
  • 近日,与友人论及古史考证事。觉得古史辨伪,实在是一专门。本人学殖不逮,未敢置喙。所以取一“集注”态度,说法...
    南风之薰专栏阅读 390评论 2 5
  • 题目 有 n 个不同价值的硬币排成一条线。两个参赛者轮流从左边依次拿走 1 或 2 个硬币,直到没有硬币为止。计算...
    六尺帐篷阅读 1,833评论 1 3