WPEView wraps the WPE WebKit browser engine in a reusable Android library.

Overview

WPE Android

logo

WPE WebKit port for Android.

WPEView API

WPEView wraps the WPE WebKit browser engine in a reusable Android library. WPEView serves a similar purpose to Android's built-in WebView and tries to mimick its API aiming to be an easy to use drop-in replacement with extended functionality.

Setting up WPEView in your Android application is fairly simple.

(TODO: package, distribute and document installation)

First, add the WPEView widget to your Activity layout:

">
<com.wpe.wpeview.WPEView
        android:id="@+id/wpe_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity"/>

And next, wire it in your Activity implementation to start using the API, for example, to load an URL:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    var browser = findViewById(R.id.wpe_view)
    browser?.loadUrl(INITIAL_URL)
}

To see WPEView in action check the examples folder.

Setting up your environment

python3

The bootstrap script requires python3.

Getting the dependencies

WPE Android depends on a considerable amount of libraries, including libWPE and WPEWebKit. To ease the cross-compilation process we use Cerbero. To set all things up run:

python3 ./scripts/bootstrap.py

This command will fetch the required binaries and place them in the expected location.

If you want to build (and/or modify) the dependencies you can pass the --build option:

python3 ./scripts/bootstrap.py --build

This command will fetch Cerbero, the Android NDK and a bunch of dependencies required to cross-compile WPE Android dependencies. The process takes a significant amount of time.

You can optionally create a debug build of WPEWebKit passing the --debug option to the bootstrap command:

python3 ./scripts/bootstrap.py --build --debug

Finally, the bootstrap option accepts the --arch option to set the target architecture. Currently the only supported architecture is arm64.

Android Studio

Android Studio is required to build and run WPE Android. Once the bootstrap process is done and all the dependencies are cross-compiled and installed, you should be able to open the launcher demo with Android Studio and run it on a real device.

Known issues and limitations

  • The only supported architecture at the moment is arm64.
  • WPE Android does not work with an Android emulator due to EGL emulation issues.
  • The scripts and build have only been tested in Linux.
