代码混淆后数据绑定无法正常工作
Databinding not working correctly after code obfuscation
我正在尝试将我的 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 的情况下,aar 库可以正常工作,也没有其他 ProGuard 规则。
是否需要执行一些额外的步骤才能使 AndroidXm 数据绑定和代码混淆一起工作?
谢谢指教。
尝试添加以下 Proguard 规则:
-keep class androidx.databinding.** { *; }
-keep class * extends androidx.databinding.DataBinderMapper { *; }
我正在尝试将我的 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 的情况下,aar 库可以正常工作,也没有其他 ProGuard 规则。
是否需要执行一些额外的步骤才能使 AndroidXm 数据绑定和代码混淆一起工作?
谢谢指教。
尝试添加以下 Proguard 规则:
-keep class androidx.databinding.** { *; }
-keep class * extends androidx.databinding.DataBinderMapper { *; }