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

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

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

鸿蒙的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
4

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

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

分享
微博
QQ
微信
回复
2021-08-26 15:56:44
相关问题
鸿蒙中有没有载入框控件?
5136浏览 • 1回复 待解决
HarmonyOS有没有便捷的 keep-alive能力
352浏览 • 1回复 待解决
鸿蒙生态中有没有react-native适配?
13080浏览 • 1回复 待解决
鸿蒙java中有没有控制4G/5G开关的接口
4925浏览 • 1回复 待解决
请问API有没有录屏功能
8930浏览 • 1回复 待解决
请问有没有支持.9图的方案?
149浏览 • 1回复 待解决
请问大家有没有ArkUI调用相机的例子
4347浏览 • 1回复 待解决
请问有没有文字滚动动画组件?
239浏览 • 1回复 待解决
鸿蒙-有没有缓存工具类
5875浏览 • 1回复 待解决
请问有没有FA卡片开发的demo参考
3385浏览 • 1回复 待解决
鸿蒙有没有类似carplay的应用
7785浏览 • 1回复 待解决
鸿蒙有没有类似viewpage的组件
7732浏览 • 1回复 已解决