热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android日常(09)同时集成umeng的推送和统计两个功能时,在打release包所遇到的代码混淆的问题

Android日常(09)UmengPush集成遇到的问题写在前面的话问题出现的场景处理方式组件化过程中遇到的umeng集成问题简单描述一下࿱

Android日常(09)Umeng Push集成遇到的问题

  • 写在前面的话
    • 问题出现的场景
    • 处理方式
    • 组件化过程中遇到的umeng集成问题
        • 简单描述一下:
        • 报错信息:
        • 解决办法:
    • 结束语


写在前面的话

最近在维护一个老项目,项目里面需要接入Umeng Push,但是在添加依赖的时候和初始化获取deviceToken的时候遇到了一些问题:

1.依赖报错,找不到对应的类或方法
2.获取deviceToken失败,报告应用app包名不正确

问题出现的场景

第一个问题:

添加依赖:因为之前项目中依赖过Umeng Analyze,所以基础库之前有过依赖
原来的依赖信息
// compile ‘com.umeng.sdk:common:latest.integration’
// compile ‘com.umeng.sdk:analytics:latest.integration’

新版本依赖信息
compile ‘com.umeng.umsdk:common:2.0.0’//新版本的基础库

compile 'com.umeng.umsdk:analytics:8.0.0'//新版本的统计库

// //PushSDK必须依赖基础组件库,所以需要加入对应依赖
// compile ‘com.umeng.umsdk:common:1.5.4’
// //PushSDK必须依赖utdid库,所以需要加入对应依赖
compile ‘com.umeng.umsdk:utdid:1.1.5.3’
//PushSDK
compile ‘com.umeng.umsdk:push:6.0.1’

第二个问题:

applicationId “com.xxx.yyyy”

buildTypes {
debug {

debuggable trueapplicationIdSuffix ".debug"}

处理方式

第一个问题版本依赖的处理:
umeng的sdk在有版本更新,库的内容有所不同,尽量使用最新的版本库,不要保留原有的依赖库,如果项目中出现报错,那么改掉就好了,不过实践发现,umeng的版本兼容还是做得挺好的

第二个问题出现的原因:
是因为gradle可以在debug包中对应用id进行扩展,扩展以后会导致应用包名跟你后台com.xxx.yyyy的配置不同,所以初始化会报错,另外新老版本在使用上也有一些差别

组件化过程中遇到的umeng集成问题


简单描述一下:

gradle里面的applicationId配置的是应用程序的包名。而还有一种叫做资源文件包名,也就是我们的AndroidManifest.xml文件,其中也有一个包名的配置:package="xxx“。我们需要将它也要改成跟gradle里面的applicationId一样的包名值。
看一下我们的项目,当我们安装umeng插件的时候相关的图片资源是放在app module的资源目录下面的。
在这里插入图片描述

报错信息:

Android问题解决方案 ResClass未初始化,请确保你已经添加了必要的资源。同时确保你在混淆文件中添加了.R$ 。 field=*

解决办法:

在这里插入图片描述
在这里插入图片描述

这两个包名保持一致

结束语

喜欢加个关注支持一下后续会有更多更新内容


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文介绍了包的基础知识,包是一种模块,本质上是一个文件夹,与普通文件夹的区别在于包含一个init文件。包的作用是从文件夹级别组织代码,提高代码的维护性。当代码抽取到模块中后,如果模块较多,结构仍然混乱,可以使用包来组织代码。创建包的方法是右键新建Python包,使用方式与模块一样,使用import来导入包。init文件的使用是将文件夹变成一个模块的方法,通过执行init文件来导入包。一个包中通常包含多个模块。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
author-avatar
mobiledu2502876867
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有