我试图将我的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和代码混淆功能协同工作吗?
感谢您的建议。