利用maven下载相应的jar包

<dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java</artifactId>
            <!-- go to https://search.maven.org/search?q=tencentcloud-sdk-java and 
                get the latest version. -->
            <version>3.0.67</version>
        </dependency>

调用时调用leguJiagu(appUrl,url),appUrl指的是在线apk所在位置,因为乐固加固apk必需在线,就是指像七牛云这种可以访问下载的所在连接。url指本地apk所在地址,用来获取apk的fileMd5。

public static String leguJiagu(String appUrl,String url)throws Exception{
        String itemId = "";
        String reappUrl = "";
        try {
            System.out.println("==================开始乐固加固==================");
            String appMd5 = getFileMd5(url);
            itemId = getItemId(appUrl,appMd5);
            if(!"".equals(itemId)) {
                reappUrl = getResult(itemId);
                System.out.println("==================乐固加固成功==================");
            }

} catch (Exception e) {
            System.err.println(e.toString());
        }
        return reappUrl;
    }

//要加固的apk传到乐固返回一个对应的itemId。
    public static String  getItemId(String appUrl,String appMd5)throws Exception{
        String itemId = "";
        try{
            logger.info("获取上传apk的itemId");
            Credential cred = new Credential(leguSecretId, leguSecretKey);
            
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("ms.tencentcloudapi.com");

ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);            
            
            MsClient client = new MsClient(cred, "", clientProfile);
            
            String params = "{\"AppInfo\":{\"AppUrl\":\""+appUrl+"\",\"AppMd5\":\""+appMd5+"\",\"AppSize\":1024,\"AppPkgName\":\"com.airtalkee\"},\"ServiceInfo\":{\"ServiceEdition\":\"basic\",\"CallbackUrl\":\"\\\"\\\"\",\"SubmitSource\":\"MC\"}}";
            CreateShieldInstanceRequest req = CreateShieldInstanceRequest.fromJsonString(params, CreateShieldInstanceRequest.class);
            
            CreateShieldInstanceResponse resp = client.CreateShieldInstance(req);
            itemId = resp.getItemId();
            System.out.println(CreateShieldInstanceRequest.toJsonString(resp));
            logger.info("乐固加固的ItemId:"+itemId);
            
        } catch (TencentCloudSDKException e) {
            System.err.println(e.toString());
        }
        return itemId;
    }

//来看apk加固处理阶段。
    public static String getResult(String itemId) {
        int taskStatus = 2;//TaskStatus任务状态: 0-上传中待加固,1-已完成,2-处理中,3-处理出错,4-处理超时
        String apkUrl = "";//加固完成后apk的下载地址
        try{
            logger.info("乐固加固处理状态获取");
            DescribeShieldResultResponse resp = null;
            do {
                Credential cred = new Credential("AKID882hIfdwvtgMkroWrmywKALf2JVWFnIc", "NegXFx0xhJoBWXTJ4f4HIm7XHE0cAfSc");
                
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.setEndpoint("ms.tencentcloudapi.com");

ClientProfile clientProfile = new ClientProfile();
                clientProfile.setHttpProfile(httpProfile);            
                
                MsClient client = new MsClient(cred, "", clientProfile);
                
                String params = "{\"ItemId\":\""+itemId+"\"}";
                DescribeShieldResultRequest req = DescribeShieldResultRequest.fromJsonString(params, DescribeShieldResultRequest.class);
                
                resp = client.DescribeShieldResult(req);
                taskStatus = resp.getTaskStatus();
                logger.info("乐固加固处理状态:"+taskStatus);
            }while(taskStatus == 2||taskStatus == 0);
            System.out.println(DescribeShieldResultRequest.toJsonString(resp));
            if(taskStatus == 1) {
                apkUrl = resp.getShieldInfo().getAppUrl();
                logger.info("乐固加固处理成功,apkUrl:"+apkUrl);
            }
            
            
        } catch (TencentCloudSDKException e) {
            System.err.println(e.toString());
            
        }
        return apkUrl;
    }

//获取文件的FileMd5.
    public static String getFileMd5(String filePath) throws Exception{//获取app的md5
         String md5code = "";
        try {
            logger.info("获取fileMD5:"+filePath);
            int FILE_READ_BUFFER_SIZE = 16 * 1024;
            MessageDigest digester = MessageDigest.getInstance("MD5");
            FileInputStream stream = new FileInputStream(filePath);
            int bytesRead;
            byte[] buf = new byte[FILE_READ_BUFFER_SIZE];
            while ((bytesRead = stream.read(buf)) >= 0) {
                digester.update(buf, 0, bytesRead);
            }
            md5code = new BigInteger(1, digester.digest()).toString(16);// 16进制数字
            // 如果生成数字未满32位,需要前面补0
            for (int i = 0; i < 32 - md5code.length(); i++) {
                md5code = "0" + md5code;
            }
            logger.info("fileMD5:"+md5code);
        }catch (Exception e) {
            System.err.println(e.toString());
            
        }
        
        return md5code;

}

