当前位置: 首页 > news >正文

域名备案后网站打不开长沙小程序开发销售

域名备案后网站打不开,长沙小程序开发销售,兰州装修公司前十名,有道翻译网站 做翻译目录 一、项目背景 1.1 需求 1.2 设备 1.3 解决方案 二、WebViewUpgrade 接入 2.1 支持版本 2.2 接入 2.2.1 导入项目(我使用的是这个) 2.2.2 implementation 2.3 使用 2.4 WebView 相关推荐 一、项目背景 1.1 需求 项目需要使用WebView加载合作方公司的Url(里面功…

目录

一、项目背景

1.1 需求

1.2 设备

1.3 解决方案

二、WebViewUpgrade 接入

2.1 支持版本

2.2 接入

2.2.1 导入项目(我使用的是这个)

2.2.2 implementation

2.3 使用

2.4 WebView

相关推荐


一、项目背景

1.1 需求

        项目需要使用WebView加载合作方公司的Url(里面功能比较多):

  1. 使用了ES6(ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了(所以也被叫作ES2015))

  2. JavaScript 使用的函数,要求 chrome 最低版本是85。

        一系列原因导致WebView加载该链接报错,合作方那边因为某些原因,不想改变现有的代码实现等。需要我们自行解决,那就开整呗。

1.2 设备

  • Android 8.1, WebView 版本 60.xxxx.xxxx.xx(好吧,忘记版本了,页面打不开))

  • Android 8.1, WebView 版本 61.0.3163.98(页面打不开)

  • Android 11,  WebView 版本 83.0.4103.120(视频无法播放,厂商给的答复是不支持,具体原因没说)

查看版本号:

  1. 可以进入设置-开发者模式-Webview实现可以看到 Webview 内核版本号。

  2. adb 命令: adb shell pm dump com.android.webview|grep version

adb shell pm dump com.android.webview|grep versionversionCode=410412053 minSdk=21 targetSdk=30versionName=83.0.4103.120signatures=PackageSignatures{48d4530 version:3, signatures:[63b96fc5], past signatures:[]}

1.3 解决方案

1.腾讯X5内核,还是加载失败,以为是集成错误。特意使用微信打开该链接,也是加载失败。

2.更新安装包,因为内嵌WebView的是com.android.webview。

  • 2.1 下载了包名为 95.0.4638.50-463805003_minAPI21版本的包,进行覆盖安装->报错,提示签名文件不一致。

  • 2.2 下载com.android.google.weview_95.0.4638.74_APKPure,安装成功了,加载还是报错。而且在WebView实现->不可选择com.android.google.webview。

3.修改framework-res.apk中配置,允许WebView实现选择com.android.google.webview。这种操作不太合适2C,需要root权限,修改系统文件,一不留神就可能产生其他问题。

4.使用 WebViewUpgrade,这个还是比较强大的,对WebView内核进行升级。已解决低版本无法加载url、视频无法播放的问题。

二、WebViewUpgrade 接入

        WebViewUpgrade的创建者遇到的问题:华为机上因为WebView内核的Chromium版本低于107无法播放H265视频的情况,为了解决上述问题可以用JS实现H265播放,但是会比较卡,就想不能让WebView用应用内的APK作为内核。

2.1 支持版本

  • com.google.android.webview:122.0.6261.64

  • com.android.webview:113.0.5672.136

  • com.huawei.webview:14.0.0.331

  • com.android.chrome:122.0.6261.43

  • com.amazon.webview.chromium:118-5993-tv.5993.155.51

        当然,你也可以找到其他版本下载安装即可。例如 com.android.webview,我觉得113版本太高,那么你可以下载一个95版本的。或者你不想使用com.android.webview 改用com.google.android.webview也是可以的。

2.2 接入

2.2.1 导入项目(我使用的是这个)

        将Demo的core和download-source模块直接导入到自己项目,修改core中 implementation 'androidx.appcompat:appcompat:1.6.1'的版本。

2.2.2 implementation

implementation 'io.github.jonanorman.android.webviewup:core:0.1.0'// 不需要下载APK时使用
implementation 'io.github.jonanorman.android.webviewup:download-source:0.1.0'// 需要下载APK使用

        如果是低版本,可能会报错。core中 implementation 'androidx.appcompat:appcompat:1.6.1'的版本比较高,需要兼容的SDK版本也比较高。

解决方案:

  • 1.提高项目 SDK 版本。

  • 2.使用exclude。

以上两种方式都可以。

