【HarmonyOS】元服务混淆打包以及反混淆mapping文件生成

news2024/11/23 12:28:48

 大家所知的Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,从而可以减少包体积。

一般应用release发布的时候都会选择开启混淆,防止应用被反编译后窃取源码。在HarmonyOS元服务开发中,我们也可以通过开启混淆提高应用的安全性和压缩包体积。元服务低版本工程中使用的gradle作为构建工具,下文以API6 JS工程为例,高版本暂时不做相关说明。

【开启混淆】

在HarmonyOS工程开启代码混淆很简单,只需要在模块级的build.gradle中的buildTypes中设置以下代码就可以了:

buildTypes {
    release {
    proguardOpt {
        proguardEnabled true    //开启代码混淆功能              
            rulesFiles 'proguard-rules.pro'    // 配置混淆规则文件相对路径              
            consumerRulesFiles 'consumer-rules.pro'    // 配置打包混淆规则文件相对路径,仅在HarmonyOS Library模块中配置
        }
    }
}

混淆会通过缩短应用的类、方法和字段的名称来缩减应用的大小。混淆后代码大概如下图中所示:

com.example.atomictest.widget.controller.FormControllerManager -> com.example.atomictest.a.a.b:
    ohos.hiviewdfx.HiLogLabel TAG -> a
    com.example.atomictest.widget.controller.FormControllerManager managerInstance -> b
    java.util.HashMap controllerHashMap -> c
    ohos.app.Context context -> d
    ohos.data.preferences.Preferences preferences -> e
    void <init>(ohos.app.Context) -> <init>
    com.example.atomictest.widget.controller.FormControllerManager getInstance(ohos.app.Context) -> a
    com.example.atomictest.widget.controller.FormController createFormController(long,java.lang.String,int) -> a
    com.example.atomictest.widget.controller.FormController getController(long) -> a
    com.example.atomictest.widget.controller.FormController newInstance(java.lang.String,int,ohos.app.Context) -> a
    void deleteFormController(long) -> b
    java.lang.String getClassNameByFormName(java.lang.String) -> a
    void <clinit>() -> <clinit>

【另一个问题】

当我们使用混淆配置后,对外发布的应用运行在手机上时,发生异常的报错也不会是原来的包名和类名,都会变成a.b.c这种混淆后代码,行号也会发生变化。对于熟悉Android开发的同学,大家一定想到了使用mapping.txt文件来还原混淆后的代码,不了解的同学可以看下面这个文档:Android 利用 proguardgui.bat 还原混淆代码 - 知乎 (zhihu.com)

Android中的mapping.txt 文件会在 模块/outputs/mapping/release/mapping.txt 中,但是通过相同的方法我们在DevEco Studio工程目录下是找不到mapping.txt,这是为什么呢?

【寻找mapping.txt】

造成这个问题的原因是Android中使用的R8代替了Proguard ,因此不需要增加额外的配置就可以直接生成mapping.txt文件。HarmonyOS中使用的Proguard,针对Proguard,我们需要在proguard-rules.pro配置以下代码才可以生成mapping.txt

printmapping mapping.txt

除了printmapping以外,还有以下常用的配置命令,提供给大家参考

# 包内所有 class 的内部结构
-dump dump.txt

# 没有被混淆的类和成员
-printseeds seeds.txt

# 被移除的代码
-printusage usage.txt

最后在我们通过Build HAP,生成HAP,就可以在/entry/build/intermediates/proguard_profile/release目录下看到生成的这些文件了。

cke_5467.png

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenPCDet系列 | 5.4.3 DenseHead中的AxisAlignedTargetAssigner正负样本分配模块

文章目录 AxisAlignedTargetAssigner模块assign_targets处理流程1. 提取有效gt信息2. 提取需要处理的类别信息3. 帧信息整合4. 批信息整合 assign_targets_single处理流程1. 构建每个anchor的正负样本label分配2. 构建每个anchor的正负样本编码信息bbox_targets分配3. 构建每个…

NMEA 2000总线连接器组成类别及功能

NMEA 2000总线介绍 连接的所有设备都能彼此通信 NMEA 2000总线系统是一种数字网络&#xff0c;可连接船上各种系统和设备&#xff0c;例如雷达、GPS、深度传感器、气象环境和船体控制系统。 NMEA 2000总线的工作方式 NMEA 2000总线通过总线连接器连接各个设备和系统&#xf…

HANTS时间序列滤波算法的MATLAB实现

本文介绍在MATLAB中&#xff0c;实现基于HANTS算法&#xff08;时间序列谐波分析法&#xff09;的长时间序列数据去噪、重建、填补的详细方法。 HANTS&#xff08;Harmonic Analysis of Time Series&#xff09;是一种用于时间序列分析和插值的算法。它基于谐波分析原理&#x…

linux 常用命令awk

AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho&#xff0c;Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 AWK用法 awk 用法&#xff1a;awk pattern {action} files 1.RS, ORS, F…

CFS三层内网靶机渗透

目录 一、靶场框架 靶场搭建&#xff1a; 二、渗透过程 三、总结 靶场介绍&#xff1a; 三层内网靶场&#xff0c;共有三个网段&#xff0c;分别为75网段&#xff08;公网网段&#xff09;、22网段&#xff08;内网&#xff09;、33网段&#xff08;内网&#xff09; 靶…

ChatGPT+ “剪映 or 百度AIGC” 快速生成短视频