Comments
  • couldn't find

    couldn't find "libWPEBackend-default.so" , force closes minibrowser upon launch

    I was able to reproduce this issue on Windows 10 and on Ubuntu 20.04. I ran this command

    ./tools/scripts/bootstrap.py
    

    also tried this

    ./tools/scripts/bootstrap.py --build
    

    I was able to successfully compile this on on Android Studio. However when I launch the application on the android TV it justs shows a white screen then shuts down with this error.

    2022-08-09 02:05:08.516 12678-12678/com.wpe.tools.minibrowser D/AndroidRuntime: Shutting down VM
    2022-08-09 02:05:08.529 12678-12678/com.wpe.tools.minibrowser E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.wpe.tools.minibrowser, PID: 12678
        android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class com.wpe.wpeview.WPEView
        Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class com.wpe.wpeview.WPEView
        Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance0(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
            at android.view.LayoutInflater.createView(LayoutInflater.java:647)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
            at androidx.fragment.app.Fragment.onCreateView(Fragment.java:2023)
            at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104)
            at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524)
            at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261)
            at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890)
            at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1814)
            at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751)
            at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2976)
            at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2886)
            at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263)
            at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:351)
            at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
            at android.app.Activity.performStart(Activity.java:7165)
            at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2938)
            at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
            at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)
            at android.os.Handler.dispatchMessage(Handler.java:106)
            at android.os.Looper.loop(Looper.java:193)
            at android.app.ActivityThread.main(ActivityThread.java:6680)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
         Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.wpe.tools.minibrowser-R0D2fgX6hbOH3jp-nufEVA==/base.apk"],nativeLibraryDirectories=[/data/app/com.wpe.tools.minibrowser-R0D2fgX6hbOH3jp-nufEVA==/lib/arm, /system/lib, /product/lib]]] couldn't find "libWPEBackend-default.so"
            at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
            at java.lang.System.loadLibrary(System.java:1669)
            at com.wpe.wpe.BrowserGlue.<clinit>(BrowserGlue.java:16)
            at com.wpe.wpe.BrowserGlue.setupEnvironment(Native Method)
            at com.wpe.wpe.Browser.initialize(Browser.java:114)
            at com.wpe.wpeview.WPEView.<init>(WPEView.java:55)
            at java.lang.reflect.Constructor.newInstance0(Native Method) 
            at java.lang.reflect.Constructor.newInstance(Constructor.java:343) 
            at android.view.LayoutInflater.createView(LayoutInflater.java:647) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) 
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 
            at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:515) 
            at android.view.LayoutInflater.inflate(LayoutInflater.java:423) 
            at androidx.fragment.app.Fragment.onCreateView(Fragment.java:2023) 
            at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104) 
            at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524) 
            at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261) 
            at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1890) 
            at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1814) 
            at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1751) 
            at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2976) 
            at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2886) 
            at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263) 
            at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:351) 
            at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246) 
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391) 
            at android.app.Activity.performStart(Activity.java:7165) 
            at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2938) 
            at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180) 
            at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165) 
            at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142) 
            at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809) 
            at android.os.Handler.dispatchMessage(Handler.java:106) 
            at android.os.Looper.loop(Looper.java:193) 
            at android.app.ActivityThread.main(ActivityThread.java:6680) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
    2022-08-09 02:05:08.540 3195-3430/? W/ActivityManager:   Force finishing activity com.wpe.tools.minibrowser/.MainActivity
    

    Here is Build log from Android Studio

    Executing tasks: [:tools:minibrowser:assembleMinApi26Debug] in project 
    
    > Configure project :wpe
    Detected ABI: [arm64-v8a]
    Use ./tools/scripts/bootstrap.py to install dependencies for more ABIs
    
    > Task :installQATools UP-TO-DATE
    > Task :installGitHook UP-TO-DATE
    > Task :tools:minibrowser:preBuild UP-TO-DATE
    > Task :tools:minibrowser:preMinApi26DebugBuild UP-TO-DATE
    > Task :tools:minibrowser:mergeMinApi26DebugNativeDebugMetadata NO-SOURCE
    > Task :wpe:preBuild UP-TO-DATE
    > Task :wpe:preMinApi26DebugBuild UP-TO-DATE
    > Task :wpe:compileMinApi26DebugAidl UP-TO-DATE
    > Task :wpe:compileMinApi26DebugRenderscript NO-SOURCE
    > Task :wpe:generateMinApi26DebugBuildConfig UP-TO-DATE
    > Task :wpe:generateMinApi26DebugResValues UP-TO-DATE
    > Task :wpe:generateMinApi26DebugResources UP-TO-DATE
    > Task :wpe:packageMinApi26DebugResources UP-TO-DATE
    > Task :wpe:parseMinApi26DebugLocalResources UP-TO-DATE
    > Task :wpe:processMinApi26DebugManifest UP-TO-DATE
    > Task :wpe:generateMinApi26DebugRFile UP-TO-DATE
    > Task :wpe:javaPreCompileMinApi26Debug UP-TO-DATE
    > Task :wpe:wpeGenServicesMinApi26Debug UP-TO-DATE
    > Task :wpe:compileMinApi26DebugJavaWithJavac UP-TO-DATE
    > Task :wpe:bundleLibCompileToJarMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:compileMinApi26DebugAidl NO-SOURCE
    > Task :wpe:packageMinApi26DebugRenderscript NO-SOURCE
    > Task :tools:minibrowser:compileMinApi26DebugRenderscript NO-SOURCE
    > Task :tools:minibrowser:generateMinApi26DebugBuildConfig UP-TO-DATE
    > Task :wpe:compileMinApi26DebugLibraryResources UP-TO-DATE
    > Task :wpe:writeMinApi26DebugAarMetadata UP-TO-DATE
    > Task :tools:minibrowser:checkMinApi26DebugAarMetadata UP-TO-DATE
    > Task :tools:minibrowser:generateMinApi26DebugResValues UP-TO-DATE
    > Task :tools:minibrowser:generateMinApi26DebugResources UP-TO-DATE
    > Task :tools:minibrowser:mergeMinApi26DebugResources UP-TO-DATE
    > Task :tools:minibrowser:packageMinApi26DebugResources UP-TO-DATE
    > Task :tools:minibrowser:mapMinApi26DebugSourceSetPaths UP-TO-DATE
    > Task :tools:minibrowser:parseMinApi26DebugLocalResources UP-TO-DATE
    > Task :tools:minibrowser:createMinApi26DebugCompatibleScreenManifests UP-TO-DATE
    > Task :wpe:extractDeepLinksMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:extractDeepLinksMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:processMinApi26DebugMainManifest UP-TO-DATE
    > Task :tools:minibrowser:processMinApi26DebugManifest UP-TO-DATE
    > Task :tools:minibrowser:processMinApi26DebugManifestForPackage UP-TO-DATE
    > Task :tools:minibrowser:processMinApi26DebugResources UP-TO-DATE
    > Task :tools:minibrowser:compileMinApi26DebugKotlin UP-TO-DATE
    > Task :tools:minibrowser:javaPreCompileMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:compileMinApi26DebugJavaWithJavac UP-TO-DATE
    > Task :wpe:mergeMinApi26DebugShaders UP-TO-DATE
    > Task :wpe:compileMinApi26DebugShaders NO-SOURCE
    > Task :wpe:generateMinApi26DebugAssets UP-TO-DATE
    > Task :wpe:packageMinApi26DebugAssets UP-TO-DATE
    > Task :tools:minibrowser:mergeMinApi26DebugShaders UP-TO-DATE
    > Task :tools:minibrowser:compileMinApi26DebugShaders NO-SOURCE
    > Task :tools:minibrowser:generateMinApi26DebugAssets UP-TO-DATE
    > Task :tools:minibrowser:mergeMinApi26DebugAssets UP-TO-DATE
    > Task :tools:minibrowser:compressMinApi26DebugAssets UP-TO-DATE
    > Task :tools:minibrowser:checkMinApi26DebugDuplicateClasses UP-TO-DATE
    > Task :tools:minibrowser:desugarMinApi26DebugFileDependencies UP-TO-DATE
    > Task :tools:minibrowser:mergeExtDexMinApi26Debug UP-TO-DATE
    > Task :wpe:bundleLibRuntimeToDirMinApi26Debug UP-TO-DATE
    > Task :wpe:processMinApi26DebugJavaRes NO-SOURCE
    > Task :wpe:bundleLibResMinApi26Debug NO-SOURCE
    > Task :tools:minibrowser:processMinApi26DebugJavaRes NO-SOURCE
    > Task :tools:minibrowser:mergeMinApi26DebugJavaResource UP-TO-DATE
    > Task :tools:minibrowser:mergeLibDexMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:dexBuilderMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:mergeProjectDexMinApi26Debug UP-TO-DATE
    > Task :wpe:externalNativeBuildMinApi26Debug
    > Task :wpe:mergeMinApi26DebugJniLibFolders UP-TO-DATE
    > Task :wpe:mergeMinApi26DebugNativeLibs UP-TO-DATE
    > Task :wpe:copyMinApi26DebugJniLibsProjectOnly UP-TO-DATE
    > Task :tools:minibrowser:mergeMinApi26DebugJniLibFolders UP-TO-DATE
    > Task :tools:minibrowser:mergeMinApi26DebugNativeLibs UP-TO-DATE
    > Task :tools:minibrowser:stripMinApi26DebugDebugSymbols UP-TO-DATE
    > Task :tools:minibrowser:validateSigningMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:writeMinApi26DebugAppMetadata UP-TO-DATE
    > Task :tools:minibrowser:writeMinApi26DebugSigningConfigVersions UP-TO-DATE
    > Task :tools:minibrowser:packageMinApi26Debug UP-TO-DATE
    > Task :tools:minibrowser:createMinApi26DebugApkListingFileRedirect UP-TO-DATE
    > Task :tools:minibrowser:assembleMinApi26Debug UP-TO-DATE
    
    BUILD SUCCESSFUL in 1s
    57 actionable tasks: 1 executed, 56 up-to-date
    
    Build Analyzer results available
    
    bug investigation 
    opened by geocine 5
  • Support armv7

    Support armv7

    All dependencies can be cross-compiled to armv7 except for WPEWebKit.

    The current link error is:

    lib/libWTF.a(lib/../Source/WTF/wtf/CMakeFiles/WTF.dir/MediaTime.cpp.o):MediaTime.cpp:function WTF::MediaTime::setTimeScale(unsigned int, WTF::MediaTime::RoundingFlags): error: undefined reference to '__mulodi4'
    lib/libWTF.a(lib/../Source/WTF/wtf/CMakeFiles/WTF.dir/MediaTime.cpp.o):MediaTime.cpp:function WTF::MediaTime::operator*(int) const: error: undefined reference to '__mulodi4'
    lib/libWTF.a(lib/../Source/WTF/wtf/CMakeFiles/WTF.dir/MediaTime.cpp.o):MediaTime.cpp:function WTF::MediaTime::operator*(int) const: error: undefined reference to '__mulodi4'
    lib/libWTF.a(lib/../Source/WTF/wtf/CMakeFiles/WTF.dir/MediaTime.cpp.o):MediaTime.cpp:function WTF::MediaTime::compare(WTF::MediaTime const&) const: error: undefined reference to '__mulodi4'
    clang++: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.
    

    I see the same issue building for android_x86

    bug priority-low 
    opened by ferjm 5
  • Do not append 'cerbero' to external cerbero path

    Do not append 'cerbero' to external cerbero path

    Do not append 'cerbero' to external cerbero path in boostrap script because given path should already point to external directory which contains the packages

    opened by zhani 4
  • Running a minApi26 build on Android 8.1 (API level 27) fails to start

    Running a minApi26 build on Android 8.1 (API level 27) fails to start

    As I wrote in https://github.com/Igalia/wpe-android/issues/10#issuecomment-1083005419:

    The .apk resulting from running ./gradlew assembleMinApi26Debug -Parch=armv7 installed fine in an old 32-bit device which I had around, running LineageOS 15.1 (Oreo 8.1, API level 27), but then when starting the Minibrowser there is a backtrace from what I believe might be incorrect usage of the API compatbility libraries (probably worth a separate bug report).

    Checking the logs (full error log), I see the following:

    03-30 08:11:14.916  1108  2691 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.wpe.examples.minibrowser/.MainActivity bnds=[528,540][697,734]} from uid 10030
    03-30 08:11:15.063  1108  3414 I ActivityManager: Start proc 4435:com.wpe.examples.minibrowser/u0a67 for activity com.wpe.examples.minibrowser/.MainActivity
    03-30 08:11:15.088  4435  4435 I zygote  : Late-enabling -Xcheck:jni
    03-30 08:11:15.425  4435  4435 I zygote  : Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.core.view.ViewCompat.setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener) (ViewCompat.java:2463)
    03-30 08:11:15.425  4435  4435 I zygote  :   at android.view.ViewGroup androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor() (AppCompatDelegateImpl.java:938)
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor() (AppCompatDelegateImpl.java:806)
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.appcompat.app.AppCompatDelegateImpl.setContentView(int) (AppCompatDelegateImpl.java:693)
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.appcompat.app.AppCompatActivity.setContentView(int) (AppCompatActivity.java:170)
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.activity.ComponentActivity.onCreate(android.os.Bundle) (ComponentActivity.java:302)
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.fragment.app.FragmentActivity.onCreate(android.os.Bundle) (FragmentActivity.java:273)
    03-30 08:11:15.425  4435  4435 I zygote  :   at void androidx.appcompat.app.AppCompatActivity.onCreate(android.os.Bundle) (AppCompatActivity.java:115)
    

    According to this StackOverflow thread it seems we are doing something fishy with the API compatibility library. I don't really understand what's going on, but the version we are using might not be suitable for our compileSdkVersion=30 / minSdkVersion=26 / targetSdkVersion=30 combination.

    bug priority-medium 
    opened by aperezdc 4
  • Bootstrap build with fetched binaries seems to fail

    Bootstrap build with fetched binaries seems to fail

    For context, I am on a fresh install of Arch Linux. Just tried to build this again with the newly available binaries, but once it finishes downloading them the script eventually exits with this output:

    NEEDED but not provided:
         libGLESv2.so
    Provided but not NEEDED:
         libicutest_68.so
         libdv.so
         libzbar.so
         libgstbadaudio-1.0.so
         libnice.so
         libdvdnav.so
         libgstbasecamerabinsrc-1.0.so
         libavfilter.so
         libmpg123.so
         libgstcodecs-1.0.so
         libx264_157.so
         libgstallocators-1.0.so
         libtheoraenc.so
         libgstgl-1.0.so
         libopus.so
         libtheora.so
         libwavpack.so
         libsrtp2.so
         libwebrtc_audio_processing.so
         libspandsp.so
         libtag_1.so
         libexslt.so
         libtheoradec.so
         libspeex.so
         libcairo-gobject.so
         libgthread-2.0.so
         libopenh264.so
         libgstsctp-1.0.so
         libgstriff-1.0.so
         libgstplayer-1.0.so
         libcairo-script-interpreter.so
         libicuio_68.so
         libFLAC.so
         librsvg-2.so
         librtmp_1.so
         libvo-aacenc.so
         libmp3lame.so
         libavformat.so
         libgstwebrtc-1.0.so
         libges-1.0.so
         liborc-test-0.4.so
         libgstadaptivedemux-1.0.so
         libdca.so
         libass.so
         libvorbisidec.so
         libgstrtspserver-1.0.so
         libgstphotography-1.0.so
         liba52.so
         libopencore-amrwb.so
         libmms.so
         libsrt_1.so
         libcharset.so
         liboggkate.so
         libgstmpegts-1.0.so
         libgnutls.so
         libsbc.so
         libgstvulkan-1.0.so
         libgstinsertbin-1.0.so
         libopencore-amrnb.so
         libvorbisenc.so
         libSoundTouch.so
         libgsttranscoder-1.0.so
         libgstisoff-1.0.so
         libgraphene-1.0.so
         libturbojpeg.so
         libvorbisfile.so
         libWPEBackend-android.so
    
    opened by msub2 4
  • bootstrap build  failed

    bootstrap build failed

    I try to run command python3 ./scripts/bootstrap.py --build --debug These is an error in cerbero/recipes/gnustl.recipe. It can not find libunwind.a for ndk23 arm64. I try to remove arm64 in gnustl.recipe:58.

    Skip it, I got another error for icu configure. Said that

    -----> Contents of /media/code/wpe/wpe-android/build/cerbero/build/logs/android_arm64/icu-configure.log:
    
    Recipe 'icu' failed at the build step 'configure'
    Command Error: Running ['sh', '-c', '../configure --prefix /media/code/wpe/wpe-android/build/cerbero/build/dist/linux_x86_64 --libdir /media/code/wpe/wpe-android/build/cerbero/build/dist/linux_x86_64/lib --with-pic  --disable-maintainer-mode  --disable-silent-rules  --disable-gtk-doc  --disable-introspection   --enable-shared --enable-static         --disable-renaming --disable-samples --disable-debug         --disable-layout --disable-extras --disable-tests '] returned 77
    

    I test it in x64_ubuntu20.04 with python3.8.

    bug upstream priority-medium 
    opened by kele86838437 3
  • Finish PSON (Process Swap On Navigation) support

    Finish PSON (Process Swap On Navigation) support

    We have the basic infrastructure to support multiple auxiliary processes and web process switch for a single Page instance. However things break badly when new processes from WebKit's process pool are created. We also do not handle the case where Android kills the auxiliary services.

    enhancement priority-medium 
    opened by ferjm 3
  • Add integration to libwpe process management API

    Add integration to libwpe process management API

    There's a PR for libwpe process management API which we can use on Android https://github.com/WebPlatformForEmbedded/libwpe/pull/106

    This PR adds integration to it Fixes #114

    Depends on https://github.com/Igalia/cerbero/pull/25

    opened by zhani 2
  • Add WPEView API for overriding User Agent

    Add WPEView API for overriding User Agent

    opened by zhani 2
  • Running x86 build fails to start

    Running x86 build fails to start

    05/03 09:26:15: Launching 'examples.minibrowser' on Samsung S20 API 29 x86.
    Install successfully finished in 3 s 702 ms.
    $ adb shell am start -n "com.wpe.examples.minibrowser/com.wpe.examples.minibrowser.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
    Connected to process 4992 on device 'Samsung_S20_API_29_x86 [emulator-5554]'.
    Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
    I/les.minibrowse: Late-enabling -Xcheck:jni
    E/les.minibrowse: Unknown bits set in runtime_flags: 0x8000
    W/les.minibrowse: Unexpected CPU variant for X86 using defaults: x86
    D/libEGL: Emulator has host GPU support, qemu.gles is set to 1.
    W/libc: Unable to set property "qemu.gles" to "1": connection failed; errno=13 (Permission denied)
    D/libEGL: loaded /vendor/lib/egl/libEGL_emulation.so
    D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
    D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
    W/RenderThread: type=1400 audit(0.0:10): avc: denied { write } for name="property_service" dev="tmpfs" ino=6911 scontext=u:r:untrusted_app:s0:c116,c256,c512,c768 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0 app=com.wpe.examples.minibrowser
    W/les.minibrowse: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
    W/les.minibrowse: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
    V/WPE Glue: BrowserGlue::setupEnvironment()
    V/WPE Browser: Browser creation
    V/WPE Glue: BrowserGlue.initLooperHelper()
    V/WPE Glue: LooperThread::initialize() ALooper 0xd6f67540
    D/WPE Browser: Load URL https://igalia.com
    I/WPE Browser: In UIProcess thread
    V/WPE Browser: No available page. Queueing https://igalia.com for load
    V/WPE Glue: BrowserGlue.init()
    V/WPE Glue: Browser::init
    V/WPE Glue: ui_process_thread_entry -- entered, g_main_context_default() 0xea221820
    V/WPE Glue: ui_process_thread_entry -- running via GMainLoop 0xdf0eb638 for GMainContext 0xdf0eb618
    V/WPE Browser: Visibility changed for com.wpe.wpeview.WPEView{5ba111 VFE...... ......I. 0,0-0,0 #7f0801ae app:id/wpe_view} to 0
    D/HostConnection: HostConnection::get() New Host Connection established 0xd6f4c190, tid 5028
    D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_1 
    W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
    D/EGL_emulation: eglCreateContext: 0xd6f1a360: maj 3 min 1 rcv 4
    D/EGL_emulation: eglMakeCurrent: 0xd6f1a360: ver 3 1 (tinfo 0xd6f0f850)
    E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
    E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
    W/Gralloc3: mapper 3.x is not supported
    D/HostConnection: createUnique: call
    D/HostConnection: HostConnection::get() New Host Connection established 0xd6f4c320, tid 5028
    D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_sync_buffer_data GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_1 
    D/eglCodecCommon: allocate: Ask for block of size 0x1000
    D/eglCodecCommon: allocate: ioctl allocate returned offset 0x3fee5c000 size 0x2000
    D/EGL_emulation: eglMakeCurrent: 0xd6f1a360: ver 3 1 (tinfo 0xd6f0f850)
    D/WPE Browser: Create new Page instance for view com.wpe.wpeview.WPEView{5ba111 VFE...... ........ 0,0-1440,2688 #7f0801ae app:id/wpe_view}
    V/WPE page0: Page construction [email protected]
    D/WPE gfx.View0: View: holder [email protected]
    V/WPEView: View created com.wpe.wpe.gfx.View{89af8dc V.E...... ......I. 0,0-0,0} number of views 0
    D/WPE page0: onViewReady
    V/WPEView: View ready 0
    V/WPE Glue: BrowserGlue.newWebView tid 4992
    V/WPE Glue: Browser::newPage
    V/WPE Glue: RendererFallback: clnt exts EGL_EXT_client_extensions EGL_KHR_platform_android EGL_ANGLE_platform_angle EGL_ANDROID_GLES_layers
    V/WPE Glue: RendererFallback: disp exts EGL_KHR_get_all_proc_addresses EGL_ANDROID_presentation_time EGL_KHR_swap_buffers_with_damage EGL_ANDROID_get_native_client_buffer EGL_ANDROID_front_buffer_auto_refresh EGL_ANDROID_get_frame_timestamps EGL_EXT_surface_SMPTE2086_metadata EGL_EXT_surface_CTA861_3_metadata EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_fence_sync EGL_KHR_create_context EGL_ANDROID_image_native_buffer EGL_KHR_wait_sync EGL_ANDROID_recordable 
    V/WPE Glue: RendererFallback: 0xdf08e380 m_update.fd 57
    V/WPE Glue: Initializing Page
    V/WPE page0: WebKitWebView ready false
    D/WPE Browser: Load URL https://igalia.com
    D/WPE page0: Queue URL load https://igalia.com
    V/WPE page0: WebKitWebView ready true
    D/wpe-android: ** (process:4992): WARNING **: 09:26:19.927: Could not open /sys/class/dmi/id/chassis_type: Failed to open file “/sys/class/
    D/wpe-android: dmi/id/chassis_type”: Permission denied
    D/wpe-android: ** (process:4992): WARNING **: 09:26:19.928: Could not open /sys/firmware/acpi/pm_profile: Failed to open file “/sys/firmwar
    D/wpe-android: e/acpi/pm_profile”: Permission denied
    E/les.minibrowse: JNI ERROR (app bug): accessed stale Global 0xb71e04d2  (index 192012365 in a table of size 623)
    A/les.minibrowse: java_vm_ext.cc:570] JNI DETECTED ERROR IN APPLICATION: use of deleted global reference 0xb71e04d2
    A/les.minibrowse: java_vm_ext.cc:570]     from void com.wpe.wpe.BrowserGlue.init(com.wpe.wpe.BrowserGlue)
    D/wpe-android: ProcessLauncher::launchProcess() processType 1 pid 7
          jClass for com/wpe/wpe/BrowserGlue 0x15
          jMethodID for launchProcess 0x
    D/wpe-android: d16b6508
    W/Thread-3: type=1400 audit(0.0:11): avc: denied { read } for name="chassis_type" dev="sysfs" ino=291 scontext=u:r:untrusted_app:s0:c116,c256,c512,c768 tcontext=u:object_r:sysfs:s0 tclass=file permissive=0 app=com.wpe.examples.minibrowser
    A/les.minibrowse: runtime.cc:630] Runtime aborting...
    A/les.minibrowse: runtime.cc:630] Dumping all threads without mutator lock held
    A/les.minibrowse: runtime.cc:630] All threads:
    A/les.minibrowse: runtime.cc:630] DALVIK THREADS (21):
    A/les.minibrowse: runtime.cc:630] "Thread-3" prio=5 tid=21 Runnable
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=0 dsCount=0 flags=0 obj=0x15b3c888 self=0xd3b23800
    A/les.minibrowse: runtime.cc:630]   | sysTid=5034 nice=0 cgrp=default sched=0/0 handle=0xb6c5b230
    A/les.minibrowse: runtime.cc:630]   | state=R schedstat=( 12936623 1067561 18 ) utm=1 stm=0 core=3 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xb6b58000-0xb6b5a000 stackSize=1040KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes= "abort lock" "mutator lock"(shared held)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00493b83  /apex/com.android.runtime/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+115)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 005b2012  /apex/com.android.runtime/lib/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+994)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 005acea1  /apex/com.android.runtime/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+65)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 005d2d11  /apex/com.android.runtime/lib/libart.so (art::DumpCheckpoint::Run(art::Thread*)+929)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 005cac46  /apex/com.android.runtime/lib/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+486)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 005c9eac  /apex/com.android.runtime/lib/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+2268)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 00579730  /apex/com.android.runtime/lib/libart.so (art::AbortState::DumpAllThreads(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, art::Thread*) const+448)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 00564d70  /apex/com.android.runtime/lib/libart.so (art::Runtime::Abort(char const*)+1536)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000249b3  /apex/com.android.runtime/lib/libartbase.so (_ZNSt3__110__function6__funcIPFvPKcENS_9allocatorIS5_EES4_EclEOS3_+35)
    A/les.minibrowse: runtime.cc:630]   native: #09 pc 0000bac7  /system/lib/libbase.so (android::base::LogMessage::~LogMessage()+727)
    A/les.minibrowse: runtime.cc:630]   native: #10 pc 003e53dd  /apex/com.android.runtime/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1725)
    A/les.minibrowse: runtime.cc:630]   native: #11 pc 003e5698  /apex/com.android.runtime/lib/libart.so (art::JavaVMExt::JniAbortF(char const*, char const*, ...)+120)
    A/les.minibrowse: runtime.cc:630]   native: #12 pc 005b8f94  /apex/com.android.runtime/lib/libart.so (art::Thread::DecodeJObject(_jobject*) const+836)
    A/les.minibrowse: runtime.cc:630]   native: #13 pc 003d605d  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::ScopedCheck::CheckInstance(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck::InstanceKind, _jobject*, bool)+157)
    A/les.minibrowse: runtime.cc:630]   native: #14 pc 003d5288  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+456)
    A/les.minibrowse: runtime.cc:630]   native: #15 pc 003d5378  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::ScopedCheck::CheckPossibleHeapValue(art::ScopedObjectAccess&, char, art::(anonymous namespace)::JniValueType)+696)
    A/les.minibrowse: runtime.cc:630]   native: #16 pc 003d4769  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::(anonymous namespace)::JniValueType*)+745)
    A/les.minibrowse: runtime.cc:630]   native: #17 pc 003d9a28  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::CheckJNI::CheckCallArgs(art::ScopedObjectAccess&, art::(anonymous namespace)::ScopedCheck&, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, art::InvokeType, art::(anonymous namespace)::VarArgs const*)+200)
    A/les.minibrowse: runtime.cc:630]   native: #18 pc 003d8c8b  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::CheckJNI::CallMethodV(char const*, _JNIEnv*, _jobject*, _jclass*, _jmethodID*, char*, art::Primitive::Type, art::InvokeType)+939)
    A/les.minibrowse: runtime.cc:630]   native: #19 pc 003c5439  /apex/com.android.runtime/lib/libart.so (art::(anonymous namespace)::CheckJNI::CallVoidMethodV(_JNIEnv*, _jobject*, _jmethodID*, char*)+73)
    A/les.minibrowse: runtime.cc:630]   native: #20 pc 0123945c  /data/app/com.wpe.examples.minibrowser-HC_uKIvqlkaK-YxLWOOtLg==/lib/x86/libWPEWebKit-1.0_3.so (???)
    A/les.minibrowse: runtime.cc:630]   native: #21 pc 0021c484  /data/app/com.wpe.examples.minibrowser-HC_uKIvqlkaK-YxLWOOtLg==/lib/x86/libWPEWebKit-1.0_3.so (???)
    A/les.minibrowse: runtime.cc:630]   at com.wpe.wpe.BrowserGlue.init(Native method)
    A/les.minibrowse: runtime.cc:630]   at com.wpe.wpe.Browser$UIProcessThread$1.run(Browser.java:269)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "main" prio=5 tid=1 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x7189d1f0 self=0xea237800
    A/les.minibrowse: runtime.cc:630]   | sysTid=4992 nice=-10 cgrp=default sched=0/0 handle=0xea8d4dc8
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 638850301 78904155 396 ) utm=57 stm=6 core=2 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xff2a0000-0xff2a2000 stackSize=8192KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/4992/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0066dde5  /apex/com.android.runtime/lib/libart.so (_ZN3artL12GoToRunnableEPNS_6ThreadE.llvm.18010120601690045221+549)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 0066db81  /apex/com.android.runtime/lib/libart.so (art::JniMethodEnd(unsigned int, art::Thread*)+33)
    A/les.minibrowse: runtime.cc:630]   at android.graphics.HardwareRenderer.nSyncAndDrawFrame(Native method)
    A/les.minibrowse: runtime.cc:630]   at android.graphics.HardwareRenderer.syncAndDrawFrame(HardwareRenderer.java:422)
    A/les.minibrowse: runtime.cc:630]   at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:670)
    A/les.minibrowse: runtime.cc:630]   at android.view.ViewRootImpl.draw(ViewRootImpl.java:3610)
    A/les.minibrowse: runtime.cc:630]   at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3418)
    A/les.minibrowse: runtime.cc:630]   at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2755)
    A/les.minibrowse: runtime.cc:630]   at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
    A/les.minibrowse: runtime.cc:630]   at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
    A/les.minibrowse: runtime.cc:630]   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
    A/les.minibrowse: runtime.cc:630]   at android.view.Choreographer.doCallbacks(Choreographer.java:790)
    A/les.minibrowse: runtime.cc:630]   at android.view.Choreographer.doFrame(Choreographer.java:725)
    A/les.minibrowse: runtime.cc:630]   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
    A/les.minibrowse: runtime.cc:630]   at android.os.Handler.handleCallback(Handler.java:883)
    A/les.minibrowse: runtime.cc:630]   at android.os.Handler.dispatchMessage(Handler.java:100)
    A/les.minibrowse: runtime.cc:630]   at android.os.Looper.loop(Looper.java:214)
    A/les.minibrowse: runtime.cc:630]   at android.app.ActivityThread.main(ActivityThread.java:7356)
    A/les.minibrowse: runtime.cc:630]   at java.lang.reflect.Method.invoke(Native method)
    A/les.minibrowse: runtime.cc:630]   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    A/les.minibrowse: runtime.cc:630]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Runtime worker thread 0" prio=5 tid=2 Native (still starting up)
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xd6f00000
    A/les.minibrowse: runtime.cc:630]   | sysTid=4999 nice=0 cgrp=default sched=0/0 handle=0xea427d90
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 430869 0 6 ) utm=0 stm=0 core=2 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xea419000-0xea41b000 stackSize=63KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/4999/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 005d4b55  /apex/com.android.runtime/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+261)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 005d3c83  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Run()+83)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 005d374f  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+239)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Runtime worker thread 1" prio=5 tid=3 Native (still starting up)
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xea234e00
    A/les.minibrowse: runtime.cc:630]   | sysTid=5000 nice=0 cgrp=default sched=0/0 handle=0xe8484d90
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 323677 0 6 ) utm=0 stm=0 core=1 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xe8476000-0xe8478000 stackSize=63KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5000/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 005d4b55  /apex/com.android.runtime/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+261)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 005d3c83  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Run()+83)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 005d374f  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+239)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Jit thread pool worker thread 0" prio=5 tid=4 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x157c0030 self=0xd6f08c00
    A/les.minibrowse: runtime.cc:630]   | sysTid=4998 nice=0 cgrp=default sched=0/0 handle=0xd6e04d90
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 2487621 1130651 17 ) utm=0 stm=0 core=3 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xd6d06000-0xd6d08000 stackSize=1023KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/4998/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 005d4b55  /apex/com.android.runtime/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+261)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 005d3cb5  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Run()+133)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 005d374f  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+239)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Runtime worker thread 2" prio=5 tid=5 Native (still starting up)
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xdf0d0c00
    A/les.minibrowse: runtime.cc:630]   | sysTid=5001 nice=0 cgrp=default sched=0/0 handle=0xdcf7fd90
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 146130 789704 5 ) utm=0 stm=0 core=3 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xdcf71000-0xdcf73000 stackSize=63KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5001/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 005d4b55  /apex/com.android.runtime/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+261)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 005d3c83  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Run()+83)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 005d374f  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+239)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Signal Catcher" prio=5 tid=6 WaitingInMainSignalCatcherLoop
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x15800020 self=0xd6f20800
    A/les.minibrowse: runtime.cc:630]   | sysTid=5003 nice=0 cgrp=default sched=0/0 handle=0xd6d00230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 2987254 1765810 4 ) utm=0 stm=0 core=3 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xd6c05000-0xd6c07000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5003/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef9  [vdso] (__kernel_vsyscall+9)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00101671  /apex/com.android.runtime/lib/bionic/libc.so (__rt_sigtimedwait+33)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 000bb549  /apex/com.android.runtime/lib/bionic/libc.so (sigwait+73)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 0058bb99  /apex/com.android.runtime/lib/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&)+265)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0058a78f  /apex/com.android.runtime/lib/libart.so (art::SignalCatcher::Run(void*)+479)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Runtime worker thread 3" prio=5 tid=7 Native (still starting up)
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x0 self=0xd3a8e800
    A/les.minibrowse: runtime.cc:630]   | sysTid=5002 nice=0 cgrp=default sched=0/0 handle=0xdcd08d90
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 480649 87159 11 ) utm=0 stm=0 core=1 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xdccfa000-0xdccfc000 stackSize=63KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5002/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 005d4b55  /apex/com.android.runtime/lib/libart.so (art::ThreadPool::GetTask(art::Thread*)+261)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 005d3c83  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Run()+83)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 005d374f  /apex/com.android.runtime/lib/libart.so (art::ThreadPoolWorker::Callback(void*)+239)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "HeapTaskDaemon" prio=5 tid=8 WaitingForTaskProcessor
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x148a6610 self=0xea239400
    A/les.minibrowse: runtime.cc:630]   | sysTid=5005 nice=4 cgrp=default sched=0/0 handle=0xc0bce230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 493430 724275 3 ) utm=0 stm=0 core=1 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc0acb000-0xc0acd000 stackSize=1040KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5005/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef9  [vdso] (__kernel_vsyscall+9)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150c88  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::TimedWait(art::Thread*, long long, int)+152)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 002ce203  /apex/com.android.runtime/lib/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+339)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 002cec34  /apex/com.android.runtime/lib/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+84)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 004a3a45  /apex/com.android.runtime/lib/libart.so (art::VMRuntime_runHeapTasks(_JNIEnv*, _jobject*)+53)
    A/les.minibrowse: runtime.cc:630]   at dalvik.system.VMRuntime.runHeapTasks(Native method)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$HeapTaskDaemon.runInternal(Daemons.java:523)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "ReferenceQueueDaemon" prio=5 tid=9 Waiting
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x148a66a0 self=0xd3a97400
    A/les.minibrowse: runtime.cc:630]   | sysTid=5006 nice=4 cgrp=default sched=0/0 handle=0xc0ac5230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 184018 3539257 9 ) utm=0 stm=0 core=3 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc09c2000-0xc09c4000 stackSize=1040KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5006/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0048e4a6  /apex/com.android.runtime/lib/libart.so (art::Monitor::Wait(art::Thread*, long long, int, bool, art::ThreadState)+646)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 004903b4  /apex/com.android.runtime/lib/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long long, int, bool, art::ThreadState)+292)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 004b0ff1  /apex/com.android.runtime/lib/libart.so (art::Object_waitJI(_JNIEnv*, _jobject*, long long, int)+97)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Native method)
    A/les.minibrowse: runtime.cc:630]   - waiting on <0x07f72de5> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Object.java:442)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Object.java:568)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:215)
    A/les.minibrowse: runtime.cc:630]   - locked <0x07f72de5> (a java.lang.Class<java.lang.ref.ReferenceQueue>)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "FinalizerWatchdogDaemon" prio=5 tid=10 Waiting
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x148a67c0 self=0xd3a99000
    A/les.minibrowse: runtime.cc:630]   | sysTid=5008 nice=4 cgrp=default sched=0/0 handle=0xc08b3230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 407610 0 6 ) utm=0 stm=0 core=1 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc07b0000-0xc07b2000 stackSize=1040KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5008/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0048e4a6  /apex/com.android.runtime/lib/libart.so (art::Monitor::Wait(art::Thread*, long long, int, bool, art::ThreadState)+646)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 004903b4  /apex/com.android.runtime/lib/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long long, int, bool, art::ThreadState)+292)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 004b0ff1  /apex/com.android.runtime/lib/libart.so (art::Object_waitJI(_JNIEnv*, _jobject*, long long, int)+97)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Native method)
    A/les.minibrowse: runtime.cc:630]   - waiting on <0x085880ba> (a java.lang.Daemons$FinalizerWatchdogDaemon)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Object.java:442)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Object.java:568)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:339)
    A/les.minibrowse: runtime.cc:630]   - locked <0x085880ba> (a java.lang.Daemons$FinalizerWatchdogDaemon)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:319)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Binder:4992_1" prio=5 tid=11 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x15840020 self=0xd3a9ba00
    A/les.minibrowse: runtime.cc:630]   | sysTid=5009 nice=0 cgrp=default sched=0/0 handle=0xc06ac230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 3951136 7030222 10 ) utm=0 stm=0 core=1 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc05b1000-0xc05b3000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5009/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 001012ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+28)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 000b65bc  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+60)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 000545f7  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+391)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0005481a  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+42)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 00055218  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+72)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 00082019  /system/lib/libbinder.so (android::PoolThread::threadLoop()+41)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 00014166  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+342)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000b660b  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+171)
    A/les.minibrowse: runtime.cc:630]   native: #09 pc 00013aa6  /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246)
    A/les.minibrowse: runtime.cc:630]   native: #10 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #11 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "ADB-JDWP Connection Control Thread" prio=5 tid=12 WaitingInMainDebuggerLoop
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x148a6580 self=0xd6f29400
    A/les.minibrowse: runtime.cc:630]   | sysTid=5004 nice=0 cgrp=default sched=0/0 handle=0xd6bff230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 1378076 16225469 8 ) utm=0 stm=0 core=0 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xd6b04000-0xd6b06000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5004/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef9  [vdso] (__kernel_vsyscall+9)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 001013d6  /apex/com.android.runtime/lib/bionic/libc.so (__ppoll+38)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 000b89ea  /apex/com.android.runtime/lib/bionic/libc.so (poll+90)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 000d786f  /apex/com.android.runtime/lib/bionic/libc.so (__poll_chk+47)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0000835b  /apex/com.android.runtime/lib/libadbconnection.so (adbconnection::AdbConnectionState::RunPollLoop(art::Thread*)+1131)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 000063b0  /apex/com.android.runtime/lib/libadbconnection.so (adbconnection::CallbackFunction(void*)+1152)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "FinalizerDaemon" prio=5 tid=13 Waiting
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x148a6730 self=0xd3a98200
    A/les.minibrowse: runtime.cc:630]   | sysTid=5007 nice=4 cgrp=default sched=0/0 handle=0xc09bc230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 225754 4557297 5 ) utm=0 stm=0 core=0 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc08b9000-0xc08bb000 stackSize=1040KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5007/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 00092328  /apex/com.android.runtime/lib/bionic/libc.so (syscall+40)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 00150802  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+114)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 00150783  /apex/com.android.runtime/lib/libart.so (art::ConditionVariable::Wait(art::Thread*)+35)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0048e4a6  /apex/com.android.runtime/lib/libart.so (art::Monitor::Wait(art::Thread*, long long, int, bool, art::ThreadState)+646)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 004903b4  /apex/com.android.runtime/lib/libart.so (art::Monitor::Wait(art::Thread*, art::ObjPtr<art::mirror::Object>, long long, int, bool, art::ThreadState)+292)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 004b0ff1  /apex/com.android.runtime/lib/libart.so (art::Object_waitJI(_JNIEnv*, _jobject*, long long, int)+97)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Native method)
    A/les.minibrowse: runtime.cc:630]   - waiting on <0x0ec3ab6b> (a java.lang.Object)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Object.wait(Object.java:442)
    A/les.minibrowse: runtime.cc:630]   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
    A/les.minibrowse: runtime.cc:630]   - locked <0x0ec3ab6b> (a java.lang.Object)
    A/les.minibrowse: runtime.cc:630]   at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:271)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Daemons$Daemon.run(Daemons.java:137)
    A/les.minibrowse: runtime.cc:630]   at java.lang.Thread.run(Thread.java:919)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Binder:4992_2" prio=5 tid=14 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x15880020 self=0xd6f32000
    A/les.minibrowse: runtime.cc:630]   | sysTid=5010 nice=0 cgrp=default sched=0/0 handle=0xc05ab230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 8371750 13815285 14 ) utm=0 stm=0 core=0 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc04b0000-0xc04b2000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5010/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 001012ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+28)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 000b65bc  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+60)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 000545f7  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+391)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0005481a  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+42)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 00055218  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+72)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 00082019  /system/lib/libbinder.so (android::PoolThread::threadLoop()+41)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 00014166  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+342)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000b660b  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+171)
    A/les.minibrowse: runtime.cc:630]   native: #09 pc 00013aa6  /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246)
    A/les.minibrowse: runtime.cc:630]   native: #10 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #11 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Binder:4992_3" prio=5 tid=15 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x158c0020 self=0xd3ab6600
    A/les.minibrowse: runtime.cc:630]   | sysTid=5011 nice=0 cgrp=default sched=0/0 handle=0xc04aa230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 487847 1525365 4 ) utm=0 stm=0 core=0 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc03af000-0xc03b1000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5011/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 001012ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+28)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 000b65bc  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+60)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 000545f7  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+391)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0005481a  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+42)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 00055218  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+72)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 00082019  /system/lib/libbinder.so (android::PoolThread::threadLoop()+41)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 00014166  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+342)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000b660b  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+171)
    A/les.minibrowse: runtime.cc:630]   native: #09 pc 00013aa6  /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246)
    A/les.minibrowse: runtime.cc:630]   native: #10 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #11 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Binder:4992_4" prio=5 tid=16 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x15900020 self=0xd6f3ac00
    A/les.minibrowse: runtime.cc:630]   | sysTid=5012 nice=0 cgrp=default sched=0/0 handle=0xc03a9230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 235898 7603 1 ) utm=0 stm=0 core=0 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xc02ae000-0xc02b0000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5012/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef7  [vdso] (__kernel_vsyscall+7)
    A/les.minibrowse: runtime.cc:630]   native: #01 pc 001012ac  /apex/com.android.runtime/lib/bionic/libc.so (__ioctl+28)
    A/les.minibrowse: runtime.cc:630]   native: #02 pc 000b65bc  /apex/com.android.runtime/lib/bionic/libc.so (ioctl+60)
    A/les.minibrowse: runtime.cc:630]   native: #03 pc 000545f7  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+391)
    A/les.minibrowse: runtime.cc:630]   native: #04 pc 0005481a  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+42)
    A/les.minibrowse: runtime.cc:630]   native: #05 pc 00055218  /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+72)
    A/les.minibrowse: runtime.cc:630]   native: #06 pc 00082019  /system/lib/libbinder.so (android::PoolThread::threadLoop()+41)
    A/les.minibrowse: runtime.cc:630]   native: #07 pc 00014166  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+342)
    A/les.minibrowse: runtime.cc:630]   native: #08 pc 000b660b  /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+171)
    A/les.minibrowse: runtime.cc:630]   native: #09 pc 00013aa6  /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246)
    A/les.minibrowse: runtime.cc:630]   native: #10 pc 0011a8e5  /apex/com.android.runtime/lib/bionic/libc.so (__pthread_start(void*)+53)
    A/les.minibrowse: runtime.cc:630]   native: #11 pc 000af6a7  /apex/com.android.runtime/lib/bionic/libc.so (__start_thread+71)
    A/les.minibrowse: runtime.cc:630]   (no managed stack frames)
    A/les.minibrowse: runtime.cc:630] 
    A/les.minibrowse: runtime.cc:630] "Profile Saver" prio=5 tid=17 Native
    A/les.minibrowse: runtime.cc:630]   | group="" sCount=1 dsCount=0 flags=1 obj=0x15980020 self=0xd3acb200
    A/les.minibrowse: runtime.cc:630]   | sysTid=5025 nice=9 cgrp=default sched=0/0 handle=0xbf38a230
    A/les.minibrowse: runtime.cc:630]   | state=S schedstat=( 208651 126001 2 ) utm=0 stm=0 core=3 HZ=100
    A/les.minibrowse: runtime.cc:630]   | stack=0xbf28f000-0xbf291000 stackSize=1008KB
    A/les.minibrowse: runtime.cc:630]   | held mutexes=
    A/les.minibrowse: runtime.cc:630]   kernel: (couldn't read /proc/self/task/5025/stack)
    A/les.minibrowse: runtime.cc:630]   native: #00 pc 00000ef9  [vdso] (__kernel_vsyscall+9)
        
        --------- beginning of crash
    A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 5034 (Thread-3), pid 4992 (les.minibrowser)
    D/WPE gfx.View0: HolderCallback::surfaceCreated()
    D/WPE gfx.View0: HolderCallback::surfaceChanged() format 4 (1440,2688)
    D/WPE gfx.View0: HolderCallback::surfaceRedrawNeeded()
    
    bug priority-high 
    opened by zhani 2
  • Injected bundle fails to load

    Injected bundle fails to load

    I see the following warning in the logcat.

    wpe-android: ** (WPEWebProcess:18307): WARNING **: 10:39:06.511: Error loading the injected bundle (/home/ferjm/dev/igalia/wpe-android/buil 03-01 10:39:06.511 18307 18358 D wpe-android: d/build/dist/android_arm64/lib/wpe-webkit-1.0/injected-bundle/libWPEInjectedBundle.so): dlopen failed: library "/home/ferjm/dev 03-01 10:39:06.511 18307 18358 D wpe-android: /igalia/wpe-android/build/build/dist/android_arm64/lib/wpe-webkit-1.0/injected-bundle/libWPEInjectedBundle.so" not found

    This can be easily fixed by allowing WPEAndroid to set the WEBKIT_INJECTED_BUNDLE_PATH env var, which is currently only available in developer mode. https://webkit-search.igalia.com/webkit/rev/337572eabdef05c71633fa5f879faf9d9e7b4cf2/Source/WebKit/UIProcess/API/glib/WebKitWebContext.cpp#310

    bug 
    opened by ferjm 2
  • Compositing/rendering is unstable

    Compositing/rendering is unstable

    The rendering is flickering and some layers of the HTML page may disappear from time to time.

    The most visible example is with the mediaplayer demo, when playing a video fullscreen the visual is unstable and flickers, we can see some horizontal black lines and also the whole image disappearing and reappearing rapidly and randomly.

    On carousel mode, some of the iframes may disappear (in particular when starting playing), they rarely reappear.

    bug priority-high webkit 
    opened by neodesys 2
  • The browser is too large to download.

    The browser is too large to download.

    The browser is so big that I can't download it. I wish you could package the software in separate installers for different processor architectures instead of packaging them together into one installer.

    enhancement priority-low 
    opened by Rosabis 3
  • Link all GStreamer plugins statically like in GStreamer Android tutorials.

    Link all GStreamer plugins statically like in GStreamer Android tutorials.

    Prevent the duplication at runtime of all GStreamer plugins in the application cache. Ideally, all plugins should be linked statically to a gstreamer_android.so unique library as showned in GStreamer Android tutorials.

    enhancement priority-low 
    opened by neodesys 0
  • Bootstrap Issues

    Bootstrap Issues

    Ran into the following issue on a fresh clone and trying to follow the bootstrap instructions on macOS 12.6 on an M1 Macbook Pro with Python 3.10.7

    ./tools/scripts/bootstrap.py results in FileNotFoundError: [Errno 2] No such file or directory: 'readelf'

    Ok, so then I tried to install readelf via the binutils package which contains that command. (brew install binutils)

    Tried the command again, and got this:

    ➜  wpe-android git:(main) ./tools/scripts/bootstrap.py                          
    Namespace(arch='arm64', version='2.34.6', cerbero=None, build=False, debug=False, wrapper=False)
    Downloading packages...
      https://wpewebkit.org/android/bootstrap/2.34.6/wpewebkit-android-arm64-2.34.6.tar.xz - done
      https://wpewebkit.org/android/bootstrap/2.34.6/wpewebkit-android-arm64-2.34.6-runtime.tar.xz - done
    Extracting dependencies packages...
    Installing dependencies into wpe-android project...
    NEEDED but not provided:
         libOpenSLES.so
         libGLESv2.so
    Provided but not NEEDED:
         libgstvulkan-1.0.so
         libgstplayer-1.0.so
         libvorbisfile.so
         libgstvalidate-1.0.so
         libgstinsertbin-1.0.so
         libdvdnav.so
         libexslt.so
         libWPEInjectedBundle.so
         libcharset.so
         libgstcodecs-1.0.so
         libcairo-script-interpreter.so
         libstdc++.so
         libgthread-2.0.so
         libtheora.so
         libsrt_1_4.so
         libgsttranscoder-1.0.so
         liborc-test-0.4.so
         libWPEBackend-android.so
         libicuio_68.so
         liboggkate.so
         libgstallocators-1.0.so
         libturbojpeg.so
    

    Are there some extra dependencies I need to install first?

    opened by vanshg 0
  • WPEView in Fragment crashes after navigating to other Fragment

    WPEView in Fragment crashes after navigating to other Fragment

    Crash happens when WPEView is used in fragment and navigation from WPEView fragment to some other fragment happens.

    Root cause is in RendererASurfaceTransaction. Transaction completed callback is posted to ui thread and meanwhile underlying page has been destroyed because fragment is gone

    bug priority-high 
    opened by zhani 0
