Android:为什么我的课程虽然已经成熟但仍然是混淆的

时间:2014-07-08 03:03:58

标签: java android proguard

在包/ / 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。但它在我的源代码中的那个包中。它被混淆了,我不知道为什么。有人见过吗?请帮助,谢谢:)

2 个答案:

答案 0 :(得分:0)

proguard中的-keep关键字只会阻止该类在未使用时被优化掉。

要防止类被混淆,您需要使用-dontobfuscate

答案 1 :(得分:0)

您的配置确实保留了这个类(实际上第一行就足够了,因为它意味着第二行)。你应该看到它列在proguard / seeds.txt中。

你应该仔细检查一下:也许输入中也没有,因为它没有正确编译。或者在这种情况下,它可能不是公共的,或者它毕竟是在不同的包中。或者你的反编译器可能无法写出反编译的类。