&#x1f34f;&#x1f350;&#x1f34a;&#x1f351;&#x1f352;&#x1f353;&#x1fad0;&#x1f951;&#x1f34b;&#x1f349;&#x1f95d; ChatGPT快速生成短视频 文章目录 &#x1f350;1.ChatGPT 剪映&#x1f34f;2.ChatGPT 百度AIGC平台&#x…

【ThinkPHP6系列学习-2】多应用模式配置

上一篇&#xff1a;【ThinkPHP6系列学习-1】下载并部署ThinkPHP6 这里写一写TP6下配置多应用。因为TP6和TP5有所差异&#xff0c;TP6默认是单应用模式&#xff08;单模块&#xff09;&#xff0c;而我们实际项目中往往是多应用的&#xff08;多个模块&#xff09;&#xff0c…

1.Buffer_Overflow-2.Stack_Overflow / 写入字符串

这道题虽然简单 但是却给我了另一个解题的看法 我们先进行运行 我们看看保护 发现只有NX保护 反汇编看看 发现有shellcode 但是我们没有办法执行shellcode 因为v5 不会等于后面的 这里我原本没有想法 后面进行看看他的汇编 这里其实就很清楚了 .text:00000000004011BB …

( 动态规划) 674. 最长连续递增序列 / 718. 最长重复子数组——【Leetcode每日一题】

题目一&#xff08;贪心&#xff09; ❓674. 最长连续递增序列 难度&#xff1a;简单 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

vcruntime140.dll如何修复?这个修复方法很简单,适合电脑小白

今天打开photoshop软件工作的时候&#xff0c;突然间就打不开&#xff0c;电脑报错由于找不到vcruntime140.dll&#xff0c;无法继续执行此代码&#xff0c;然后我就把photoshop卸载了&#xff0c;再重新安装&#xff0c;依然还是报错。这个可怎么办&#xff1f;vcruntime140.d…

CentOS 安装MongoDB 6.0

一、安装依赖 yum install libcurl openssl xz-libs 二、下载安装包 安装包下载地址https://www.mongodb.com/try/download/community这里我选择的是 选择RedHat / CentOS 7.0平台的原因是我的操作系统使用的是CentOS 7.0的&#xff0c;需要下载与操作系统匹配的安装包 三、…

ChatGPT插件权限给Plus用户放开了

大家好&#xff0c;我是章北海mlpy ChatGPT插件权限给Plus用户放开了 我稍微测试了俩&#xff0c;感觉还行&#xff0c;后续我会对一些热门插件深入测测&#xff0c;敬请期待。 官方对插件的介绍如下&#xff1a; 1、插件由非由OpenAI控制的第三方应用程序提供动力。在安装…

Spring Cloud Alibaba-Sentinel熔断降级

Sentinel: 轻量级的流量控制、熔断降级Java库&#xff0c; 分布式系统的流量防卫兵。 文章目录 一、Sentinel 是什么&#xff1f;二、安装Sentinel控制台三、Sentinel 实战3.1、准备工作3.2、流控规则快速失败Warm Up匀速排队 3.3、热点key限流3.4、降级规则3.5、系统规则 四、…

自定义组件3-behaviors

1、behaviors是小程序中用于实现组件间代码共享的特性&#xff0c;类似于Vue.js中的mixins 2、behaviors的工作方式 每个behaviors可以包含一组属性、数据、生命周期函数和方法。组件引用它时&#xff0c;它的数据和属性和方法会被 合并到组件中。 每个组件可以引用多个behav…

Python采集知某专栏文章保存成pdf

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 Pycharm wkhtmltopdf 软件 文末名片获取 模块使用: requests >>> pip install requests 数据请求 parsel >>> pip install parsel 数据解析 re >>> 内置模块 不…

【年度最强超级Ai让你体验真正的人工智能】

年度最强超级Ai让你体验真正的人工智能&#xff08;破解版&#xff09; 登录就是永久会员&#xff08;先上链接&#xff0c;资源来源于网络&#xff0c;如有侵权&#xff0c;联系删除&#xff09; 网易邮箱&#xff1a; 23402001163163.com 我用蓝奏浏览器分享了[GPT-AI助手V1…

100 个 Go 错误以及如何避免:5~8

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 真相一旦入眼&#xff0c;你就再也无法视而不见。——《黑客帝国》 五、字符串 本章涵盖 理解GO中…

Oracle执行计划管理 - SPM

https://blog.51cto.com/lhrbest/3246884 目录 Oracle优化器辅助手段的发展 SPM需求背景 SPM重要构成 SQL计划基准捕获 如何创建SQL计划基准 如何查看SQL计划基准 SQL计划基准选择 执行计划的三个属性 如何选择SQL计划 SQL计划基准发展 SQL计划基准发展的三种选择 …

在外包干了三年,我废了……不吹不黑!

没错&#xff0c;我也干过外包&#xff0c;一干就是三年&#xff0c;三年后&#xff0c;我废了…… 虽说废的不是很彻底&#xff0c;但那三年我几乎是出差了三年、玩了三年、荒废了三年&#xff0c;那三年&#xff0c;我的技术能力几乎是零成长的。 说起这段三年的外包经历&a…

CTFShow-电子取证篇Writeup

CTFShow-电子取证篇Writeup 套的签到题&#xff1a;JiaJia-CP-1&#xff1a;JiaJia-CP-2&#xff1a;JiaJia-CP-3&#xff1a; CTFShow 平台&#xff1a;https://ctf.show/ 套的签到题&#xff1a; JiaJia-CP-1&#xff1a; 这是部分人熟知的刘佳佳同学的电脑&#xff0c;她…