Android 打包 学习笔记

news/2024/5/20 4:12:35 标签: gradle

项目中涉及到通过jenkins自动化实现多渠道打包,并在打包过程中动态配置配置参数和动态修改打包参数。

1、多渠道到打包配置 在build.gradle 文件中配置

常见配置参考:

 Android 多渠道打包实操(更改包名、图标、主题资源 、替换常量、第三方SDK Appkey配置)

Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)

需要注意配置参数的位置,因为build.gradle的层级比较乱,好几次复制粘贴弄错地方了。

 

2、修改生成的apk文件名,和文件位置

Gradle3.3 修改APK生成路径和文件名(附AAR修改方式以及分析过程)

注意网上相关的文章很多,但是随着版本的变化,很多都是老版本的,并不适用了。

默认的是每个渠道目录下都有一个debug和release文件,不方便取包。可以在debug和release中分别设置了不同的文件目录,让不同渠道的debug版的apk都到同一个debug文件下,release版的到同一个release文件下()。

 //设置生成的apk路径和名称
        applicationVariants.all { variant ->
            def dirName
            def apkName
            if (variant.buildType.name == 'release') {
                dirName = "apk_release"
                apkName = "release"
            }else{
                dirName = "apk_debug"
                apkName = "debug"
            }
            // 自定义输出路径
            variant.outputs.all { output ->
                //打包是开启,让生成的apk都在同一个文件夹下
                variant.getPackageApplicationProvider().get().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "app" + File.separator + dirName)
                //设置apk名称
                outputFileName = "${variant.productFlavors[0].name}_v${version_major}.${version_minor}.${version_private}_${releaseTime()}_"+apkName+".apk"

            }
        }

修改完成后,打包能都正常完成,但是出现直接运行报错

08/02 10:27:51: Launching app
The APK file E:\androidDemo\NewDemo\app\build\outputs\apk\dev\debug\app-dev-debug.apk does not exist on disk.
Error while Installing APK

找不到apk,分析认为,是修改生成的apk位置后,运行时生成的包进入了修改之后的文件目录中,默认文件下找不到对应的apk。修改运行设置,不实用默认apk,就可以了

 

 

ps:貌似会影响发布的速度,所以还可以在开发时关闭修改路径功能,要多渠道打包时再打开

 

3、Gradle生命周期

根据不同的构建阶段修改配置,需要先了解gradle的生命周期

Gradle基础 - 构建生命周期和Hook技术

在修改gradle的过程中遇到好多坑,发现还是要对gradle系统的学习一下

Gradle入门系列(一)——groovy基础语法

Gradle入门系列(二)——groovy高级语法

Gradle入门系列(三)——初识Gradle与Project

Gradle入门系列(四)——初识Gradle Task

Gradle入门系列(五)——Gradle其它模块与Plugin插件


http://www.niftyadmin.cn/n/1677779.html

相关文章

安全加密与证书签发工具--openssl

写在前面:博客书写牢记5W1H法则:What,Why,When,Where,Who,How。本篇主要内容:● 安全协议● 数据安全问题及解决方案● 密钥算法及通讯过程● 使用OpenSSL命令行工具创建私有CA、签发…

AndroidX迁移

在Google I/O 2018上,Android团队宣布了AndroidX。它是Android团队用于在Jetpack中开发,测试,打包,版本和发布库的开源项目。与support库一样,每个AndroidX库都与Android操作系统分开提供,并提供跨Android版…

RHEL系统安装MySQL主备环境

环境准备 操作系统: rhel6.4数据库: percona 5.6.14使用3306端口保证端口未被占用,selinux关闭状态原理说明 mysql的复制(Replication)是一个异步的复制,从一个mysql instance(称之为master)复制到另一个mysql instanc…

公众号开发网页授权获取用户基本信息不弹出提示用户选择是否授权

Q: 公众号开发网页授权获取用户基本信息不弹出提示用户选择是否授权 即使是用scope为snsapi_userinfo 解答: 关于特殊场景下的静默授权1、上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;2…

Hybrid混合开发学习笔记(1)混合应用开发定义和常见问题

一、什么是混合应用 混合应用是指同时使用前端技术与原生技术开发的 App。通常由前端负责大部分界面开发和业务逻辑,原生负责封装原生功能供前端调用,二者以 WebView 作为媒介建立通信,从而既拥有 Web 开发的速度优势,又能拥有强…

MyEclipse与Tomcat的使用以及数据源的配置

Myeclipse的使用常识: 1.编译器与环境变量运行环境>编译环境才能运行Properties(属性)->java compliler:编译器java Bulid Path:运行环境 2,调试F5:step intoF6:step overF7:step returndrop to frame:跳到当前方法的第一行resume:跳到下一个断电&…

Hybrid混合开发学习笔记(2)开发框架

一、开发框架选型 1、混合应用开发框架横向对比 目前可供选择的混合应用开发框架大致可以分为五类:基础框架、脚手架、原生编译框架、开发平台、自研框架。 基础框架 基础框架是指以 WebView 与原生 API 交互为核心的经典混合应用开发框架,典型代表是…

Elixir交互式Shell: 2. 常用命令

Elixir交互式Shell: 1. 运行时系统标记Elixir交互式Shell: 2. 常用命令Elixir交互式Shell: 3. 创建本地和远程ShellElixir交互式Shell: 4. 处理文件和脚本Elixir交互式Shell: 5. 配置IEx 这是IEx系列五部分中的第二部分, 在这一部分中, 我们将说明如何使用IEx中的命令补全 在IE…