让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

时间:2024-03-21 11:49:46

本篇主要讲有关flavorDimensions(官网翻译过来是风味维度)打不同渠道不同包名包的配置,也能让自己加深记忆。

今天运营同事突然叫我打个不同包名的包,我就想着去AndroidManifest.xml中改个包名,本以为简简单单的事,动手之后才晓得有多恶心,改包名又费时间,还容易出错,还需要拷贝几份代码,最后还得注意混淆中的一些用到包名的地方,真是让人头大。以后要打多个不同包名的包,同一份代码老是改包名,得多浪费时间,所以就想着偷偷懒,就有了这篇故事。

正文开始,第一步:首先打开App的build.gradle,在android下找到defaultConfig,在里面添加一个 flavorDimensions "channel", "appid"

这里的channel是我用来区分不同渠道的,比如“vivo”,“oppo”等等,名字可以自己取。 appid表示不同的 applicationId。

让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

 

第二步:在defaultConfig同级目录下创建productFlavors。

让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

 

第三步:在productFlavors中创建不同渠道配置

比如我需要创建vivo渠道的包,就取名vivo,然后在里面添加dimension,dimension中的值就是上面flavorDimensions中规定的值,表示现在有一条vivo渠道:

让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

同理,现在我再添加几条其他的渠道

让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

 

第四步:我们来添加不同包名,添加两个包名,命名为app1,app2,与渠道不同的点是,dimension的值变了,变为我们上面在flavorDimensions中设置的第二个值appid,然后多了一条applicationId属性,在applicationId中填入包名。

让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

 

到这一步呢,就完成了更改不同渠道,不同包名了,接下来在工具栏找到Build -- 然后点击Generate Signed Bundle/APK,接下来就不讲了,到最后一步你会看到下面的界面。这里我还加了多个渠道,可以根据自己需求加。

让你快速打出不同包名不同渠道的安装包Apk,解决不同包名友盟第三方登录问题!

 

这只是一小部分用法,用法还有很多,可以替换string.xml,BuildConfig,还有AndroidManifest.xml中一些值的方法,这里就不说了。接下来就是解决友盟第三方登录问题,拿微信举例,友盟登录需要让自己的WXEntryActivity继承WXCallbackActivity。而WXCallbackActivity是根据applicationId寻找的。

但是在AndroidManifest.xml文件中的package属性包名其实一直没变,不是我们之前修改的applicationId,所以在修改了applicationId之后,微信登录是不会回调的,所以需要在AndroidManifest.xml中再声明一个applicationId.wxapi.WXEntryActivity这样的回调界面。

所以,我们打多少个不同的包名,就需要在AndroidManifest.xml中添加多少个回调界面,添加界面肯定得需要真实存在的activity界面,所以我把当前目录下的wxapi文件夹复制了一份,放在和当前项目同级目录下,路径是src-main-java,在java下创建一个与applicationId相同的包,然后把拷贝的wxapi文件夹粘贴进去,这样就可以在AndroidManifest.xml中进行配置了,配置之后打包就能正常使用了!

 

打多个不同的包名,就需要在AndroidManifest.xml中添加多个回调界面,然后还要复制多份wxapi文件夹,大佬们有其他解决方案的,还请多多指教!