在包/ / ui / cinema / model /中,有几个类我不希望它们被混淆,所以我在proguard配置文件中声明了以下几行:
-keep public class com.example.ui.cinema.model。** {*;}
-keep public class com.example.ui.cinema.model。** $ * {*;}
对于那个玩家中的大多数课程来说,它的工作正常,除了" 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;
}
}
我反编译了apk,找不到CinemaCityModel。但它在我的源代码中的那个包中。它被混淆了,我不知道为什么。有人见过吗?请帮助,谢谢:)
答案 0 :(得分:0)
proguard中的-keep
关键字只会阻止该类在未使用时被优化掉。
要防止类被混淆,您需要使用-dontobfuscate
答案 1 :(得分:0)
您的配置确实保留了这个类(实际上第一行就足够了,因为它意味着第二行)。你应该看到它列在proguard / seeds.txt中。
你应该仔细检查一下:也许输入中也没有,因为它没有正确编译。或者在这种情况下,它可能不是公共的,或者它毕竟是在不同的包中。或者你的反编译器可能无法写出反编译的类。