mPaaS扫一扫记录

mPaaS扫一扫记录

经常收到产品的灵魂拷问:问什么微信二维码可以很快识别出来,咱们的APP就不行?
还好当时看到阿里移动开发平台mPaaS开放了扫一扫功能。
目前来说mPaaS的扫一扫是免费框架里边识别效率最快的,使用原生AAR方式可快速接入。
点击接入mPaaS扫一扫
进入链接,看文档接入就行了。这里不累赘,记录下混淆后出现闪退的情况
扫一扫混淆方式
开启混淆后,调用扫一扫会出现闪退情况。
日志提示:

 1. E/LoggerFactory: [main] java.lang.ClassNotFoundException:
    com.alipay.mobile.tianyanadapter.logging.LoggingReflectedEntry
    
    
 
 2.  FATAL EXCEPTION:java.lang.RuntimeException: Unable to start activity
        ComponentInfo{com.demo/com.alipay.mobile.scansdk.activity.MPaasToolsCaptureActivity}:
        android.content.res.Resources$NotFoundException: Resource ID
        #0xffffffff

关键看第二条提示:

android.content.res.Resources$NotFoundException: Resource ID #0xffffffff

原来是咱们混淆后把R文件给混淆了,因此还需要手动在混淆文件中添加规则保留R下面的资源

# 保留R下面的资源
-keep class **.R$* {*;}

至此,咱们项目完全解决二维码扫码难,识别低等问题了,再也没收到反馈说二维码不好扫的问题。

2020-10-30更新

今日在引入扫一扫功能到之前项目时出现了异常:

org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException处理

org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException
> Could not find method platform() for arguments [com.mpaas.android:mpaas-baseline:10.1.68-6] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

这是由于gradle版本低引起的,升级后就解决了
根目录下 >> gradle >> wrapper >> gradle-wrapper.properties文件 >> distributionUrl属性

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

附上gradle各个版本号

2020-11-24 更新

今天在另一个项目,正式APK使用扫一扫无法弹出扫描框,看了下日志:

开启混淆无法使用:

2020-11-24 11:17:11.000 13702-13702/? W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])' on a null object reference
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at com.uinshine.enterprisebottlemanage.ui.business.bottlesearch.KtBottleSearchActivity.i(SourceFile:9)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at com.uinshine.enterprisebottlemanage.ui.business.bottlesearch.KtBottleSearchActivity.h(SourceFile:2)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at com.uinshine.enterprisebottlemanage.ui.business.bottlesearch.KtBottleSearchActivity.onClickScanQrCode(SourceFile:1)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at androidx.appcompat.app.AppCompatViewInflater$a.onClick(SourceFile:14)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.view.View.performClick(View.java:6608)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.view.View.performClickInternal(View.java:6585)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.view.View.access$3100(View.java:785)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.view.View$PerformClick.run(View.java:25921)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.os.Handler.handleCallback(Handler.java:873)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.os.Looper.loop(Looper.java:201)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6810)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
2020-11-24 11:17:11.001 13702-13702/? W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

未加混淆可以使用,但是报错内容如下:

2020-11-24 10:50:11.256 6261-6399/com.* W/LogRSAUtil: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object byte[].clone()' on a null object reference
        at java.security.spec.EncodedKeySpec.<init>(EncodedKeySpec.java:56)
        at java.security.spec.X509EncodedKeySpec.<init>(X509EncodedKeySpec.java:64)
        at com.alipay.mobile.common.logging.util.RSAUtil.a(RSAUtil.java:41)
        at com.alipay.mobile.common.logging.util.RSAUtil.encrypt(RSAUtil.java:61)
        at com.alipay.mobile.common.logging.util.HybridEncryption.encrypt(HybridEncryption.java:91)
        at com.alipay.mobile.common.logging.appender.FileAppender.a(FileAppender.java:110)
        at com.alipay.mobile.common.logging.appender.ExternalFileAppender.f(ExternalFileAppender.java:246)
        at com.alipay.mobile.common.logging.appender.ExternalFileAppender.a(ExternalFileAppender.java:140)
        at com.alipay.mobile.common.logging.appender.AppenderManager.a(AppenderManager.java:185)
        at com.alipay.mobile.common.logging.LogContextImpl.syncAppendLogEvent(LogContextImpl.java:692)
        at com.alipay.mobile.common.logging.LogContextImpl.b(LogContextImpl.java:217)
        at com.alipay.mobile.common.logging.LogContextImpl$AppendWorker.run(LogContextImpl.java:146)

