android 应用程序中的 Geckoview 因错误“java.lang.Exception:加载 sqlite 库时出错”而崩溃

Posted

技术标签:

【中文标题】android 应用程序中的 Geckoview 因错误“java.lang.Exception:加载 sqlite 库时出错”而崩溃【英文标题】:Geckoview in android app crashing with error "java.lang.Exception: Error loading sqlite libraries" 【发布时间】:2021-04-29 02:18:09 【问题描述】:

我已经在这里和其他地方阅读了很多关于 geckoview 的文章和操作指南,但我没有找到任何解决我的问题的方法。我在我的 android 应用程序中集成了 geckoview(作为 webview 的替代品)。我按照howtos中的说明做了所有事情,但此刻,活动想要显示,应用程序崩溃,错误“java.lang.Exception:加载sqlite库时出错”。有人能帮帮我吗?

build.gradle(模块)

ext 
    geckoviewChannel = "nightly"
    geckoviewVersion = "86.0.20210124091450"


repositories 
    maven 
        url "https://maven.mozilla.org/maven2/"
    

活动 xml

<org.mozilla.geckoview.GeckoView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/geckoview"
    android:layout_
    android:layout_ />

活动顶部

import org.mozilla.geckoview.GeckoRuntime;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoView;

创建活动

        boolean doGecko=true;
        myGeckoView = findViewById(R.id.geckoview);
        if (doGecko) 
            Log.d(logTag, "starting GeckoView: "+myGeckoView);
            try 
                if (myGeckoSession==null) 
                    Log.d(logTag, "myGeckoSession = new GeckoSession()");
                    myGeckoSession = new GeckoSession();
                
                Log.d(logTag, "GeckoSession: "+myGeckoSession);

                if (myGeckoRuntime==null ) 
                    myGeckoRuntime = GeckoRuntime.create(this);
                    Log.d(logTag, "created GeckoRuntime: "+myGeckoRuntime );
                 else 
                    myGeckoRuntime = GeckoRuntime.getDefault(this);
                    Log.d(logTag, "getting default GeckoRuntime: "+myGeckoRuntime );
                

                Log.d(logTag, "myGeckoSession.open(myGeckoRuntime)");
                myGeckoSession.open(myGeckoRuntime);

                Log.d(logTag, "myGeckoview.setSession(myGeckoSession)");
                myGeckoView.setSession(myGeckoSession);
                Log.d(logTag, "loading url");
                myGeckoSession.loadUri("http://www.google.de");
             catch (Exception e) 
                Log.d(logTag, "error "+e.toString() );
            
         else 
            myGeckoView.setVisibility(View.INVISIBLE);
        

堆栈跟踪

2021-01-25 11:14:18.011 4815-4883/com.test.de.browseme E/GeckoLibLoad: Load sqlite start
2021-01-25 11:14:18.011 4815-4883/com.test.de.browseme E/GeckoLibLoad: Couldn't get a handle to libnss3!
2021-01-25 11:14:18.011 4815-4883/com.test.de.browseme E/GeckoLibLoad: Throw
2021-01-25 11:14:18.011 4815-4883/com.test.de.browseme E/GeckoLibLoad: Load sqlite done
2021-01-25 11:14:18.013 4815-4883/com.test.de.browseme E/AndroidRuntime: FATAL EXCEPTION: Gecko
    Process: com.test.de.browseme, PID: 4815
    java.lang.Exception: Error loading sqlite libraries
        at org.mozilla.gecko.mozglue.GeckoLoader.loadSQLiteLibsNative(Native Method)
        at org.mozilla.gecko.mozglue.GeckoLoader.loadSQLiteLibs(GeckoLoader.java:204)
        at org.mozilla.gecko.GeckoThread.loadGeckoLibs(GeckoThread.java:247)
        at org.mozilla.gecko.GeckoThread.initGeckoEnvironment(GeckoThread.java:267)
        at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:430)

【问题讨论】:

the app crashes, without any information. 这能回答你的问题吗? Unfortunately MyApp has stopped. How can I solve this? 谢谢伙计,向前迈了一步 :) 不,我在“java.lang.Exception:加载 sqlite 库时出错”。我正在看。 我不想变得粗鲁,对此感到抱歉。我只是不够聪明,无法理解您的帮助,但我是在阅读了页面的第一个字母之后,这就是为什么我写了“哦,不,好吧,我读了这个”。这意味着“对不起,伙计,现在我明白了,你想对我说什么,谢谢!”。 不用担心 :) 堆栈溢出有时会声名狼藉,人们在这里很粗鲁(这可能是真的),但我从来没有任何粗鲁的意图,所以我的帖子旨在提供帮助。您应该使用edit 获取您的堆栈跟踪并将其添加到您的问题中,我对这项技术没有经验,所以我无法为您提供更多帮助 【参考方案1】:

这看起来像第 116 期 https://github.com/mozilla/geckoview/issues/116

转到您的清单并将其添加到应用程序区域下:

android:extractNativeLibs="true"

【讨论】:

以上是关于android 应用程序中的 Geckoview 因错误“java.lang.Exception:加载 sqlite 库时出错”而崩溃的主要内容,如果未能解决你的问题,请参考以下文章

关于 Mozilla GeckoView 的 Android 问题

在 Android 中集成 GeckoView

如何在 Android 上将 Javascript 注入 GeckoView

下拉菜单(选择标签、组合框)在 GeckoView 实现中不起作用

如何实现 GeckoView?

Geckoview 获得麦克风权限