Owner
Igalia
Open Source Consultancy
Igalia
Ultra-lightweight web browser based on Qt Ultralight webview, powered by Ultralight HTML renderer

Qt Ultralight Browser This is an ultra-lightweight web browser powered by the Ultralight web engine embedded in Qt 5 app as a custom webview widget -

niu tech 43 Jan 7, 2023
A webserver hosting a bank system for Minecraft, able to be used from web browser or from CC/OC if you're playing modded.

CCash A webserver hosting a bank system for Minecraft, able to be used from web browser or from CC/OC if you're playing modded. Description the curren

William Katz 23 Aug 7, 2022
A fork of Endless Sky for playing in a browser: try it at https://play-endless-sky.com/

Endless Web A fork of Endless Sky to make the game playable in a browser. Play at https://play-endless-web.com File issues for anything to do with the

Thomas Ballinger 16 Oct 19, 2022
A simple web browser written for learning purposes in C++

AWB: Abbix's web browser pls send help AWB is a simple web browser written for learning purposes in C++, it features a custom engine named orca render

null 9 Jul 8, 2021
Abaco: lame web browser for Plan 9

Abaco: lame web browser for Plan 9, eternally a work in progress.

Fazlul Shahriar 7 Mar 7, 2022
DOS Web browser for 8088 class machines

