gradle 打不同包名的apk

xiaoxiao2021-02-28  70

为了实现根据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注册目录修改(目前只会这种)

 

 

 

转载请注明原文地址: https://www.6miu.com/read-80487.html

最新回复(0)