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

Android Gradle实用技巧(五) | 善用AndroidManifest占位

占位,其实是一个可以被替换的临时标记,比如${name},我们就可以使用真实的name变量的替换这个占位,达到可以动态的修改这个占位的目的。...Gradle为我们提供非常便捷的方法让我们来替换AndroidManifest文件中的内容,它就是ManifestPlaceholder,Manitest占位。...manifestPlaceholders是ProductFlavor的一个属性,他是一个Map类型,所以我们可以同时配置很多个占位。...UMENG_CHANNEL的内容替换为我们manifestPlaceholders中对应的value。...Android Gradle为我们提供manifestPlaceholders占位的方式,让我们可以替换AndroidManifest文件中任何${Var}格式的占位,所以它的使用场景不限于渠道名这一个

1.5K20

【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#manifestPlaceholders 清单文件占位配置 )

文章目录 一、ProductFlavor#manifestPlaceholders 清单文件占位配置 Android Plugin DSL Reference 参考文档 : 文档主页 : https...一、ProductFlavor#manifestPlaceholders 清单文件占位配置 ---- ProductFlavor 参考文档 : com.android.build.gradle.internal.dsl.ProductFlavor.html...ProductFlavor#manifestPlaceholders 配置 , 用于配置 manifest占位 , 该配置项是 Map 类型的 ; 在 build.gradle...的 ProductFlavor defaultConfig 配置项中 , 设置清单文件占位属性 , 为其设置一个 Map 类型的属性 ; 代码示例 : android...中定义的 manifestPlaceholders = [name: 'Tom'] , 在合并清单文件时 , 会自动使用 Tom 替换上述 {name} 引用 ; <meta-data android

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

一个字符解决Gradle aar编译参数传递问题是怎样一种体验

这时候主项目依赖testlibrary的时候,需要给testlibrary传一个key,那么考虑将key写在gradle.properties中,通过manifestPlaceholders来进行引用,...而且,不管你怎么做,不替换manifestPlaceholders,是肯定编译不过的。那么是不是意味着manifestPlaceholders这条路是行不通的呢?...我们先来仔细分析下问题的原因,我们在编写aar代码的时候,希望aar能够接收外界传来的编译参数,但是,在编译aar的时候,需要提供具体的替换这些manifestPlaceholders,否则,则编译不过...解决办法自然是有的,比如,使用一个特殊的标志,例如xxxxx_abc这样的标志,在主项目中,通过Task来进行Mainifest的替换,但是,这肯定不是我们想要的,因为,Gradle没有这么Low啊!...So easy,一个字符解决所有问题。

85310

Android Gradle 多渠道打包

resValue我们可以修改变量的,这个会生成在string.xml中,比如上面我们定义一个tip变量,需要注意的是,这个变量不能出现在string.xml中,否则会提示资源重复。...如果要定义在配置文件中使用的,则需要使用 manifestPlaceholders 我们分别修改app_name的,在配置文件中使用占位${} 使用,如下: android:label="${app_name...如何使用不同的app图标 那么如何修改不同渠道的app图标呢,当然我们可以在manifestPlaceholders中添加图标资源的占位,但是我们这里使用另一种方法, 有时候我们不仅要替换图标,可能要替换...不同渠道如何使用不同java文件 同不同渠道使用资源文件一样,不过需要注意的是,main文件中就不能存放要替换的java文件,否则会报资源重复的错误,同样的我们在base模块分别新建baidu和sougou...到这里,常用的多渠道打包需要的配置就结束,如有错误欢迎指正。

1.2K50

Android实现获取meta-data和build.gradle

也会用到定义在build.gradle文件中android标签下的defaultConfig标签下,添加manifestPlaceholders标签中,有可能也会用到渠道。...中的manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, JPUSH_APPKEY : "xxxxxxxxxxxxxxxxx...JPUSH_CHANNEL : "developer-default", //暂时填写默认即可. ] 原理是一样的,manifestPlaceholders标签下的需要在清单文件AndroidManifest.xml...中占位显示,这里占位极光渠道号(ps:不知道极光文档有没有直接获取的): 这里 name 为 名字随意,不重复就行,value 为manifestPlaceholders下的定义的,必须采用 ${变量值...的就是小编分享给大家的全部内容,希望能给大家一个参考。

2.3K20

Android 配置gradle实现VersionCode自增实例

