java - 使用混淆器时选取框工具栏标题不起作用

标签 java android proguard obfuscation android-toolbar

我正在尝试在工具栏中选择选取框标题,但如果我在启用混淆器的情况下构建它,则选取框不起作用。



    Field f = toolbar.getClass().getDeclaredField("mTitleTextView");
    f.setAccessible(true);

    TextView titleTextView = (TextView) f.get(toolbar);
    titleTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
    titleTextView.setMarqueeRepeatLimit(-1);
    titleTextView.setSelected(true);


Seem like "mTitleTextView" is obfuscated by proguard.

 java.lang.NoSuchFieldException: mTitleTextView
        at java.lang.Class.getDeclaredField(Class.java:631)

但是它不起作用,知道吗?

最佳答案

您可以使用以下语法指示混淆器接触私有(private)字段:


    -keepclassmembers class android.widget.Toolbar {
        private android.widget.TextView mTitleTextView;   
    }

对于来自支持库的工具栏:


    -keepclassmembers class android.support.v7.widget.Toolbar {
        private android.widget.TextView mTitleTextView;
     }

参见 this问题了解更多详情。

关于java - 使用混淆器时选取框工具栏标题不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47579206/

相关文章:

java - 如果您将对象分配给最终字段,其他线程是否会看到该对象的非最终/非 volatile 字段的先前更新?

android - 问号而不是 RTL 字段

java - 如何处理 Android 按钮 OncClick fragment

java - Eclipse - Java - 没有断点的热交换

java - 如何在 JSP 循环中使用动态集合名称?

java - 使用外部 java 类作为 AVRO 模式中的类型

java - 在 Android 中启用当前禁用的 Spinner

android - Proguard 混淆枚举问题

java - Android-如何消除这些gradle/proguard警告?

android - 使用 AChartEngine 混淆器