解决Android百度自动更新SDK和360自动更新SDK兼容

Android-GLAutoUpdateSDK自动化更新sdk GLAutoUpdateSDK 自动化更新sdk 立即下载

解决Android百度自动更新SDK和360自动更新SDK兼容


最近上架的一个项目相序的被百度平台和360平台下架,郁闷的同时只能询问客服,得到的回复都是‘**平台的自动更新SDK会在您系统自动安装有害系统的软件,请使用本平台提供的更新SDK’,强制使用它平台的更新外还不可以兼容其他平台,对于这种行为,作为开发者只能忌于百du 360的淫威寻找其他出路。

解决方案

  • 创建两个不同的Module,分别存放360更新sdk和百度更新sdk
  • 两个Module中存放着相同的包名和方法名
  • 分平台创建不同的渠道包,不同渠道引用不同的Module
  • 上传到Jcenter方便引用,发布开源项目到Jcenter/Bintray

创建两个Module

1.360更新工具类

/**
 * 360更新工具类
 * Created by deng on 2016/11/11.
 */
public class UpdateUtils {
    /* 手动更新 , 自动更新 , 强制更新*/
    public static final int CHECK_MANUAL = 0, CHECK_AUTO = 1, CHECK_FORCE = 2;
    private UpdateUtils() {}
    private static UpdateUtils instance;

    public static synchronized UpdateUtils getInit() {
        if (instance == null)
            instance = new UpdateUtils();
        return instance;
    }

    /**
     * 默认版本更新方法
     * @param mContext
     * @param checkUpdateType
     */
    public void update(Context mContext, int checkUpdateType) {
        String packageName = getPackageInfo(mContext).packageName;
        long intervalMillis = 10 * 1000L;           //第一次调用startUpdateSilent出现弹窗后,如果10秒内进行第二次调用不会查询更新
        switch (checkUpdateType) {
            case CHECK_MANUAL:
                UpdateHelper.getInstance().init(mContext, Color.parseColor("#0A93DB"));
                UpdateHelper.getInstance().setDebugMode(false);
                UpdateHelper.getInstance().manualUpdate(packageName);
                break;
            case CHECK_AUTO:
                UpdateHelper.getInstance().init(mContext, Color.parseColor("#0A93DB"));
                UpdateHelper.getInstance().setDebugMode(false);
                UpdateHelper.getInstance().autoUpdate(packageName, false, intervalMillis);
                break;
            case CHECK_FORCE:
                UpdateHelper.getInstance().init(mContext, Color.parseColor("#0A93DB"));
                UpdateHelper.getInstance().setDebugMode(false);
                UpdateHelper.getInstance().autoUpdate(packageName, true, intervalMillis);
                break;
            default:
                break;
        }
    }

    /**
     * 手动配置参数
     * @param mContext
     * @param config
     */
    public void update(Context mContext,UpdateConfig config){
        String packageName = getPackageInfo(mContext).packageName;
        long intervalMillis = 10 * 1000L;           //第一次调用startUpdateSilent出现弹窗后,如果10秒内进行第二次调用不会查询更新
        switch (config.getUpdateType()) {
            case CHECK_MANUAL:
                UpdateHelper.getInstance().init(mContext, config.getThemeColor_360());
                UpdateHelper.getInstance().setDebugMode(config.isDebug());
                UpdateHelper.getInstance().manualUpdate(packageName);
                break;
            case CHECK_AUTO:
                UpdateHelper.getInstance().init(mContext, config.getThemeColor_360());
                UpdateHelper.getInstance().setDebugMode(config.isDebug());
                UpdateHelper.getInstance().autoUpdate(packageName, false, intervalMillis);
                break;
            case CHECK_FORCE:
                UpdateHelper.getInstance().init(mContext, config.getThemeColor_360());
                UpdateHelper.getInstance().setDebugMode(config.isDebug());
                UpdateHelper.getInstance().autoUpdate(packageName, true, intervalMillis);
                break;
            default:
                break;
        }
    }