versionName,有需要也可以看看其他人的实现。...以下介绍下配置Gradle自动增加versionCode的 一、项目的根目录新建一个文件version.properties ? 二、文件内容写上初始的versioncode ?...Manifest.xml中的 根据情况替换 Manifest.xml 中的 android 中有很多个渠道,每个渠道都有 debug 和 release 版本, 如果Manifest.xml 中每个版本有不同的...一般的可以用 manifestPlaceholders = [APP_KEY : ‘对应的’] 来替换,在 debug和 release 的时候也可以,但是多渠道的时候可能就会有些问题了 解决方式...${current.name}"] } } 以上这篇Android 配置gradle实现VersionCode自增实例就是小编分享给大家的全部内容,希望能给大家一个参考。

1.2K31

使用Gradle管理你的Android Studio工程

还好Android Gradle给我们提供productFlavors,让我们可以对生成的APK包进行定制,所以就有多渠道。...AndroidManifest里的占位 AndroidManifest.xml这是一个很重要的文件,我们的很多配置都在这里定义。...,这样这个meta-data的就表示这个apk是哪个渠道,我们版本发布有几十个渠道,以前ant打包的时候是采用文字替换的办法,现在Gradle有更好的处理办法,那就是manifestPlaceholders...,它允许我们动态替换我们在AndroidManifest文件里定义的占位。...: 'dev'] } } 以前的意思就是我们的默认配置里AndroidManifest的${UMENG_CHANNEL_VALUE}占位会被dev这个字符串所替换,也就说默认运行的版本是一个开发板

96140

gradle打包android (实现外部导入签名文件、多渠道打包、导入ant脚本)

最近一直在做android自动打包,之前已经完成了用纯命令行的形式打包、原生态ant脚本打包,和基于android的SDK的打包,并且实现多渠道打包,后来同事推荐gradle,网上的资料说...gradle各种好,自己也感兴趣是实现一下,其实一般来说由于android对eclipse的支持减弱,大部分的人都是用gradle与android studio融合,这样面的例子也会比较多,笔者所在的项目还是在..." android:value="${CHANNEL_NAME}" /> build.xml添加了一个target,用cmd命令写gradle deploy就可以执行里面的内容...,替换都定义在相对应的配置文件中 <substitution expression="public static final Host host = Host.Test;"...svn自动获取,这个网上有很多的版本可以学习,另一个是用脚本修改build.gradle文件,动态变换签名(其实也可以做批量修改)和动态增加这些功能的代码,可以用shell,可以用python,各位用需要可以试一下

64610

android友盟统计分渠道打包

为什么要提供多渠道包 国内存在着有众多的应用市场,产品在不同的渠道可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。...友盟的多渠道打包 友盟就提供多渠道打包的方式,可用于渠道统计等。 现在Android的构建工具换成了gradle,通过gradle,简单配置后就可以实现自动打所有渠道包。...补充知识 了解下BuildTypes、Flavors、BuildVariants三个定义: 1、BuildTypes : 构建类型,AndroidStudio的Gradle组件默认提供“debug...1.按照umeng的要求,manifest文件中需要有(在application下,和activity是并列关系): <meta-data android:name=...= [UMENG_CHANNEL_VALUE: name] } 如果没有错误的话,效果是这样的 打包发布后,在友盟后台看到的效果是这样的 这样运营就可以很方便的看到不同渠道的用户等,很方便

54410

android如何多渠道打包?

多渠道快速打包 快速打包方案Version_1.0 如上所说,我们去到信息只是修改了一下manifest文件里面的一个meta-data的而已,有没有什么办法可以不需要重新构建代码呢?答案是肯定的。...apktool d yourApkName build 经过解码后,我们会得到如下文件: 我们发现我们需要修改的manifest文件就在里面,所以通过命令可以修改下他的内容,然后重新打包,就可以生成一个全新的渠道包了...使用一下Python脚本,将manifest文件里面channel信息进行替换。...v2,它是一个对全文件进行签名的方案,能提供更快的应用安装时间、对未授权APK文件的更改提供更多保护,在默认情况下,Android Gradle 2.2.0插件会使用APK Signature Scheme...但在新的应用签名方案下META-INF已经被列入了保护区,向META-INF添加空文件的方案会对区块1、3、4都会有影响,新应用签名方案签署的应用经过我们旧的生成渠道包方案处理后,在安装时会报以下错误

1.3K10

android studio 打包自动生成版本号与日期,apk输入路径详解

补充知识:Android编译gradle 动态修改版本号 在构建代码的时候不想每次都修改版本号,需能够增加一个功能在特定的条件下动态的修改版本号 在manifest里面加入占位符号 <manifest...", versionJsonObject.versionName) } //为了记住最新的版本号,是需要进行文件的回写的,什么时候回写会好一点 //个人认为只有当打包apk的动作执行成功后...- //这里如果assembleceshirelease 就具体的打包的变种项目,各个应用肯定不一样,需要调整下 if (task.name.toLowerCase()....pathString) file.renameTo(pathString) } 以上这篇android studio 打包自动生成版本号与日期,apk输入路径详解就是小编分享给大家的全部内容,...希望能给大家一个参考。

