请问鸿蒙中有没有@Keep注解

Android中将类或个别方法不混淆,可以添加@Keep注解,请问鸿蒙中有吗?

混淆,不混淆
2021-08-25 14:05:49
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
拓维信息Abin
4

鸿蒙的SDK和IDE工具没有提供@Keep相关的工具,不过我们也可以使用;

 

@Keep注解是Android开发support包中提供的一个注解工具类,这个注解工具类是用java写的,也是java注解的一个特性,原则上是和java相关的,不依赖于android。鸿蒙也可以使用java开发,也支持代码混淆工具ProGuard,和androidStudio支持的代码混淆工具是一样的,所以是可以支持的。

 

我们只需要将android support包中带有@Keep注解的jar拷贝到鸿蒙工程的libs目录下面,作为第三方库使用就可以了。

 

比如我拷贝androidx库下面的annotation.jar到鸿蒙工程的libs下面

其他代码混淆配置和Android开发的代码混淆配置是一样的。module的build.gradle配置,开启代码混淆

proguard-rules.pro混淆规则配置:

#打印混淆信息
-verbose
#代码优化选项,不加该行会将没有用到的类删除,这里为了验证时间结果而使用,在实际生产环境中可根据实际需要选择是否使用
-dontshrink
-dontwarn androidx.annotation.Keep
#保留注解,如果不添加改行会导致我们的@Keep注解失效
-keepattributes *Annotation*
-keep @androidx.annotation.Keep class **{
@androidx.annotation.Keep <fields>;
@androidx.annotation.Keep <methods>;
}

java代码@Keep注解使用

package com.talkweb.tcase.pojo;

import androidx.annotation.Keep;
import ohos.agp.colors.RgbColor;

@Keep
public class PageInfo {

    @Keep
    private String content;

    private RgbColor color;

    public String getContent() {
        return content;
    }

    @Keep
    public void setContent(String content) {
        this.content = content;
    }

    public RgbColor getColor() {
        return color;
    }

    public void setColor(RgbColor color) {
        this.color = color;
    }
}

混淆结果查看,可以看到被@Keep注解标记的类、属性和方法,没有被混淆。

 

分享
微博
QQ
微信
回复
2021-08-27 09:38:51
mb609898e2cfb86
3

文档中提到了手动配置,暂时没看到类似的工具

文档链接:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_java_obfuscate-0000001063740093

分享
微博
QQ
微信
回复
2021-08-26 15:56:44
相关问题
鸿蒙中有没有载入框控件?
1771浏览 • 1回复 待解决
鸿蒙生态中有没有react-native适配?
4020浏览 • 1回复 待解决
鸿蒙java中有没有控制4G/5G开关的接口
1473浏览 • 1回复 待解决
请问API有没有录屏功能
4080浏览 • 1回复 待解决
鸿蒙-有没有缓存工具类
2693浏览 • 1回复 待解决
鸿蒙有没有类似viewpage的组件
3989浏览 • 1回复 已解决
鸿蒙有没有clipToPadding所对应的属性
1733浏览 • 1回复 待解决
有没有maobox 鸿蒙版的相关移植?
2342浏览 • 2回复 待解决
鸿蒙有没有类似carplay的应用
3536浏览 • 1回复 待解决
鸿蒙有没有相机免费推流sdk推荐?
1540浏览 • 1回复 待解决
鸿蒙系统有没有调用锁屏的接口?
3351浏览 • 1回复 待解决
有没有鸿蒙开发者微信群
4374浏览 • 2回复 待解决
有没有获取当前网速的api?
379浏览 • 1回复 待解决
有没有相机免费推流sdk?
1541浏览 • 1回复 待解决
有没有调用日历的接口?
1649浏览 • 1回复 待解决
有没有人成功调起了鸿蒙相机的
7510浏览 • 6回复 待解决
有没有人想要鸿蒙系统内测邀请码?
4897浏览 • 5回复 待解决
有没有相关api?
455浏览 • 1回复 待解决
SDK:API Version 3有没有visibility属性
2009浏览 • 1回复 待解决