首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

实现了: 不同环境,不同包名; 不同环境,修改不同的 string.xml 资源文件; 不同环境,修改指定的常量; 不同环境,修改 AndroidManifest.xml 里渠道变量; 不同环境,引用不同的...不同环境,添加 string.xml 资源文件 利用 resValue 来定义资源的值,顾名思义 res 底下的内容应该都可以创建,最后用 R.xxx.xxx 来引用。...'com.roughike:bottom-bar:2.0.2' prodCompile 'com.roughike:bottom-bar:2.0.2' } xxxCompile 代表 各个渠道的名称...然后把需要分渠道的文件,放到不同的 module 里面,把主项目的文件删掉。 千万注意:如果这样做了,每次需要引用的时候,在各个渠道的 module 里面都必须要放置文件哦,不然会找不到资源。...打包完成之后,然后就可以在我们指定的目录下,看到我们所生成的apk包。

1.8K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    读书笔记--Android Gradle权威指南(下)前言笔记后记

    不同的渠道可能需要不一样的 Logo,不一样的包名,不一样的资源文件,不一样的功能模块等等,那么就可以通过这里来配置。...resValue:这是 productFlavors 或 buildTypes 里的方法,用法跟 buildConfigField 一模一样,区别仅仅是 buildConfigField 是在 BuildConfig...中生成常量,而 resValue 是在 res/value.xml 中生成对应的字符串资源。...tech.meituan.com/mt-apk-packaging.html 6.5 Gradle 性能检测 命令:gradlew build -profile 在项目根目录下执行完该命令后,就可以在 build/report 下找到生成的报告文件...,也可以是网络上的脚本,本地脚本时,from 后面填写脚本的相对路径名称即可,如果脚本文件跟 build.gradle 在同一层级,直接写脚本文件名即可。

    72430

    Android实现同时安装测试环境与生产环境包,及区分app名和图标

    ***Android***实现同时安装测试环境与生产环境包 众所周知,相同包名的APP,是不能同时安装的,但是我们实际开发中,测试同学往往在测试环境没问题,上了生产环境,却发现了bug,这时候就只能卸载生产环境的包...那么有没有一种可能,同时安装测试与生产环境的包呢?...这个当然是可以的,我们更换包名就行了,Android Studio早已为我们准备了相应的操作: 很简单,就一句,给你的app, buildTypes -debug下面增添加如下代码: applicationIdSuffix...需要注意的地方 叮叮当 如果你的APP内含有分享或者推送,那么测试版如果与线上用的是同一个appid与servert,那么测试版可能都会失败,当然这也很正常(如果不是同一个,自己处理下即可,怎么处理呢...所以这点需要注意,逻辑上的功能都没什么问题。 如果不是同一个id,处理方式如下 同样是buildType下更改debug和release,分别对应的不同id, ...

    1K50

    Android厂商推送Plugin化 | 掘金技术征文-双节特别篇

    buildSrc + setting 给大家安利下这个模式,buildSrc的模式下,我们可以不需要推本地的jar就可以直接调试plugin插件,这个就解决了plugin插件非常不好调试的问题。...安利下我大佬的一个Demo项目,有兴趣的可以参考下这个。 小贴士 对于插件的调试 可以在....debug buildTypes resValue 我们有时候在写build.gradle的时候,会在buildTypes中增加一些resValue "string", "AppName", "app1...我们最后会在build/generated/下面生成一个资源文件gradleResValue.xml,它会在在编译时会被合并到项目资源文件内。...这个时候我们只要获取到android的Extension,就可以像在build.gradle调用resValue一样,调用defaultConfig内的resValue方法,去添加资源信息了。

    94550

    使用Gradle管理你的Android Studio工程

    看其属性的名字就可以知道其作用,比如applicationId是配置包名的,versionCode是版本号,versionName是版本名称等。...下面我们分析一下,Android Gradle任务比较复杂,它的很多任务都是自动生成的,为了可以更灵活的控制,Android Gradle提供了applicationVariants、libraryVariants...,也是和buildConfigField,只不过它控制生成的是资源,比如我们在android的values.xml定义生成的字符串。...可以用它来动态生成我们想要的字符串,比如应用的名字,可能一些渠道会不一样,这样就可以很灵活的控制自动生成,关于resValue详细介绍请参考相关文档,这里不再举例说明。...一般我们这个插装只是在特性情况下,那么我们新增一个特殊的flavor好了,专门做这个使用,这里我姑且叫feature。

    1K40

    Android Gradle 多渠道打包

    BaseApi是我们自己定义的,其他的都是默认生成的,这里我们可以看到,应用包名也是我们指定的。...resValue我们可以修改变量的值,这个值会生成在string.xml中,比如上面我们定义了一个tip变量,需要注意的是,这个变量不能出现在string.xml中,否则会提示资源重复。...raw下的资源或者assets下的资源,这种情况下我们就需要 使用下面的方式: 在src目录下新建与main同级且与渠道名称一样的文件包名,并且新建res资源目录,放入图标使用的图片资源,必须要与main...中的名称相同才可以覆盖,如图所示: ?...我们直接编译会出现上面的问题,因为module模块可能没有生成对应的编译资源,因为android的默认编译是debug类型的,所以为了和app主模块同步,我们设置去掉默认的发布类型,需要在module中的

    1.2K50

    Gradle从入门到了解 - 简书

    比如一个Android APK的编译可能包含:Java源码编译Task、资源编译Task、JNI编译Task、lint检查Task、打包生成APK的Task、签名Task等。...有时我们需要发布介于debug与release之间的preview 版本。...Build Variant 差异管理 比如app生成不同版本(免费,收费),适配特殊机型,多渠道等需要发多个包,最终能编译出的apk的数量是由Product Flavor(产品种类)与Build Type...需要注意的是BuildConfig定义的变量实在当前module下,如果还有一个基础module需要直接在基础module的gradle下配置。...资源和mainfests的优先级是这样的: ? 如果一个资源在main中和在flavor中定义了,那么那个在flavor中的资源有更高的优先级。

    1.7K30

    【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#resValue 方法 | ProductFlavor#dimension 维度属性 )

    /2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html ProductFlavor#resValue 方法用于生成同一个 resource...资源 , 该操作等价于在 res/values 目录下的文件中配置一个特定类型的值 ; 如 : 在 build.gradle 的 " android # defaultConfig " 层级中设置如下内容..., android { defaultConfig { // 生成 res/values 目录下定义的资源 resValue("string", "gradle_res_config...Gradle Res Config 编译之后 , 可以在 Android 代码中 , 使用 R.string.gradle_res_config 获取该生成的配置数据...; 在 Android 的 Activity 代码中 , 可以直接通过 R 资源获取该数据内容 ; 二、ProductFlavor#dimension 维度属性 ---- ProductFlavor

    45920

    从构建工具看 Android APK 编译打包流程

    生成BuildConfig文件,资源文件 在引入Gradle编译工具之后,Apk的打包流程就多了这么一步,生成BuildConfig文件和资源文件。...把所有的Android资源文件进行解析,生成扩展名为.flat的二进制文件。比如是png图片,那么就会被压缩处理,采用.png.flat的扩展名。...首先,这一步会生成辅助文件,比如R.java(R文件),R文件大家应该都比较熟悉,就是一个资源索引文件,我们平时引用也都是通过R.的方式引用资源id。...1、链接过程优化 在AAPT中是没有链接功能的,会将所有的资源进行编译生成压缩包。这样处理方式有个缺点就是每次编译都要全量编译。...当注解的生命周期被设置为CLASS的时候,就代表该注解会在编译class文件的时候生效,并且存在与java源文件和Class字节码文件。

    4.1K30

    【Android Gradle 插件】BuildType 编译类型配置 ⑧ ( versionNameSuffix 配置 | zipAlignEnabled 配置 | initWith 方法 )

    版本号名称的后缀 ; 在计算 变体 ( debug 或 release ) 的最终版本名时,这会附加到 “基本” 版本名之后 , 基本版本名称就是 defaultConfig 中的 versionName..."1.0" 配置 ; 版本名称后缀 ; 在计算 变体 ( debug 或 release ) 的最终版本名时,这会附加到 “基本” 版本名之后。.../2.3/com.android.build.gradle.internal.dsl.BuildType.html BuildType#initWith 方法 作用是 拷贝一个 " 给定的 编译类型 "...方法 ; 此时 如果不配置 tom 编译类型的其它选项 , 则 tom 编译类型 与 debug 是一模一样的 ; android { compileSdkVersion 30 buildToolsVersion...未使用的资源会被优化 shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt

    56310

    Android开发笔记(一百七十三)给安装包APK文件瘦身

    、实例名、变量名替换为简短且无意义的名称,例如Student类的名称可能改为a,方法getName的名称可能改为b等等; App的Java代码经过压缩和混淆之后,打包生成的APK文件会随之变小。...时便会自动移除无用的资源文件。...同时开启代码压缩和资源压缩的buildTypes节点配置示例如下:     buildTypes {         release {             minifyEnabled true            ...,原始质量的高清图片与有损压缩后的图片在视觉上没有什么差别,因此适当压缩图片质量也是减小APK体积的一个重要途径。...此时需要修改模块的build.gradle,在release节点下添加so文件的过滤规则,详细的过滤配置如下所示:     buildTypes {         release {

    79310

    Android Gradle必备基础知识

    把这些manifest属性放到build文件中的一个重要功能就是它可以被动态的设置。例如,可以通过读取一个文件或者其他逻辑来获取版本名称。...它结合了代码(例如jar包或者本地.so文件)和资源(manifest,res,assets)。每个library也可以单独设置Build Type等来指定生成不同版本的aar。...每个Build Type都会生成一个apk.Product Flavors也是同样的:项目的输出僵尸所有Build Types与Product Flavors的结合。...不仅会移除项目中未使用的资源,而且还会移除项目所以来的类库中的资源。注意,资源清理只能在与代码清理结合使用(例如ProGuad)。这就是为什么它能移除所依赖类库的无用资源。...通常,类库中的所有资源都是使用的,只有类库中无用代码被移除后这些资源才会变成没有代码引用的无用资源。 android { ...

    88810
    领券