MicroWeb MicroWeb is a web browser for DOS! It is a 16-bit real mode application, designed to run on minimal hardware. Minimum requirements To run you

null 249 Dec 26, 2022
The offical repository of the nextbird browser (for the 13th Generation)

The Nextbird Browser Introduction for Nextbird Was ist Nextbird? Nextbird is ein open source Browser der sich zum Ziel gesetzt hat denn Firefox Browse

The Nextbird Project 1 Nov 9, 2021
QML web browser

Canonic | QML Web Browser Canonic is an experimental QML web browser developed in the Qt framework and licensed under GPL3. A live WebAssembly version

Canonic 87 Jan 3, 2023
Gurf: A Gerbil/Gambit Scheme Surf Web Browser

Gurf, a (G)erbil/Gambit Scheme S(urf) Browser I want a browser with a REPL that I can hack in Meta-Scheme. It has to be useful. It has to be hackable.

Drew Crampsie 7 Aug 24, 2022
Android and iOS SDK to display maps and geodata of swisstopo. Owner: simonroesch, Deputy: gjn

Open Swiss Maps SDK Android and iOS SDK to display maps and geodata of swisstopo Free map layers and geo data by swisstopo in your app Offer your mobi

geo.admin.ch 22 Jan 4, 2023
Dolphin is an emulator for running GameCube and Wii games on Windows, Linux, macOS, and recent Android devices.

Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.

