Java 安卓:为什么我的类仍然是模糊的,尽管有进步
在包/ui/cinema/model/中,有几个类我不希望它们被混淆,因此我在proguard配置文件中声明以下几行: -保持公共类com.example.ui.cinema.model.*{*;} -保持公共类com.example.ui.cinema.model.*$*{*;} 除了“CinemaCityModel”,该文件夹中的大多数类都运行良好:Java 安卓:为什么我的类仍然是模糊的,尽管有进步,java,android,proguard,Java,Android,Proguard,在包/ui/cinema/model/中,有几个类我不希望它们被混淆,因此我在proguard配置文件中声明以下几行: -保持公共类com.example.ui.cinema.model.*{*;} -保持公共类com.example.ui.cinema.model.*$*{*;} 除了“CinemaCityModel”,该文件夹中的大多数类都运行良好: 我反编译了apk,找不到CinemaCityModel。但它在我的源代码包中。它很模糊,我不知道为什么。有人见过这个吗?请帮助,谢谢:)pro
我反编译了apk,找不到CinemaCityModel。但它在我的源代码包中。它很模糊,我不知道为什么。有人见过这个吗?请帮助,谢谢:)proguard中的
-keep
关键字仅在类未使用时防止类被优化
为了防止类被混淆,您需要使用
-dontobfuscate
您的配置确实保留了这个类(事实上第一行就足够了,因为它意味着第二行)。您应该可以在proguard/seeds.txt中看到它
您应该仔细检查:可能输入中也缺少它,因为它没有正确编译。或者在这种情况下,可能它不是公共的,或者它毕竟在不同的包中。或者您的反编译器无法写出反编译的类。谢谢,sddamico。但在检查了Proguard手册后,它说“指定不混淆输入类文件。默认情况下,应用模糊处理;类和类成员将收到新的短随机名称,但“各种保留”选项列出的名称除外。对调试有用的内部属性(例如源文件名、变量名和行号)将被删除。“……因此我认为不应混淆我的CinemaCityModel。有趣的是,该包中的另一个类适用于此规则,CinemaCityModel除外。。
package com.example.ui.cinema.model;
public class CinemaCityModel
{
public static final String CUR_CITY_NAME_SORT="CURRENT";
public static final String HOT_CITY_NAME_SORT="HOT";
private String CityId;
private String CityName;
private String NameSort;
public String getCityId()
{
return CityId;
}
public void setCityId(String cityId)
{
CityId = cityId;
}
public String getCityName()
{
return CityName;
}
public void setCityName(String cityName)
{
CityName = cityName;
}
public String getNameSort()
{
return NameSort;
}
public void setNameSort(String nameSort)
{
NameSort = nameSort;
}
}