美文网首页
记一个修改包名导致友盟微信登录失败的低级Bug

记一个修改包名导致友盟微信登录失败的低级Bug

作者: pinkong | 来源:发表于2018-04-10 23:09 被阅读0次

    产品经理有个需求,希望某个渠道的渠道包包名加上渠道ID,实现起来也很简单,在gradle里面用manifestPlaceholders替换掉包名就可以了:

        // 添加渠道后缀
        def suffix = "";
        if("xxxx".equals(variant.flavorName)) { //这个渠道包名加上渠道号
            suffix = variant.flavorName
        } 
        // 生成包名
        flavor.applicationId = defaultConfig.applicationId + suffix
        // 替换manifest
        flavor.manifestPlaceholders = [package_name: flavor.applicationId]
    

    但是运行时发现友盟的微信登录和分享不可用了,打开友盟的debug开关,登录时候弹出下面这个框:

    一开始以为是微信开发者后台配置的问题,检查完appid,包名,签名都确定无误。一筹莫展之下,只好再去看友盟的文档。注意到有一句:

    在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。
    

    这边强调在在代码目录下,恍然大悟,友盟是默认包名+.wxapi.WXEntryActivity来查找回调的回调activity的,刚才我们在包名后面加了渠道号,但是WXEntryActivity的路径却没变。我们在原包名目录下创建渠道包的文件夹,拷贝wxapi进去,修改里面WXEntryActivity文件的包名,同样也需要manifest文件中声明这个activity。如下图:

    image.png
    bug虽然低级,却几乎花了我一下午时间,所以这边记录一下。

    相关文章

      网友评论

          本文标题:记一个修改包名导致友盟微信登录失败的低级Bug

          本文链接:https://www.haomeiwen.com/subject/umqohftx.html