android - 如何实现GeckoView?

标签 android gecko geckoview

我想在我的应用程序中实现 GeckoView,但总是遇到以下错误:

  1. 当我按照此链接中的描述实现它时:https://wiki.mozilla.org/Mobile/GeckoView

安装应用程序时出现以下错误:

Installation failed with message Failed to commit install session 2023122124 with command cmd package install-commit 2023122124. Error: INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.

WARNING: Uninstalling will remove the application data!

Do you want to uninstall the existing application?

  • 当我单击“确定”时,调试选项卡中出现以下错误:
  • 05/07 10:56:14: Launching app $ adb install-multiple -r -t C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_6.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_0.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_1.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_2.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_7.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_4.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\resources\instant-run\x86_64\debug\resources-x86_64-debug.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_5.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_9.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_3.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\slices\slice_8.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\split-apk\x86_64\debug\dep\dependencies.apk C:\Users\USERNAME\Desktop\GeckoViewTest\app\build\intermediates\instant-run-apk\x86_64\debug\app-x86_64-debug.apk $ adb shell pm uninstall de.example.test.geckoviewtest Unknown failure: Exception occurred while executing: java.lang.IllegalArgumentException: Unknown package: de.example.test.geckoviewtest at com.android.server.pm.Settings.isOrphaned(Settings.java:4289) at com.android.server.pm.PackageManagerService.isOrphaned(PackageManagerService.java:21095) at com.android.server.pm.PackageManagerService.deletePackageVersioned(PackageManagerService.java:17916) at com.android.server.pm.PackageInstallerService.uninstall(PackageInstallerService.java:736) at com.android.server.pm.PackageManagerShellCommand.runUninstall(PackageManagerShellCommand.java:1486) at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:193) at android.os.ShellCommand.exec(ShellCommand.java:103) at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21328) at android.os.Binder.shellCommand(Binder.java:634) at android.os.Binder.onTransact(Binder.java:532) at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2821) at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3856) at android.os.Binder.execTransact(Binder.java:731) Error while Installing APKs

    我在productFlavors{...}下添加了此代码并且可以安装该应用程序:

    splits {
        abi {
            enable true
            reset()
            include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a'
            universalApk true
        }
    }
    

    但现在我的应用程序崩溃于:

    GeckoRuntime runtime = GeckoRuntime.create(this);
    

    我在 Activity 的 onCreate 中收到以下错误:

    2019-05-07 10:58:31.347 9069-9090/de.example.test.geckoviewtest E/GeckoLoader: Couldn't load mozglue. Trying native library dir. 2019-05-07 10:58:31.368 9069-9090/de.example.test.geckoviewtest E/GeckoLoader: Library doesn't exist when it should. 2019-05-07 10:58:31.382 9069-9090/de.example.test.geckoviewtest E/GeckoLoader: Couldn't load /data/user/0/de.example.test.geckoviewtest/lib/libmozglue.so: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/user/0/de.example.test.geckoviewtest/lib/libmozglue.so" not found 2019-05-07 10:58:31.392 9069-9090/de.example.test.geckoviewtest E/GeckoLoader: Couldn't load /data/app-lib/de.example.test.geckoviewtest/libmozglue.so: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/app-lib/de.example.test.geckoviewtest/libmozglue.so" not found 2019-05-07 10:58:31.409 9069-9090/de.example.test.geckoviewtest E/GeckoLoader: Couldn't load /data/data/de.example.test.geckoviewtest/lib/libmozglue.so: java.lang.UnsatisfiedLinkError: dlopen failed: library "/data/data/de.example.test.geckoviewtest/lib/libmozglue.so" not found 2019-05-07 10:58:31.420 9069-9090/de.example.test.geckoviewtest W/GeckoLoader: lib/x86/libmozglue.so not found in APK /data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/base.apk 2019-05-07 10:58:31.423 9069-9090/de.example.test.geckoviewtest E/GeckoLoader: Load diagnostics: LOAD mozglue: ABI: x86_64-gcc3, x86: Data: /data/user/0/de.example.test.geckoviewtest, ax=false, ddx=false, -1x=false, -2x=false, nativeLib: /data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/lib/x86, dirx=false, libx=false --------- beginning of crash 2019-05-07 10:58:31.438 9069-9090/de.example.test.geckoviewtest E/AndroidRuntime: FATAL EXCEPTION: Gecko Process: de.example.test.geckoviewtest, PID: 9069 java.lang.RuntimeException: LOAD mozglue: ABI: x86_64-gcc3, x86: Data: /data/user/0/de.example.test.geckoviewtest, ax=false, ddx=false, -1x=false, -2x=false, nativeLib: /data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/lib/x86, dirx=false, libx=false at org.mozilla.gecko.mozglue.GeckoLoader.doLoadLibrary(GeckoLoader.java:426) at org.mozilla.gecko.mozglue.GeckoLoader.loadMozGlue(GeckoLoader.java:434) at org.mozilla.gecko.GeckoThread.initGeckoEnvironment(GeckoThread.java:287) at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:448) Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/base.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_dependencies_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_resources_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_0_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_1_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_2_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_3_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_4_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_5_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_6_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_7_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_8_apk.apk", zip file "/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/de.example.test.geckoviewtest-ED_fDOF4yrCjKrHnYMiPhQ==/lib/x86, /system/lib]]] couldn't find "libmozglue.so" at java.lang.Runtime.loadLibrary0(Runtime.java:1012) at java.lang.System.loadLibrary(System.java:1669) at org.mozilla.gecko.mozglue.GeckoLoader.doLoadLibraryExpected(GeckoLoader.java:347) at org.mozilla.gecko.mozglue.GeckoLoader.doLoadLibrary(GeckoLoader.java:373) at org.mozilla.gecko.mozglue.GeckoLoader.loadMozGlue(GeckoLoader.java:434)  at org.mozilla.gecko.GeckoThread.initGeckoEnvironment(GeckoThread.java:287)  at org.mozilla.gecko.GeckoThread.run(GeckoThread.java:448)

    最佳答案

    似乎 gecko 版本不包含适合您目标架构的库 mozglue(即您的设备需要 x86 而您正在构建 arm64)。 您需要确保导入适合您的架构的正确版本

    implementation "org.mozilla.geckoview:geckoview-arm64-v8a:69.0.20190903125908" //for arm 64
    implementation "org.mozilla.geckoview:geckoview-armeabi-v7a:69.0.20190903125908" //for arm v7
    implementation "org.mozilla.geckoview:geckoview-x86:69.0.20190903125908" //for x86 32 bit
    implementation "org.mozilla.geckoview:geckoview-x86_64:69.0.20190903125908" //for x86 64 bit
    

    关于android - 如何实现GeckoView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56020135/

    相关文章:

    android - 什么是 "Web Application"?

    Android M权限撤销——用 "dangerous"权限保护一个服务

    android - 如何在 Android 上将 Javascript 注入(inject) GeckoView

    android-studio - 无法获取类型对象的未知属性 'geckoviewChannel'

    android - "Lock Screen"带自定义安全密码

    android notifydatasetchange()不工作

    css - Webkit 错误?损坏的 CSS

    javascript - XPCSafeJSObjectWrapper 有什么作用?

    selenium - 如何在 selenium 3 中关闭 Marionette/gecko 驱动程序日志

    android - 无法解析: org. mozilla.geckoview