2020-11-24 10:57:12.227 6261-6261/com.* E/[Scan]CameraScanHandler: [main] cameraHandlerThread is quit
2020-11-24 10:57:12.381 6261-6399/com.* E/Appender: mPaaSPerformanceAndroid first append: [just check, not a real error] java.io.IOException: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.**/files/mdap/com.*-main_mPaaSPerformanceAndroid (No such file or directory)

检查后发现是未添加扫一扫混淆规则,因此导致开启混淆后,正式服APK无法使用扫一扫功能。
再次发出扫一扫混淆方式,请一定要添加混淆规则!

2020-12-9更新

近期突然收到阿里云接二连三的欠费提示

在这里插入图片描述

看到预计停止服务在我百年之后,心里还琢磨着不管了。

想了想还是看看吧,万一牵扯到我芝麻信用咋整。

我有用到阿里系列的就是扫一扫,但说是免费的啊。于是重新看了遍文档,发现扫一扫常见问题中最后一条写着:


扫一扫组件收费吗?

解答:扫一扫组件的接入不计费,但扫一扫组件在使用过程中,会收集日志以获得扫码次数、扫码成功次数、扫码失败次数等信息以对扫码性能进行监控和分析,日志的采集过程依赖于计费的移动分析服务,因此会产生一定的费用。更多信息,请参见 移动分析服务的计费信息。

扫一扫组件的日志埋点会在初始阶段配置并默认开启日志上报,如需关闭,请参考文档 日志上报。


原来是默认开启日志上报,所有只要把日志上报关掉就行了,参考文档 日志上报:通过控制台的 移动分析 > 日志管理 > 配置上传开关 > 埋点配置 页面动态控制日志上报的时机。
页面太好找,所以贴一下步骤链接:
步骤一、登录阿里云(用的支付宝扫描登录)
步骤二、打开移动开发平台mPaaS
2.1、如果你有多个应用,请逐一点击移动分析
如果你有多个应用,请点击移动分析
2.2、点击日志管理
2.3、点击配置上传开关
2.4、点击埋点配置(当时我真的没想到这是个按钮,还以为是纯文本无点击事件)
打开埋点配置
2.5、初始化业务
2.5初始化业务
步骤三、关闭扫码日志上报按钮
3.1、耐心等待初始化业务完成后可以看到配置列表,切换到第三页。
3.2、关闭扫码日志按钮一共四个
关闭日志上报按钮
步骤四、关闭分析客户端性能埋点日志
这一步很特殊,该埋点日志默认开启,且不在初始化列表中,需要新增业务关闭。
1,在日志管理页面,新增埋点“mPaaSGrossReport”(大小写不敏感,mpaasgrossreport也支持);
2,关闭“mPaaSGrossReport”埋点上报(上报按钮开关设置为“关”)
3,约 1 分钟后,全服生效。后续客户端默认日志不再上报。

步骤四新增业务
步骤四新增code内容
关闭上报日志按钮
最终图

步骤五、把欠的费用交了

产生的日志100天后,系统会自动删除。
至此因扫码日志上报而产生收费的问题已经解决。

2021-10-14日更新

近期因升级Android Studio,在打开项目时候总会提示mPaaS与当前IED不兼容

Plugin "mpaas_boost_idea_3.0.200828" was not installed: Downloaded version is incompatible with the current IDE: Plugin 'mPaaS' (version '3.0.200828') is not compatible with the current version of the IDE, because it requires build 193.* or older but the current build is AI-203.7717.56

可以看出,我们之前使用的mPaaS为3.0.200828,适配Android studio版本193*,而我当前使用版本是203*
在这里插入图片描述
因此需要去插件市场更新这个mPaas插件
在这里插入图片描述
但是由于我插件有问题,找不到最新的mPaas插件,于是访问mPaas历史发布版本自行下载到本地,再去导入该最新插件。
在这里插入图片描述

这里贴一下导入本地插件的方式:
依次点击:1、File–> 2、Settings–>3、Plugins–>4、"设置"小图标–>5、Install Plugin from Disk

在这里插入图片描述
在弹出的选择路径页面选择下载的插件,ZIP包或JAR即可无需解压。在这里插入图片描述
在这里插入图片描述
至此因mPaaS和Android Studio不兼容的问题已解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值