geckoview implementation for capacitor powered by fmode

ryanemax f45454da2a fix: disable capacitor plugin & support arm32 1 Minggu lalu
5.7.0 50998ddaec init: capacitor/android 5.7.0 2 minggu lalu
6.2.1 f45454da2a fix: disable capacitor plugin & support arm32 1 Minggu lalu
.gitignore e6f2c0cc4d upgrade: 6.2.1 with geckoview 2 minggu lalu
README.md f45454da2a fix: disable capacitor plugin & support arm32 1 Minggu lalu
package.json 50998ddaec init: capacitor/android 5.7.0 2 minggu lalu

README.md

Capacitor Geckoview浏览器支持插件

迁移重点

  • Geckoview 不支持直接evalJS()运行JS代码
    • 需要通过消息气泡重新实现
      • src/main/java/com/getcapacitor/WebExtensionPortProxy.java
      • src/main/java/com/getcapacitor/MessageHandler.java
  • 开发调试

    # 从编译开始,直接修改node_modules/@capacitor/android代码 通过gradlew完成编译测试
    
    # 测试打包
    ./gradlew assembleDebug
    
    # 携带证书打包
    ./gradlew assembleRelease
    zipalign -v 4 app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/com.fmode.stv.caipu-zip.apk
    apksigner sign --ks ../com.fmode.stv.caipu.keystore --ks-pass pass:caipu666 --ks-key-alias caipu --in app/build/outputs/apk/release/com.fmode.stv.caipu-zip.apk --out app/build/outputs/apk/release/com.fmode.stv.caipu-release.apk
    

    兼容测试

    依赖引用

    • 注意!请进入maven2仓库查询版本号,填写存在版本

      // https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-arm64-v8a/
      api "org.mozilla.geckoview:geckoview-arm64-v8a:123.0.20240213221259"
      // https://maven.mozilla.org/maven2/org/mozilla/geckoview/geckoview-armeabi-v7a/
      api "org.mozilla.geckoview:geckoview-armeabi-v7a:123.0.20240304104836"
      

    变更记录

    TODOLIST ISSUE

    ISSUE 1

    • 6.2.1/capacitor/src/main/java/com/getcapacitor/JSInjector.java
      • 暂时屏蔽了capacitor js插入
      • 此处执行js正常,但是由于后续.eval错误导致程序报错,不停重启
      • getScriptString()函数
        • 注释的嵌入代码部分,让js识别为android环境,但是后续.eval执行无效导致报错
        • 需要修复WebExtensionPortProxy.eval时同时开启

    ISSUE 2

    • 安卓TV,安装apk,启动过了splash直接停止,无法运行
      • 查看日志:无任何日志
      • 已经测试:
        • 是否程序错误安卓不能运行?否,可以运行
          • 安卓手机安装正常运行
        • 是否不兼容geckoview?否,是支持的
          • 安卓电视,安装LightningBrowser正常加载geckoview访问angular网页
        • 是否由于ISSUE 1报错导致?否,根本没有MainActivity.java
          • 日志中空消息,根本没有启动apk
        • 是否是Debug版本导致?否,正式打包签名Release,仍然不能启动
        • 是否是第三方库架构不是arm64?确实不是arm64,对应的arm32位库
          • 测试:adb -s 192.168.2.8:5555 shell getprop ro.product.cpu.abi
          • 结果:armeabi-v7a,不是arm64-v8a
      • 原因分析:暂无
      • 解决方案:直接用32位arm库
        • 解决armeabi-v7a库问题
          • 直接用armeabi-v7a库,因为64位兼容32的库

    Upgrade to 6.2.1

    • 将web-media项目,覆盖官方5.7.0,查看变化。
    • 在6.2.1文件中逐个修改差异文件

    复制新文件

    mkdir -p 6.2.1/capacitor/src/main/java/com/getcapacitor/httpserver/
    
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/Delegates.java 6.2.1/capacitor/src/main/java/com/getcapacitor/Delegates.java
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/IPostMessage.java 6.2.1/capacitor/src/main/java/com/getcapacitor/IPostMessage.java
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/WebExtensionPortProxy.java 6.2.1/capacitor/src/main/java/com/getcapacitor/WebExtensionPortProxy.java
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/WebviewExtension.java 6.2.1/capacitor/src/main/java/com/getcapacitor/WebviewExtension.java
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/cordova/CapacitorCordovaGeckoViewCookieManager.java 6.2.1/capacitor/src/main/java/com/getcapacitor/cordova/CapacitorCordovaGeckoViewCookieManager.java
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/cordova/MockCordovaGeckoviewImpl.java 6.2.1/capacitor/src/main/java/com/getcapacitor/cordova/MockCordovaGeckoviewImpl.java
    cp node_modules/@web-media/capacitor-geckoview/capacitor/src/main/java/com/getcapacitor/httpserver/SimpleHttpServer.java 6.2.1/capacitor/src/main/java/com/getcapacitor/httpserver/SimpleHttpServer.java
    

    修改差异文件

    Changed Files 5.7.0

    • 修改文件

      modified:   5.7.0/capacitor/build.gradle
      modified:   5.7.0/capacitor/src/main/assets/native-bridge.js
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/Bridge.java
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/CapConfig.java
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/MessageHandler.java
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/cordova/MockCordovaInterfaceImpl.java
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/cordova/MockCordovaWebViewImpl.java
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/plugin/CapacitorCookies.java
      modified:   5.7.0/capacitor/src/main/java/com/getcapacitor/plugin/CapacitorHttp.java
      modified:   5.7.0/capacitor/src/main/res/layout/bridge_layout_main.xml
      modified:   5.7.0/capacitor/src/main/res/layout/fragment_bridge.xml
      
    • 新增文件

      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/Delegates.java
      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/IPostMessage.java
      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/WebExtensionPortProxy.java
      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/WebviewExtension.java
      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/cordova/CapacitorCordovaGeckoViewCookieManager.java
      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/cordova/MockCordovaGeckoviewImpl.java
      new file:   5.7.0/capacitor/src/main/java/com/getcapacitor/httpserver/SimpleHttpServer.java
      

    Powered By