Android中在使用第三方sdk时,经常需要在AndroidManifest.xml里配置一些元数据,比如
<meta-data
android:name="DEMO_CHANNEL"
android:value="${CHANNEL_VALUE}"/>
一般情况下CHANNEL_VALUE都是在gradle里的manifestPlaceholders配置的变量,比如:
manifestPlaceholders = [
CHANNEL_VALUE : "2882303761519957982",
]
此时CHANNEL_VALUE的值在打包后就会变成类似1457557760.000000
这样的浮点值:
出现这个问题的原因可能是因为gradle把值当作数字类型处理了,
解决这个问题的有两种解决方案:
- 这种情况不适合使用渠道;不使用manifestPlaceholders ,使用res,比如
resValue 'string', 'channel_value', '11111111111'
然后这样使用
<meta-data
android:name="DEMO_CHANNEL"
android:value="@string/channel_value"/>
- 解决方案二:如果使用渠道的话也可以用这个解决方案
gradle配置不变,清单文件里的配置做一点改动:如下:
<meta-data
android:name="DEMO_CHANNEL"
android:value="/${CHANNEL_VALUE}"/>
<!-- 再前面加入/进行转义 -->
<!-- 还有的说再后面假如\0,比如: android:value="${CHANNEL_VALUE}\0" -->