2019独角兽企业重金招聘Python工程师标准>>>
// def releaseApkName = 'KGRingeToneV' + defaultConfig.versionName + '-release' + variant.productFlavors.get(0).name + '.apk' // output.outputFile = new File(oldFile.parent, releaseApkName) outputFileName = "KGRingeToneV${defaultConfig.versionName}-release${variant.productFlavors.get(0).name}.apk"
关于打包apk名字的定义,studio3.0之前支持是如上图直接对文件的File直接定义,升级后不再支持对file的定义,不能拿到file的写的权限,谷歌了些资料后,发现我们可以定义它的生成file文件名定义
接着是对我们的渠道进行定义的问题
flavorDimensions("channel") //顾名思义,是为我们现在要打渠道再可以多添加一个维度 productFlavors {//多渠道打包 要在manifest // _0m{} _102m { dimension "channel" } }
在原来基础上添加多了维度,在扩展维度的基础上,比如说我们commpanyA和companyB,有对应的不同渠道,可以这样写,这儿参考部分网上资料,相信其实升级是为了实现更多元化的配置,实现很多不同打包版本的需求。比如下面
productFlavors{ companyA{ dimension "company" buildConfigField "String","FLAVOR_NAME","\"companyA\"" } companyB{ dimension "company" buildConfigField "String","FLAVOR_NAME","\"companyB\"" } channelA{ dimension "channel" buildConfigField "String","FLAVOR_NAME","\"channelA\"" } channelB{ dimension "channel" buildConfigField "String","FLAVOR_NAME","\"channelB\"" } }
下面遇到最坑的估计是这个:一直说aapt2是个坑,果然确实也是坑,aapt2是aapt的估计升级版,今年18年后,以前遇到有些关于aapt的编译异常直接可以添加
android.enableAapt2=false
解决,18年后估计这个会取消,连同升级为据说studio 3.2.0 alpha版本有对这个问题修复。我目前的版本号studio 3.1.2,在编译以前老项目,因为想研究看看,遇到下面这个图片的问题,这儿注意我觉得平时少去看报错注释,其实隐含了很多信息。一般编译报错会给你报具体哪一行,这儿只有一个error: . 基本搜索不到这个问题,没认真看报错所有注释的坑,就是带来自己更长时间的困扰,找问题。排除。
下面我们认真看看它的报错信息,其实是有提示到的,是图片问题,一般aapt就负责所有resource资源的合并、编译、归整等工作,一般aapt就是比如你的layout可能有问题了,或者只是因为一个不规范的输入导致可能莫名的报错。
看到了吗,builder.png 是图片的问题,其实认真看报错有收获的。最后我看了图片几百张,每张都去看,感觉很耗时间,我打算输入部分删除法,删掉一部分,看还会不会报这个 error: .错的问题,使用了大概四五次,最后定位到有一张图片有问题,认真看确实没看出什么问题,这个图片就是个编辑过9patch图片。有点神坑。最后总算解决,编译完成,项目完美运行
最后附图:真没看出来图片啥问题,名字定义和系统显示是一样的,是不也是aapt个bug。有知道童鞋麻烦告诉下,谢谢。