如何为android修复“错误膨胀类GeckoEngineView”

Posted

技术标签:

【中文标题】如何为android修复“错误膨胀类GeckoEngineView”【英文标题】:How to fix "Error inflating class GeckoEngineView" for android 【发布时间】:2019-12-26 23:37:42 【问题描述】:

GeckoEngineView 无法膨胀,尽管使用了最新的依赖项。

代码来自GeckoView 上的官方文档。项目中所有最新的依赖和 repos 都已成功解析。

错误:

Error inflating class mozilla.components.browser.engine.gecko.GeckoEngineView

在搜索错误日志时:

 Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class mozilla.components.browser.engine.gecko.GeckoEngineView
 Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class mozilla.components.browser.engine.gecko.GeckoEngineView
 Caused by: java.lang.ClassNotFoundException: Didn't find class "mozilla.components.browser.engine.gecko.GeckoEngineView" on path: DexPathList[[zip file "/data/app/com.geckoengine.example-IQhwqfpsfzKO11EI9ak6kQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.geckoengine.example-IQhwqfpsfzKO11EI9ak6kQ==/lib/arm64, /data/app/com.geckoengine.example-IQhwqfpsfzKO11EI9ak6kQ==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]

更新的 XML 文件,来源:@ArturoMejiaactivity_main.xml

<org.mozilla.geckoview.GeckoView
    android:id="@+id/geckoview"
    android:layout_
    android:layout_ />

MainActivity.java

public class MainActivity extends AppCompatActivity 

    GeckoView view;
    GeckoSession session;
    GeckoRuntime runtime;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view = findViewById(R.id.geckoview);
        session = new GeckoSession();
        runtime = GeckoRuntime.create(this);
        session.open(runtime);
        view.setSession(session);


        //TODO: add any url
        //TODO: Use intent.putExtraString() to send a url from the main activity to this activity
        session.loadUri("http://theyouthbuzz.com/");
    


文档暗示代码应该毫无问题地加载 web 视图。同样无法验证。

注意事项:

Android Studio 版本:3.5 RC 3 [开发频道]

【问题讨论】:

是否添加了依赖:implementation "org.mozilla.components:browser-engine-gecko:latest-version" ? 您必须将 latest-version 更改为该库的最新版本。检查图书馆的文档。好像是 9.0.0 我的评论解决了您的问题吗? 谢谢。刚刚发布了答案。 【参考方案1】:

@SowingFiber 我认为您在上面示例中的 XML 代码上有一个小错误,可能在上一版中。我认为你应该更新它,因为现在它不会编译。

问题在于您有两种不同类型的引用,一种在 XML 中,另一种在代码中。要匹配代码中的引用,您必须在 XML 中使用 org.mozilla.geckoview.GeckoView

<org.mozilla.geckoview.GeckoView
    android:id="@+id/geckoview"
    android:layout_
    android:layout_ />

此外,您可以直接包含geckoview,而不使用Mozilla Android Components,以防您只想使用geckoview

implementation "org.mozilla.geckoview:geckoview-$geckoviewChannel:$geckoviewVersion"   

【讨论】:

【参考方案2】:

如组件 doc 中所述,要使用它,您必须在 build.gradle 中添加此依赖项

implementation "org.mozilla.components:browser-engine-gecko:latest-version"

目前latest version 是 9.0.0

implementation "org.mozilla.components:browser-engine-gecko:9.0.0"

【讨论】:

以上是关于如何为android修复“错误膨胀类GeckoEngineView”的主要内容,如果未能解决你的问题,请参考以下文章

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。

xml 如何为所有Android版本修复奇怪的FAB底部边距。