2.3 使用

      设置

    private void setWebView(){UpgradeInfo upgradeInfo = new UpgradeInfo("com.android.webview","113.0.5672.136","https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.android.webview_113.0.5672.13_armeabi-v7a.zip","网络");String  systemWebViewPackageName = WebViewUpgrade.getSystemWebViewPackageName();if (systemWebViewPackageName != null &&systemWebViewPackageName.equals(upgradeInfo.packageName)&& VersionUtils.compareVersion( WebViewUpgrade.getSystemWebViewPackageVersion(),upgradeInfo.versionName) >= 0) {//Toast.makeText(getApplicationContext(), "system webView is larger than the one to be upgraded, so there is no need to upgrade", Toast.LENGTH_LONG).show();return;}UpgradeSource upgradeSource = upgradeInfo.toUpgradeSource(RobotApplication.getInstance());if (upgradeSource == null) {return;}WebViewUpgrade.upgrade(upgradeSource);updateUpgradeWebViewStatus();}
}

这里我使用的是网络下载:

  • 包名:com.android.webview;

  • 版本号:113.0.5672.136

  • 下载内核地址:https://mirror.ghproxy.com/https://raw.githubusercontent.com/JonaNorman/ShareFile/main/com.android.webview_113.0.5672.13_armeabi-v7a.zip

    //更新状态private void updateUpgradeWebViewStatus() {if (WebViewUpgrade.isProcessing()) {LogUtils.e("WebVIewUpgrade","Upgrading...");} else if (WebViewUpgrade.isFailed()) {LogUtils.e("WebVIewUpgrade","Fail...");} else if (WebViewUpgrade.isCompleted()) {LogUtils.e("WebVIewUpgrade","complete...");}int process = (int) (WebViewUpgrade.getUpgradeProcess() * 100);LogUtils.e("WebVIewUpgrade","Processing:-----"+process + "%");Throwable throwable = WebViewUpgrade.getUpgradeError();if (throwable != null) {LogUtils.e("WebVIewUpgrade","Throwable.message:" + throwable.getMessage() + "\nstackTrace:" + Log.getStackTraceString(throwable));}}
public class UpgradeInfo {public String title;public String url;public String packageName;public String versionName;public String extraInfo;public UpgradeInfo(String packageName, String versionName, String url, String extraInfo) {this.title = packageName + "\n" + versionName;this.extraInfo = !TextUtils.isEmpty(extraInfo) ? extraInfo : "";if (!extraInfo.isEmpty()) {this.title = this.title + "\n" + extraInfo;}this.url = url;this.packageName = packageName;this.versionName = versionName;}public UpgradeInfo(String packageName, String versionName, String url) {this(packageName, versionName, url, "");}@Nullablepublic UpgradeSource toUpgradeSource(Context context) {UpgradeSource upgradeSource = null;if (this.extraInfo.equals("网络")) {upgradeSource = new UpgradeDownloadSource(context,this.url,new File(context.getFilesDir(), this.packageName + "/" + this.versionName + ".apk"));} else if (this.extraInfo.equals("内置")) {upgradeSource = new UpgradeAssetSource(context,this.url,new File(context.getFilesDir(), this.packageName + "/" + this.versionName + ".apk"));} else if (this.extraInfo.equals("安装包")) {upgradeSource = new UpgradePackageSource(context,this.packageName);}return upgradeSource;}
public class MainActivity extends BaseActivity implements , UpgradeCallback {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setWebView();}private void setWebView(){......}//更新中@Overridepublic void onUpgradeProcess(float percent) {updateUpgradeWebViewStatus();}//更新完成@Overridepublic void onUpgradeComplete() {updateUpgradeWebViewStatus();}//更新失败@Overridepublic void onUpgradeError(Throwable throwable) {updateUpgradeWebViewStatus();}
}
        注意:这个代码尽量前置,如果无法前置,需要保证,其他地方先不要对WebView进行操作。如果操作了,会导致初始化失败。

        可以先试用Demo尝试功能是否可用,再集成到自己的项目中。

2.4 WebView

        执行完上面的操作后,你就正常操作WebView即可。上面我只是列举了网上下载的例子(第一次下载,只要文件存在,无需重复下载),还支持内置/安装包的形式,我这是应用包体太大,不适合内置。

        这种方式是可行的,但是也有一些小的前置条件需要注意,如果无法前置会导致使用失败。怎么前置才能做到万无一失,就需要根据实际情况来判断了。

相关推荐

Android System WebView 各版本下载地址(翻)icon-default.png?t=N7T8https://www.apkmirror.com/apk/google-inc/android-system-webview/WebView java.lang.NoSuchMethodException:callDrawGLFunction-CSDN博客文章浏览阅读5.7k次。5.1系统上WebView初始化报错Caused by: java.lang.NoSuchMethodException: callDrawGLFunction [long]at java.lang.Class.getMethod(Class.java:664)at java.lang.Class.getMethod(Class.java:643)at com.android.webview.chromium.WebViewDelegateFactory$Api21CompatibilityDele_java.lang.nosuchmethodexception: android.view.displaylistcanvas.calldrawglfuhttps://shuaici.blog.csdn.net/article/details/78459486

http://www.yayakq.cn/news/564587/

相关文章:

  • 广宁网站建设公司wordpress主题还原
  • 做招牌的网站有哪些微网站菜单
  • 国外做二手服装网站有哪些问题简 wordpress 主题
  • 进入微信官方网站下载响应式网站手机端
  • python做音乐网站wordpress行业模板
  • 网站更新前知道内容wordpress网站加载过慢
  • 五个网站网络推广方式的研究
  • 华强方特网站开发中国建设银行员工学习网站
  • 销售网站怎么做中山高端网站建设公司
  • 遇到钓鱼网站怎么做规划电子商务网站建设方案
  • wordpress编辑作者投稿者英文杭州seo平台
  • 个人做的卖货网站网站建设公司需要申请icp吗
  • 柳州网站优化公司济南口碑最好的装修公司
  • 哪个网站做的效果图好access2003做网站
  • 该怎么跟程序员谈做网站可信网站 quot 验证能防范哪些安全.
  • 凡科网做网站好吗wordpress站点设置使用时间
  • 邹平网站定制辽宁建设建设工程信息网
  • 健康咨询类网站模板小程序注册量
  • 游戏充值网站怎么做钻探公司宣传册设计样本
  • 杭州网站推广怎样做在线安装wordpress
  • 江西建设三类人员网站有哪些网站可以做毕业设计
  • 区域销售网站什么做网店设计风格有哪些
  • 惠州+网站建设公司做网站失败
  • 使用他人注册商标做网站旅游网站开发方案百度文库
  • 云南网站建设多少钱太原网络推广价格
  • 做一个商城网站网站ui设计要点
  • 深圳市建设网站公司个人网站备案描述
  • 网站建设是什么费用福建seo搜索引擎优化
  • 律师事务所网站 备案商标设计模板
  • 自己做的网站怎么挂广告有专业做淘宝网站的美工吗