Dolphin Emulator 9.4k Dec 31, 2022
Android-Login-Offline Simple login form in Java by Mahmoud Gaming

Android-Login-Offline Simple login form in Java by Mahmoud Gaming. I wanted to upload this project long time ago. This project is for experienced modd

Mahmoud Gaming 7 Mar 29, 2022
A VPN client for Android based on OpenVPN made with Jetpack Compose.

Gear VPN - Free, Secure & Open sourced VPN Tech Stack Jetpack Compose - Google's new UI toolkit for developing native Android apps. Navigator-Compose

Kaustubh Patange 86 Dec 23, 2022
Dolphin |MMJR| is a Gamecube/Wii Emulator for Android devices; based on Dolphin MMJ source code which is aimed at pure performance.

Dolphin |MMJR| An Android-only performance-focused Dolphin (Official) fork, continued from the Dolphin MMJ source code by Weihuoya. This version is me

null 291 Dec 28, 2022
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Facebook Archive 3.1k Dec 30, 2022
ZeroMQ core engine in C++, implements ZMTP/3.1

ZeroMQ Welcome The ZeroMQ lightweight messaging kernel is a library which extends the standard socket interfaces with features traditionally provided

The ZeroMQ project 8.2k Jan 8, 2023
RakNet is a cross platform, open source, C++ networking engine for game programmers.

RakNet 4.081 Copyright (c) 2014, Oculus VR, Inc. Package notes The Help directory contains index.html, which is full help documentation in HTML format

Facebook Archive 3.1k Dec 30, 2022
C++ Parallel Computing and Asynchronous Networking Engine

As Sogou`s C++ server engine, Sogou C++ Workflow supports almost all back-end C++ online services of Sogou, including all search services, cloud input method,online advertisements, etc., handling more than 10 billion requests every day

Sogou Open Source 9.7k Jan 5, 2023
macOS 12.0 Monterey SDK for Mach engine

macOS 12.0 Monterey SDK for Mach Engine This repository contains native system binary files required to build Mach Engine for macOS, from any host OS.

Hexops 5 Sep 8, 2022