为了实现根据gradle打出不同的包需要进行以下几步:
以我们APP包名为com.lyr.demo1为例;
一、进入APP gradle;
二、查看productFlavors,我们可以看到一个
demo1{}
我们为了实现我们的功能需要在
demo1{}
的同级新建一个
demo2{} (demo2另一个包名)
在里面输入一个
applicationId 包名
versionName 版本
如:
productFlavors {
demo1{}
demo2{
applicationId "com.lyr.demo2"
versionName "1.0.0"
}
}
demo1方法里面不需要修改 因为在我们的defaultConfig里面已经存在;
三、查看sourceSets,我们可以看到一个
main {
jniLibs.srcDir 'libs'
}
demo1Release{
res.srcDir('xxx')
jniLibs.srcDir 'xxx'
assets.srcDir 'xxx'
}
demo1Debug{
res.srcDir('xxx')
jniLibs.srcDir 'xxx'
assets.srcDir 'xxx'
}
我们在这里新建
demo2Release{
res.srcDir('xxx')
jniLibs.srcDir 'xxx'
assets.srcDir 'xxx'
}
demo2Debug{
res.srcDir('xxx')
jniLibs.srcDir 'xxx'
assets.srcDir 'xxx'
}
这样我们根据gradle打包只需在Terminal就行了;
但是有时候我们因为在修改包名后许多第三方key或者log需要修改这样我们就需要这样做了
一、在APP下新建一个目录(Directory) 如:comanys
二、新建目录demo1,这里我们什么都不用修改
三、新建目录demo2,在demo2下新建目录如java、libs、res这类一级目录,现在我们的demo2相当于另一个APP的一些配置文件,
因为我们打包还是编译我们demo1的代码,所有我们在demo2下,只需要写我们与demo1不同的文件即可;
注:demo2的修改文件名必须和demo2里面的一致;
四、在appgradle下将
demo2Release{
res.srcDir('xxx')
jniLibs.srcDir 'xxx'
assets.srcDir 'xxx'
}
demo1Debug{
res.srcDir('xxx')
jniLibs.srcDir 'xxx'
assets.srcDir 'xxx'
}
修改为
demo2Release{
res.srcDir('companys/demo2/res')
jniLibs.srcDir 'companys/demo2/libs'
assets.srcDir 'xxxcompanys/demo2/assets'
}
demo2Debug{
res.srcDir('companys/demo1/res')
jniLibs.srcDir 'companys/demo1/libs'
assets.srcDir 'companys/demo1/assets'
}
在demo2Release{
}
下指向的文件,是你修改的文件的目录然后通过setDir进行指向;这样你可以打包试试是否已经修改了;
注:
支付方面的key可以编写脚本文件将appkey等值存储到.so文件中,每个不同的包名在libs下存储一个不同的so文件;
微信分享回调的activity是根据包名进行匹配的,所以我们需要在comanys下demo2新建微信回调目录,将WXEntryActivity的package修改成为com.lyr.demo2
然后每次打一个包在manifest中WXEntryActivity注册目录修改(目前只会这种)
新手记录(2017/6/8)