gradle 打不同包名的apk

为了实现根据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)


猜你喜欢

转载自blog.csdn.net/qq_33240767/article/details/72916876