代码混淆后数据绑定无法正常工作

问题描述 投票:0回答:2

我正在尝试将aar库用作Maven依赖项。该库使用AndroidX,数据绑定和代码混淆。

当`minifyEnabled = false'时库起作用,但是当我打开代码混淆时它崩溃了。

问题是,当我打电话给Activity.onCreate(savedInstanceState)时:

binding = DataBindingUtils.setContentView(Activity,ResInt);
binding.getRoot(); // binding == null

我没有得到ClassNotFoundException,但是得到了NullPointerException

我也尝试使用

binding = MyActivityBinding.inflate(LayoutInflater,parent,attachtoparent);
setContentView(binding.getRoot());

但是binding仍然为空。

首先,我通过将所有android.support库替换为相应的AndroidX包来实现迁移。

这是我的gradle.properties

android.useAndroidX=true
android.enableJetifier=true
android.enableR8=false
android.databinding.enableV2=false

和我的proguardrules.pro

-ignorewarnings

-keepattributes Signature

-keepattributes *Annotation*

-dontwarn sun.misc.**

-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
-keep class com.google.gson.** { *; }
-keep class com.loopj.android.** { *; }
-keep interface com.loopj.android.** { *; }

-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }
-keepclassmembers class com.google.android.gms.maps.model.LatLng

没有AndroidX,arar库就可以正常工作,也没有其他ProGuard规则。

是否有一些额外的步骤可以使AndroidXm DataBinding和代码混淆功能协同工作?

非常感谢。

android proguard android-databinding androidx
2个回答
0
投票

尝试添加这些保护规则:

-keep class androidx.databinding.** { *; } -keep class * extends androidx.databinding.DataBinderMapper { *; }


0
投票

在其中实施数据绑定gradle.properties class见下面的截图

it will enables your Databinding

© www.soinside.com 2019 - 2024. All rights reserved.