    /**
     * 获取App包 信息版本号
     *
     * @param context
     * @return
     */
    private PackageInfo getPackageInfo(Context context) {
        PackageManager packageManager = context.getPackageManager();
        PackageInfo packageInfo = null;
        try {
            packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return packageInfo;
    }
}

2.百度更新工具类

//.....
/**
* 默认版本更新方法
* @param mContext
* @param checkUpdateType
*/
public void update(Context mContext, int checkUpdateType) {
        this.mContext = mContext;
        this.checkUpdateType = checkUpdateType;
        BDAutoUpdateSDK.cpUpdateCheck(mContext, this);
}
//.....

3.写UpdateConfig是为了方便自定义传递参数的Builder,例如360的字体颜色等,到最后发现作用并不大,这里就不贴出来了。

4.最后就是在App的build.gradle文件配置

android {
    productFlavors {
        _360 {}
        baidu {}
    }
    productFlavors.all { flavor ->
        flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
}
dependencies {
    _360Compile project(':360updatelibrary')
    baiduCompile project(':baiduupdatelibrary')
}

最后附上github地址

Usage

由于我上传到Jcenter上方便调用

compile 'com.caption:360updatelibrary:0.0.2'
compile 'com.caption:baiduupdatelibrary:0.0.2'
androidSDK android 6.0 最新版本 SDK,已测试安装可以使用。分享 立即下载

相关推荐

NetHelper 网络掉线 修复

网络掉线 修复

探索高效应用升级之道:深度解析Android的UpdateHelper库

探索高效应用升级之道:深度解析Android的UpdateHelper库 项目介绍 在这个快速迭代的时代,确保应用程序的即时更新对于提升用户体验至关重要。UpdateHelper——一个轻量级且强大的Android库,横空出世,仅需简单集成,即可一键实现应用的在线升级功能。它简化了开发者的工作流程,让应用保持与时俱进变得更加轻松便捷。 项目技术分析 UpdateHelper的核心设计围绕着极简主义...

gitblog_00503的博客 428

Android 实现app自动升级

使用android 自带的DownloadManager实现文件下载,兼容性强,代码简单

android 迭代升级,UpdateHelper: UpdateHelper是一个为了简化Android App的迭代升级开发的Android Library。...

#UpdateHelperGithub项目地址###UpdateHelper是什么?UpdateHelper是一个Android Library项目。###UpdateHelper是干什么的?这个项目是为了简化Android App的迭代升级开发,任何一个项目只要引入这个library便集成了在线检查新版本的功能以及下载APK功能。###UpdateHelper要怎么使用?1.首先服务器端需要提供...

weixin_32270483的博客 312

人形机器人系列——硬件介绍

人形机器人是多领域交叉技术的产物,主要由三大系统组成:感知系统、决策系统和执行系统。感知系统感知系统是人形机器人获取外界信息的途径,主要由各种传感器组成。其中,视觉传感器用于获取图像信息,如摄像头、激光雷达等;触觉传感器用于感知触碰和压力,如力/力矩传感器、声学传感器等。这些传感器收集到的信息为机器人的决策和执行提供基础。决策系统决策系统是人形机器人的大脑,负责处理和决策各种信息。它由芯片和算法组成。芯片是硬件基础,提供计算能力;算法是软件基础,用于处理和分析传感器收集到的信息,并做出相应的决策。执行系统。

liangwqi的博客 1万+

点云入门笔记(一):点云数据及获取

点云概念: 点云是某个坐标系下的点的数据集。点包含了丰富的信息,包括三维坐标 X,Y,Z、颜色、分类值、强度值、时间等等。

wc19862274581的博客 2万+

360补丁升级后 update无法删除

D盘多了多了两个目录 “7e5626c8b705a5a524516ad259b95a、613be6699e735e5edce2”,感觉是中了招了,于是用NOD32和 AVG检查了一下都没问题。强行删除发现也删不掉,提示“无法删除update:访问拒绝”,在DOS下使用RD命令强行删除也说目录无法访问。在网上找 到了解决方法如下: 1. 文件夹属性->安全->...

weixin_34037515的博客 722

从实验室到生活:构建一份全面的手机相机主观画质评测指南

本文详细介绍了如何从实验室数据转向实际体验,构建全面的手机相机主观画质评测指南。通过基础装备清单、室内外场景实战评测及数据之外的感知艺术,帮助用户发现手机相机在色彩还原、动态范围和夜景模式等方面的真实表现。特别关注主观体验与客观参数的差异,提供实用的评测技巧和报告撰写心法。

weixin_30940783的博客 308

android 程序更新开发,android开发游记:APP自动更新功能的快速集成和实现方法讲解...

android的开发有时候让人很蛋疼,比如说app的更新,像ios的更新都被app store包办了方便快捷,但是国内的安卓市场却五花八门,途径各种各样。不要太期望像苹果那样把更新全权交个某夹或者某0,app内都要自己继承一个自动更新的功能。那我们就要自己实现一个。效果图如下: 更新分成2种,一种是普通更新(如上图1)用户可以选择不更新,一种是强制更新(如上图2),新版本已经不再向下兼容,更新时...

weixin_39580748的博客 274

手机相机基础技术解析:从硬件到算法的全面指南

手机相机的成像过程可简化为的链路,其核心硬件包括 镜头、CMOS传感器、ISP(图像信号处理器) 以及配套的软件算法。

weixin_44239603的博客 2448

保姆级教程:用YOLOv5s搞定钢材表面缺陷检测,从数据集NEU-DET到模型部署全流程

本文提供了一份详细的YOLOv5s钢材表面缺陷检测教程,涵盖从NEU-DET数据集处理到模型部署的全流程。针对工业环境中的实际限制,如计算资源有限和标注样本少等问题,提供了优化方案和实用技巧,帮助开发者快速实现高效的钢材缺陷检测系统。

weixin_30568591的博客 465

如何在android客户端中做到自动检查数据更新?,UpdateHelper

软件简介UpdateHelper 是一个为了简化Android App的迭代升级开发的AndroidLibrary,任何一个项目只要引入这个library便集成了在线检查新版本的功能以及下载APK功能,仅需两行代码即可搞定。UpdateHelpers要怎么使用?1.首先服务器端需要提供一个接口,返回json数据格式如下:{"appName":"TestUpdate","versionCode":...

weixin_39830588的博客 214

别再手动切换了!用SP3485+三极管搞定RS485自动收发电路(附完整原理图)

本文详细介绍了如何利用SP3485芯片和三极管设计RS485自动收发电路,解决传统手动切换带来的IO资源占用和软件复杂度问题。通过原理分析、电路设计拆解和实战注意事项,帮助工程师打造稳定可靠的自动收发通信模块,显著提升系统性能和可靠性。

weixin_26833939的博客 512

android 360自动更新,解决Android百度自动更新SDK和360自动更新SDK兼容

最近上架的一个项目相序的被百度平台和360平台下架,郁闷的同时只能询问客服,得到的回复都是‘**平台的自动更新SDK会在您系统自动安装有害系统的软件,请使用本平台提供的更新SDK’,强制使用它平台的更新外还不可以兼容其他平台,对于这种臭不要脸的行为,作为开发者只能忌于百du 360的淫威寻找其他出路。解决方案创建两个不同的Module,分别存放360更新sdk和百度更新sdk两个Module中存放...

weixin_35915385的博客 253

FLAC3D数值三轴测试

本文介绍了使用FLAC3D进行数值三轴测试的命令流程。通过建立圆柱体模型,设置Mohr-Coulomb本构模型及材料参数,施加边界条件和荷载,并定义Fish函数监测应变和应力。命令包括模型创建、网格划分、材料属性定义、边界约束、荷载施加以及结果监测等步骤。该流程可用于模拟岩土材料在三轴条件下的力学响应,为数值分析提供参考。完整代码可从指定链接下载获取。

qq_36980284的博客 99

【工控基础】UVW平台踩坑

1 每个轴按顺时针或逆时针走一个距离,就是旋转。 2 图中W动,U轴V轴不动,就是X方向的平移 3 图中U轴V轴同时动,X不动,就是Y方向的平移。

songhuangong123的博客 6951

解决集成百度自动更新SDK和360自动更新SDK上传市场审核失败的坑

15年11月左右,百度发布了自己的自动更新SDK,并强制开发者使用百度的自动更新SDK,否则审核不通过,对于这种臭不要脸的行为,大部分开发者表示很无奈,我们也不做过多评论,忌于百度的淫威,只能乖乖将自己App自动更新换成了百度的。然而事情并没有结束,一个月后360市场也强制使用360自动更新,围观群众彻底懵逼了! 由于两平台审核并不是简单的检查有没有使用它们的SDK,而是检查有没有

sinat_30306379的博客 1804

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

android 360自动更新,百度和360自动更新SDK快速集成

百度自动更新百度更新四种方式默认UI(弹窗,一般采用此方式):BDAutoUpdateSDK.uiUpdateAction(this, new MyUICheckUpdateCallback());静默更新:BDAutoUpdateSDK.silenceUpdateAction(this);百度助手更新:BDAutoUpdateSDK.asUpdateAction(this, new MyUICh...

weixin_32165219的博客 267

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android如何实现APP自动更新

先来看看要实现的效果图: 对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP到各大应用市场的工作量就已经很大了,好不容易我们把APP都上传完了,突然发现一个会导致应用闪退的小Bug,这时那个崩溃啊,明明不是很大的改动,难道我们还要再去重新去把各大应用市场的版本再上传更新

qq_29748135的博客 2157

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android的发布与更新

前言 在网上找了好久都没有找到一个具体到能够让我这样的小白了解整个Android App自动更新的教程,所以在搞定了App的更新问题后我打算写一篇博客记录一下整个操作 过程。 准备工作 需要知道Android APK怎么生成 这个我想百度一搜一大把,我也是查了教程后在dos环境下生成了一个用来签名的keystore,然后直接在eclipse里导出了一个APK。

Snipergzf的博客 1028

Android多渠道集成多个功能逻辑实现的方法

以自动更新功能为例,360、百度都要求集成各自的更新sdk,如何用同一套代码去解决。 1、建立两个module,分布将百度、360的sdk放进去。 2、在两个module下创建一个相同包名、类名的类 3、在同名类下实现同名方法,方法内实现各自逻辑。 第一个实现百度的逻辑    另一个同名类实现360的逻辑  现在两个module都封装好了相同的类跟方法

张建峰的小窝 1236

android studio bug : aidl is missing 解决方案

很久不打开Android studio 今天打开一下,发现之前配置好的开发环境不能用了!项目中“R.”变红了,运行结果如下,可以说很怪,电脑没动过,怎么回事呢?于是StackOverflow一下:找到一段可能有用的话:“This bug happens when the versions of SDK, Build Tools and Gradle Plugins doesn't match (i...

qq_38307618的博客 1809

关于APP自动更新那点事

演示效果: APP自动更新效果图.gif 对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP到各大应用市场的工作量就已经很大了,好不容易我们把APP都上传完了,突然发现一个会导致应用闪退的小Bug,这时那个崩溃啊,明明不是很大的改动,难道我们还要再去重新去把各大应

ChatHello的博客 1232

应用宝省流量更新sdk接入指南

app的自动更新,是一个非常重要的功能。而要实现一套更新机制,技术上来说其实很简单。但对于小公司来说,其实很没有必要,因为你需要一台文件服务器提供下载,万一app火了,那这台文件服务器的压力就相当大了。现在有很多做平台的大公司会有在做这一套自动更新的服务,算是给小公司减轻成本吧。        以前几个app用的是友盟的自动更新服务,因为也使用友盟的统计服务,所以就选择了友盟。但是自从被阿里收购

By MasterChen 6227

Android多渠道批量打包

如若感觉排版不舒服,请移步Android多渠道批量打包 1、为什么要进行多渠道打包?   安卓应用商店(一个商店也叫做一个渠道,如豌豆荚,360手机助手,应用宝)众多。大大小小几百个,每当我们发新版本号时。须要将Androidclient分发到各个应用市场。为了统计这些市场的效果(下载量、活跃数等)。须要有一种方法来唯一标识它们,所以才有了多渠道打包。 ...

adr5970的博客 175
上一篇: Python 学习(二) -- 初试抓取动车事件表
下一篇: Android 借助 Python 实现自动上传蒲公英
caption_deng
博客等级 码龄11年 2粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caption_deng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值