java调用腾讯云的乐固加固给apk进行加固处理。相关推荐

  1. 大聪明教你学Java | 调用腾讯云短信接口,实现短信通知

    前言 提到短信接口,相信每一位程序猿都不会陌生,它可以来帮助我们实现短信验证码.短信通知等等功能,刚好最近在帮朋友开发一套会员管理系统,里面也集成了短信功能(短信接口平台选择的是腾讯云平台),借此机会 ...

  2. 详解-java调用腾讯云的短信接口(从申请到测试完成)

    首先我们去注册或登录腾讯云 可以白嫖200条短信(反正也是自己玩玩,足够了) 在产品那里找到短信 进入之后,看应用列表里面有没有创建过(如果没有就创建)这里有一个SDKAppID会要用到 创建之后呢, ...

  3. java调用腾讯云的短信接口

    首先导入maven依赖 <dependency><groupId>com.tencentcloudapi</groupId><artifactId>te ...

  4. Java调用腾讯云短信API实现发送短信验证码完整。(详细,内附工具类)

    此先声明,本博文并不是为了推销腾讯云短信产品. 只是因为腾讯云短信SDK的使用指南讲的不是很详细,觉得肯定有很多人像我一样被搞的一头雾水.所以专门发一篇关于使用短信接口的博文,为了记录,也为了帮助和我 ...

  5. SpringBoot项目H5界面手机拍照调用腾讯云OCR卡证识别接口完整例子

    最近一个微信端项目的功能涉及一个手机拍照上传身份证识别身份证信息回显的功能,调用的接口是腾讯云OCR的卡证识别功能.看了腾讯云的api通俗易懂,本地写好了demo测试可用.H5界面手机拍照调用后台方法 ...

  6. 腾讯直播与 JAVA整合_JAVA对接腾讯云直播如何实现 JAVA对接腾讯云直播实现代码...

    JAVA对接腾讯云直播如何实现?本篇文章小编给大家分享一下JAVA对接腾讯云直播实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 签名授权 public static ...

  7. java集成腾讯云COS

    @RequestMapping(value = "/test", method = RequestMethod.POST)@ResponseBodypublic String te ...

  8. Java集成腾讯云音视频录制功能

    Java集成腾讯云音视频录制功能 为什么要实现音视频录制功能 因为我们做的是一个医院的项目,医生和患者可能进行视频通话和语音通话,为了保证通话的质量以及后续的问题, 我们就需要进行音视频录制,以便后续 ...

  9. C# 使用GET和POST(v1签名方式)以及SDK的方式调用腾讯云人像动漫化接口,包含设置代理

    声明:此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除. 最近在调用腾讯云的人像动漫化接口,感觉挺好玩的,自己去看文档写了一下,遇到了各种问题,最后都解决了 ,遇到最多的就是签名错误 ...

最新文章

  1. Ubuntu 系统下终端界面在打开一个终端的快捷键
  2. UIView Animation
  3. 理解进化的五座“桥”
  4. 对于Array的引用
  5. 通过@Value + @PropertySource来给组件赋值
  6. 如何使用工具对SAP CRM系统的odata服务进行监控
  7. php 单选框选中事件,html中的checkbox和radio事件选择用法详解
  8. 计算机怎样旋转桌面,win7电脑怎么设置翻转屏幕
  9. C++ 原子操作和内存模型
  10. java dump 线程_Java 中怎么获取一份线程 dump 文件
  11. php 8.0 jit,PHP 8.0 正式版发布,性能提升 10%
  12. 盒子阴影(HTML、CSS)
  13. Centos下面Eclipse打开文件闪退
  14. 拓端tecdat|用R语言用Nelson Siegel和线性插值模型对债券价格和收益率建模
  15. html5华迪,比亚迪永通华迪4S店:元新能源最低售8.19万
  16. 怎样用计算机做ppt,电脑怎么制作ppt步骤
  17. Mysql查询某个月的每一天的数据
  18. learning bamboo flute
  19. [读书笔记][深入剖析ASP.NET组件设计]一书第三章关于ASP.NET运行原理讲述的补白...
  20. 计算机硬盘有磁性材料吗,电脑硬盘里有磁铁吗

热门文章

  1. Android App 导出APK安装包以及制作App图标讲解及实战(图文解释 简单易懂)
  2. JFreeChart展示柱状图和折线图的组合
  3. 宝宝 天天加班, 有意义吗
  4. 评分卡实例:一步一步实现评分卡(详细长文)
  5. 判断一个轮廓是否为圆形
  6. 移动支付模式方面的技术
  7. jpi多表联查_使用Mybatis进行多表联查操作
  8. 有了这个“神级”功能,会Excel就能轻松玩转BI数据可视化分析啦
  9. Unity 画面质量设置
  10. java中length和length()方法的区别