Android TreeView库和proguard遭遇战

Android TreeView库和proguard遭遇战,android,proguard,Android,Proguard,android中有一个非常好的创建树视图的库 该库工作正常,直到我启用了proguard,然后应用程序崩溃 注意:我有一个ViewPager,其中有5个片段,所有片段都使用treeview 使用默认的progourd设置,我得到以下错误: java.lang.RuntimeException: Could not instantiate class class com.mehdok.c.c at com.mehdok.e.a.a.b(Unknown Source)

android中有一个非常好的创建树视图的库

该库工作正常,直到我启用了
proguard
,然后应用程序崩溃

注意:我有一个
ViewPager
,其中有5个片段,所有片段都使用
treeview

使用默认的progourd设置,我得到以下错误:

java.lang.RuntimeException: Could not instantiate class class com.mehdok.c.c
            at com.mehdok.e.a.a.b(Unknown Source)
            at com.mehdok.e.a.a.a(Unknown Source)
            at com.mehdok.e.a.a.b(Unknown Source)
            at com.mehdok.e.a.a.b(Unknown Source)
            at com.mehdok.e.a.a.a(Unknown Source)
            at com.mehdok.b.b.b(Unknown Source)
            at com.mehdok.b.b.onCreateView(Unknown Source)
java.lang.RuntimeException: Could not instantiate class class com.mehdok.holders.TreeViewHolder
        at com.mehdok.views.treeview.AndroidTreeView.getViewHolderForNode(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.addNode(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.expandNode(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.getView(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.getView(Unknown Source)
        at com.mehdok.b.b.b(Unknown Source)
        at com.mehdok.b.b.onCreateView(Unknown Source)
因此,我尝试更改proguard设置:

-keep public class com.mehdok.views.treeview.AndroidTreeView
-keep public class com.mehdok.views.treeview.SimpleViewHolder
-keep public class com.mehdok.views.treeview.TreeNode
-keep public interface com.mehdok.views.treeview.TreeNode$TreeNodeClickListener
-keep public class com.mehdok.views.treeview.TreeNode$BaseNodeViewHolder
-keep public class com.mehdok.views.treeview.TreeNodeWrapperView
-keep class com.mehdok.views.treeview.** { *; }
-keep public class com.mehdok.holders.TreeViewHolder
-keep public class com.mehdok.holders.TreeViewHolder$TreeViewItem
现在我得到了这个错误:

java.lang.RuntimeException: Could not instantiate class class com.mehdok.c.c
            at com.mehdok.e.a.a.b(Unknown Source)
            at com.mehdok.e.a.a.a(Unknown Source)
            at com.mehdok.e.a.a.b(Unknown Source)
            at com.mehdok.e.a.a.b(Unknown Source)
            at com.mehdok.e.a.a.a(Unknown Source)
            at com.mehdok.b.b.b(Unknown Source)
            at com.mehdok.b.b.onCreateView(Unknown Source)
java.lang.RuntimeException: Could not instantiate class class com.mehdok.holders.TreeViewHolder
        at com.mehdok.views.treeview.AndroidTreeView.getViewHolderForNode(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.addNode(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.expandNode(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.getView(Unknown Source)
        at com.mehdok.views.treeview.AndroidTreeView.getView(Unknown Source)
        at com.mehdok.b.b.b(Unknown Source)
        at com.mehdok.b.b.onCreateView(Unknown Source)
proguard
映射的相关部分
文本:

com.mehdok.fragments.Tab1Fragment -> com.mehdok.b.b:
    com.mehdok.fragments.Tab1Fragment mInstance -> a
    android.widget.FrameLayout baseView -> b
    com.mehdok.fragments.Tab1Fragment getInstance() -> a
    android.view.View onCreateView(android.view.LayoutInflater,android.view.ViewGroup,android.os.Bundle) -> onCreateView
    void findViews(android.view.View) -> a
    void fillView() -> b
TreeViewHolder.java

public class TreeViewHolder extends TreeNode.BaseNodeViewHolder<TreeViewHolder.TreeViewItem>
{
    public TreeViewHolder(Context context)
    {
        super(context);
    }

    @Override
    public View createNodeView(TreeNode node, TreeViewItem value)
    {
        final LayoutInflater inflater = LayoutInflater.from(context);
        final View view = inflater.inflate(R.layout.treeview_layout, null, false);
        TextView tvValue = (TextView) view.findViewById(R.id.row_text);
        tvValue.setText(value.nodeName);

        return view;
    }

    @Override
    public void toggle(boolean active)
    {
        super.toggle(active);
    }

    public static class TreeViewItem
    {
        public String nodeName;
        public int nodeNavNum;
        public int nodeDeep;

        public TreeViewItem(String name, int nav, int deep)
        {
            nodeName = name;
            nodeNavNum = nav;
            nodeDeep = deep;
        }
    }
}
那么我如何配置progord来为我工作呢


任何帮助都将不胜感激。

保留视图持有者解决了问题

-keep public class com.mehdok.holders.TreeViewHolder
-keep public class com.mehdok.holders.TreeViewHolder$TreeViewItem
-keepclassmembers class com.mehdok.holders.TreeViewHolder {
    public *;
    private *;
}

一个星期以来,我一直在努力解决这个问题。先生,你救了这一天。