java - 在 aar 库文件内的布局中获取 inflateException

标签 java android aar lib

我将我的项目转换为库,其中包含一些 java、布局、字符串、资源和菜单文件。现在我想在另一个项目中使用该 aar 文件。导出后,当我尝试从 aar 库调用 Activity 时,我收到二进制 XML 文件行 #: Error inflateing class 的错误。 我使用了 MovableFloatingActionButton 自定义类,并仅在 aar 库内的布局中创建了按钮。

错误就像

> Caused by: android.view.InflateException: Binary XML file line #86:
> Error inflating class com.***.****.MovableFloatingActionButton
> 
> Caused by: java.lang.ClassNotFoundException:
> com.***.****.MovableFloatingActionButton
> 
> Caused by: java.lang.NoClassDefFoundError: Failed resolution of:
> Lcom/google/android/material/floatingactionbutton/FloatingActionButton;
> 
> Caused by: java.lang.ClassNotFoundException: Didn't find class
> "com.google.android.material.floatingactionbutton.FloatingActionButton"
> on path: DexPathList[[zip file
> "/data/app/com.***.****-1/base.apk"],nativeLibraryDirectories=[/data/app/com.*****.****-1/lib/arm64,
> /system/lib64, /vendor/lib64]]

最佳答案

看起来类加载器没有找到用于扩展实例化该类的复杂 View 的类。 可能出现的问题有:

-1-如果您的混淆器已启用,请尝试禁用它,并测试 View 或布局是否膨胀。如果有效,您需要为其配置 proguard 文件。

-2- 通过单击其最后一部分(布局 xml 文件中的简单类名称)来仔细检查拼写错误和膨胀类的包,在您的情况下,它应该是 com.google.android.material.floatingactionbutton。 FloatingActionbutton,(按住键盘上的CTRL键并单击xml标记的边框部分)如果打开源文件,则可以,否则类确实不存在,您需要编写正确的类路径来实例化它。

-3-如果您正在使用 multidex,或者您想支持 pre-art 设备,这些设备仍然使用 dex 而不是 art(主要是 pre-lollipop 设备),那么不要忘记覆盖 Application 类并使用 MultidexApplication 或包含AttachBaseContext() 将 Multidex.install(this) 放在主体内。 并且不要忘记将此类的正确路径放入 list 应用程序标记中。

示例:

class MyApplication : Application() {
    /**
     * multidex support, do not remove to backward compatibility before ART (DEX need it)
     * */
    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)

        MultiDex.install(this)
    }
    ...
}

和:

<application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:hardwareAccelerated="true" ... >

其中之一应该可以解决您的问题。

关于java - 在 aar 库文件内的布局中获取 inflateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969182/

相关文章:

java - JButton 上的 itemStateChanged

java - 如何使用 Gradle 命令行参数更改代码变量

java - if(pause == null) { 不起作用

Java 泛型运行时实例化

android - 无法写入 SD 卡

android - RxJava- 动态 EditText 上的 RxAndroid 表单验证

Android Studio 从存储库导入 aar 文件使依赖项消失

android - Android SDK(库)可以有应用类吗?

android - 如何将JAR依赖项包含到上述AAR库gradle 3.0中

android - Proguard 在构建 aar 时不保留类