3.1K20

Android Build Variants 为项目设置变种版本的方法

//防止方法数量超过65536导致错误 } debug { minifyEnabled false multiDexEnabled true } } // If you need to...2.Build Variant牛刀小试: 现在我们可以在build.gradle文件中加一些小「佐料」: productFlavors { production { manifestPlaceholders...添加占位${APP_NAME}: <application android:icon="@mipmap/ic_app_icon" android:label="${APP_NAME}"//app名称,...4.总结 这样的好处是很明显的,「首先」我们不管有多少不同环境的配置,我们只需要配置一次,以后想切换到哪种环境,我们只需要切换到该变种就可以;「其次」,这样的结构非常清晰,等同于我们有N套不同版本的代码...,不会代码多了版本多了,人就蒙

2K10

Android多渠道打包的方法步骤

本文介绍Android多渠道打包的方法步骤,分享给大家,具体如下: 1.生成签名文件 点击 Build – Generate Signed APK: ? 2.创建一个签名 ?...红色填写部分需要认真填写,并牢记,其余部分随意填写 有签名,单个app打包我就不详细说了,具体说下多渠道打包的步骤 2.多渠道打包 作用:就是根据不同的渠道,去具体分析每个渠道的用户情况 步骤一:...在AndroidManifest.xml的application标签里添加一个meta-data标签定义 <meta-data android:name="UMENG_CHANNEL"...android:value="${UMENG_CHANNEL_VALUE}" / 步骤二: 修改app下的build.gradle文件,在build.gradle中添加productFlavors属性配置占位...设置的渠道名字一样 2.创建values- strings.xml文件并创建字段”app_name”为自己想要的应用名称 3.修文应用图标,在baidu文件夹下创建res文件夹,并且在res文件夹下边创建

1.8K40

看不懂的 build.gradle 代码

build.gradle 这个文件接触这么久了,基本的项目配置也基本很熟悉,毕竟每次自动创建的 build.gradle 里的代码就那么几项配置,看一下那些英文单词也基本猜到是什么配置。...locationNum=12 apply plugin: 'me.tatarka.retrolambda' //这里是groovy的代码,定义一个获取时间的方法,groovy是兼容java,它可以直接使用...rootProject.ext.android.buildToolsVersion //同理,这里都是通过获取全局设置的变量值来进行相关配置,这样做的好处在于当 //你的项目里有多个model时,可以方便修改这些公共的配置,只需要修改一个地方就可以同步...api 服务器等等 productFlavors { fir { //这个的作用是将 AndroidManifest.xml 里的占位...¥{UMENG_CHANNEL_VALUE} 的替换成fir manifestPlaceholders = [UMENG_CHANNEL_VALUE: "fir"]

1.5K50

App中如何获取gradle的配置信息

前言 在Android开发中我们一般需要在app里获取gradle里的配置信息: 1.在程序里使用gradle里的配置项, 2.在resouce里使用gradle里的配置项?...而这些信息需要被很多类共同使用,所以必须有一个全局的配置 2,当需要把项目push到git上时,我们不希望别人看到我们项目的key,token等。...通过build.gradle中的配置,可以直接使用@string 访问 方法二:(不常用,推荐使用方法一) 项目中有登录页面,平时调试的时候每次都输入用户名密码来登录太麻烦,写成固定发布的时候又要重新替换和注释...在Android项目文件中的build.gradle中,在android标签下的defaultConfig标签下,可以添加manifestPlaceholders,里面可以存一些app的配置信息,比如是否是发布版本...然后代码中就可以写个工具类来获取manifest文件的meta-data的。代码: ? 代码中再根据返回的进行判断和控制即可。

2.9K10

Android 新一代多渠道打包神器

Android Gradle Plugin Gradle Plugin本身提供多渠道的打包策略: 首先,在AndroidManifest.xml中添加渠道信息占位: <meta-data android...会用不同的渠道信息替换AndroidManifest.xml中的占位。...2)Gradle会为每个渠道包生成一个不同的BuildConfig.java类,记录渠道信息,导致每个渠道包的DEX的CRC都不同。一般情况下,这是没有影响的。...其次,如果破坏者同时修改了对应文件在MANIFEST.MF文件中的Base64,那么MANIFEST.MF中对应数据块的Base64就和CERT.SF文件中的记录不一致,导致校验失败。...原来Google提供一个同时支持V1和V2签名和校验的工具:apksig。它包括一个apksigner命令行和一个apksig类库。

6.1K20
领券