Android利用Gradle多渠道打包如何动态替换资源,文字
来源:互联网 发布:js split 逗号分隔 编辑:程序博客网 时间:2024/05/29 21:28
我的个人小站开始发布啦,欢迎来逛逛:http://martinhan.site
动态替换APP logo
首先我们在app的build.gradle下面加入如下代码,以oem1为示例,
productFlavors { oem1 { manifestPlaceholders = [ oemIcon : "@drawable/oem1", ] }}
以上代码 manifestPlaceholders
主要是用于在AndroidManifest.xml内可以动态的替换oem图标,我们看AndroidManifest.xml
里面是如何用到这oemIcon的
<application android:allowBackup="true" android:icon="${oemIcon}" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
以上代码主要是关注android:icon="${oemIcon}"
,这个其实在gradle打包后悔自动替换成我们在build.gradle里面设置的‘@drawable/oem1’
,这样就可以根据不同渠道包替换成不同的icon
动态替换文字
首先在build.gradle里面配置我们需要的文字
productFlavors { oem1 { resValue("string","dynamic_text","oem1的动态文字") manifestPlaceholders = [ oemIcon : "@drawable/oem1", ] }}
注意:我们的string.xml里面不允许有dynamic_text字段,有的话编译会报错.
主要是resValue一行我们详细解释一下, string
表示的是我们要生成一个string字段, dynamic_text
指的是字段名称便于我们程序里面使用, "oem1的动态文字"
指的是我们的字符串的值
其实这一句想相当于我们在string.xml里面定义如下一行
<string name="dynamic_text">oem1的动态文字</string>
动态替换资源文件
如果在程序中我们有一个地方需要根据不同的渠道对应不同的drawable
,我们就可以用下列方法,下列方法是假设程序中有一处需要设置图片,思路是我们首先在gradle
里面设置好值,在AndroidManifest.xml
里面使用META_DATA,然后再从程序里面调用
build.gradle如下
productFlavors { oem1 { manifestPlaceholders = [ oemIcon : "@drawable/oem1", ] } }
AndroidManifest.xml如下
<meta-data android:name="OEM_LOGO" android:resource="${oemIcon}" />
java程序如下
MainActivity.java
img.setImageResource(Util.getMetaDataInt(this,"OEM_LOGO"));
Util.java
public class Util { public static int getMetaDataInt(Context context,String name) { try { ApplicationInfo appInfo = context.getApplicationContext().getPackageManager() .getApplicationInfo(context.getApplicationContext().getPackageName(), PackageManager.GET_META_DATA); int logo = appInfo.metaData.getInt(name); return logo; } catch (Exception e) { e.printStackTrace(); } return -1; }}
主要思路就是利用META_DATA来货渠道资源的int值并且返回到程序中,达到动态生成的目的
源码地址,点击进入
- Android利用Gradle多渠道打包如何动态替换资源,文字
- android gradle多渠道打包不同资源
- gradle多渠道打包替换图片、xml等资源文件
- gradle多渠道打包替换图片、xml等资源文件
- android Gradle多渠道打包
- Gradle Android 多渠道打包
- android gradle 多渠道打包
- Android Gradle多渠道打包
- ANDROID --GRADLE多渠道打包
- Android---Gradle 多渠道打包
- 多渠道打包图片资源替换
- 利用gradle进行多渠道打包
- Android Studio Gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio--Gradle多渠道打包
- android studion Gradle多渠道打包
- Android studio gradle 多渠道打包
- Android Studio Gradle多渠道打包
- MVC模式
- Git 关联新的远程仓库
- ubuntu 学习资料整理
- 0304
- Windows下VS2013 C++编译测试faster-rcnn
- Android利用Gradle多渠道打包如何动态替换资源,文字
- daloradius 0.9.9 汉化版radius-3
- final 的一些总结
- PIC单片机实现二进制码与压缩BCD码的相互转换
- eclipse 取消自动括号补全
- udp socket
- 作用域
- Tomcat异常:Multiple Contexts have a path of "/prodectName".
- java的BeanUtils.copyProperties会把为数据源对象中数字包装对象为null的值改成0赋值给操作对象的属性