首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为android绑定点击侦听器编写progaurd规则?

如何为android绑定点击侦听器编写progaurd规则?
EN

Stack Overflow用户
提问于 2019-07-31 04:44:42
回答 1查看 2.4K关注 0票数 4

我在我的应用程序中使用databinding,它运行得很好。但是当我启用minifyEnabled trueshrinkResources true时,它会显示出一些错误。

代码语言:javascript
复制
Execution failed for task':app:transformClassesAndResourcesWithR8ForDebug'.
Caused by: com.android.tools.r8.utils.AbortException: Error: D:\TUK_Sep_Conclave\TUK_Septmber\app\build\intermediates\proguard-rules\debug\aapt_rules.txt, offset: 48276, line: 457, column: 33, Expected field or method name at D:\TUK_Sep_Conclave\TUK_Septmber\app\build\intermediates\proguard-rules\debug\aapt_rules.txt:457:33

-keepclassmembers class * { *** @{(view)->listener.onClick(view)}(android.view.View); }
                            ^
at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:101)

Suppressed: com.android.tools.r8.shaking.ProguardRuleParserException: Expected field or method name at D:\TUK_Sep_Conclave\TUK_Septmber\app\build\intermediates\proguard-rules\debug\aapt_rules.txt:457:33
-keepclassmembers class * { *** @{(view)->listener.onClick(view)}(android.view.View); }

我的layout.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.ui.user.activity.ContactUsActivity"
    tools:ignore="HardcodedText">

    <data>

        <variable
            name="listener"
            type="com.example.ui.user.activity.ContactUsActivity" />

    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/action_call_one"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/selectableItemBackground"
            android:clickable="true"
            android:focusable="true"
            android:gravity="center"
            android:onClick="@{(view)->listener.onClick(view)}"
            android:padding="3dip"
            android:text="+91-1234567890"
            android:textColor="@android:color/white"
            android:textSize="12sp" />

    </LinearLayout>

</layout>

现在我的问题是如何为android数据库编写progaurd规则并单击侦听器。任何帮助都将不胜感激,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-08 12:52:05

这是一个很老的问题,但对于那些将要面对这个问题的人来说,这是一个答案。

请检查这些步骤以解决问题。

步骤1

代码语言:javascript
复制
//Don't forget to add this rule in proguard-rules.pro

-keepclassmembers class * extends android.app.Activity {
     public void *(android.view.View);
 }

步骤2

请重复检查调用的布局文件。

代码语言:javascript
复制
android:onClick="@{(view)->listener.onClick(view)}"

检查顶部,它必须包括变量

代码语言:javascript
复制
<variable
    name="listener"
    type="com.example.ui.user.activity.ContactUsActivity" />

如果在任何布局文件中缺少一个变量,那么就会出现错误。

步骤3

如果你的问题还没有解决,那么你必须改变

代码语言:javascript
复制
android:onClick="@{(view)->listener.onClick(view)}"

代码语言:javascript
复制
android:onClick="@{listener::onClick}"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57283336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档