插件中的 WebView 發生资源 NotFoundException 300C

已经2个星期还是无法解决这个问题,每天被PM追杀,Help me ~~~ Orz...

目前 App 满足下列3个条件将导致 WebView 发生 NotFoundException:
1. Android 7以上
2. chrome 升级到67版本以上
3. app 开启插件前有先使用过 WebView 元件

加载插件资源的方式:

protected void loadResources() throws InstantiationException, IllegalAccessException, 
        IllegalArgumentException,InvocationTargetException, NoSuchMethodException,
        NoSuchFieldException {
    mAssetManager = AssetManager.class.newInstance();

    AssetManager.class.getMethod("addAssetPath", String.class).invoke(mAssetManager, dexPath);
    //AssetManager.class.getMethod("addAssetPath", String.class).invoke(mAssetManager,
        getSourceDir());  

    if (mResources == null) {
        mResources = new Resources(mAssetManager, getResources().getDisplayMetrics(),
            getResources().getConfiguration());
    }       

    mTheme = mResources.newTheme();
    mTheme.applyStyle(android.R.style.Theme_Light_NoTitleBar_Fullscreen, true);
}

参考:
https://www.jianshu.com/p/89e2a4165fb6

尝试:
1.尝试将 WebView 的资源加载进新的 AssetManager,但依旧是 NotFoundException

private String getSourceDir() {
        String webviewImplPackageName = null;
        PackageInfo packageInfo = null;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            webviewImplPackageName = Settings.Global.getString(getApplication().getContentResolver(),
                "webview_provider");
        }

        try {
            packageInfo = getApplication().getPackageManager().getPackageInfo(webviewImplPackageName,
                PackageManager.GET_META_DATA);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return packageInfo.applicationInfo.sourceDir;
}
2.尝试将 sharedLibraryFiles 清空,但依旧是 NotFoundException
private void delet() {
        getApplicationInfo().sharedLibraryFiles = new String[0];       
}

错误Log:
W/ResourceType: No known package when getting value for resource number 0x020b001b
W/System.err: android.content.res.Resources$NotFoundException: Resource ID #0x20b001b
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:209)
at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:91)
at android.content.res.Resources.getInteger(Resources.java:1096)
at org.chromium.ui.base.DeviceFormFactor.b(SourceFile:5)
at org.chromium.ui.base.DeviceFormFactor.isTablet(SourceFile:3)
at org.chromium.android_webview.AwSettings.nativeUpdateEverythingLocked(Native Method)
at org.chromium.android_webview.AwSettings.ac(SourceFile:71)
at org.chromium.android_webview.AwSettings.a(SourceFile:69)
at org.chromium.android_webview.AwContents.e(SourceFile:212)
at org.chromium.android_webview.AwContents.d(SourceFile:153)
at org.chromium.android_webview.AwContents.(SourceFile:81)
at uY.run(SourceFile:15)
at ahv.a(SourceFile:13)
at ahw.run(SourceFile:2)
at org.chromium.base.ThreadUtils.b(SourceFile:31)
at ahv.a(SourceFile:7)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.b(SourceFile:6)
at com.android.webview.chromium.WebViewChromium.init(SourceFile:111)
at android.webkit.WebView.(WebView.java:651)
at android.webkit.WebView.(WebView.java:581)
at android.webkit.WebView.(WebView.java:564)
at android.webkit.WebView.(WebView.java:551)
at android.webkit.WebView.(WebView.java:541)
at candan.sectionapk.MainActivity$1.onClick(MainActivity.java:50)
at android.view.View.performClick(View.java:6266)
at android.view.View$PerformClick.run(View.java:24730)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
A/chromium: [FATAL:jni_android.cc(258)] Please include Java exception stack in crash report
W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
Chrome build fingerprint:
68.0.3440.91
344009152

0

2个回答

兄弟你报错的位置是.ResourcesImpl.getValue(ResourcesImpl.java:209)
你贴的代码没有这个方法啊ResourcesImpl.getValue
建议debug断点调试这路里

0
qq_34309305
75闪光雷 回复qq_43029833: 可以看到代码吗?能修改吗?打个log,看看
12 个月之前 回复
qq_43029833
qq_43029833 在插件中只要 New WebView() 就会解发这个错误~
12 个月之前 回复
qq_43029833
qq_43029833 那已调用到framework层了,无法下断点呀。
12 个月之前 回复
0
qq_43029833
qq_43029833 对底层不太了解,请问能给个demo吗?
12 个月之前 回复
qq_43029833
qq_43029833 没有写明 code 要如何处理
12 个月之前 回复
qq_43029833
qq_43029833 这篇我看过,但最后所描述:『在插件创建WebView之前,仿照WebView中加载浏览器内核的代码,先去获取一下com.internal.R.string.config_webViewPackageName的值,获得浏览器内核的包名,然后对插件的assertmanager进行浏览器内核资源的加载。』
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
應用程式中發生伺服器錯誤
1、问题描述: '/' 應用程式中發生伺服器錯誤。 -------------------------------------------- 無法載入檔案或組件 'sapnco' 或其相依性的其中之一。 試圖載入格式錯誤的程式。   描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。   例
Android WebView截取所有内容生成长图在5.0以上系统异常问题
最近在做webview截取所有内容生成长图时出现一些问题,在Android5.0以下系统能正常生成长图,但是在5.0以上会出现只能截取第一屏的内容,剩下的全部为空白,查看资料发现原来是系统在5.0+版本上,Android对webview做了优化,为了减少内存占用以提高性能,因此在默认情况下会智能的绘制html中需要绘制的部分,其实就是当前屏幕展示的html内容,因此会出现未显示的图像是空白的。解决
ORA-02049: 超时: 分布式事务处理等待锁
转:http://blog.itpub.net/15672129/viewspace-767129/ 今晚接到项目经理发来的数据库问题,报错为ORA-02049: 超时: 分布式事务处理等待锁,第一时间感觉是维护的数据库的dblink问题,因为现在维护的这些数据库使用大量dblink,70%以上的查询都使用dblink,查看对于的存储过程发现,在循环处理后没有commit,导致该问题的出现。 ...
Webview妙用(实现源生复杂UI页面)
2、做为一个android程序员,首先自然想到是在android上如何实现。捋了一下官方给出的所有控件,并没有能解决该UI界面的方法,于是,只能自定义view了。 3、首先思路是创建自定义view,然后用textPaint绘制文字及下划线。用onTou
UniWebView 2.10.0
unity中展示webview的插件
微信webview开发的那些坑
背景:微信的安卓版封装了自己x5内核webview。因此从一定程度上提高了安设备碎片化的统一性。 但由于自身的一些特性,也存在着一些坑。今天主要说的是微信网页开发遇到的一些坑。 作为积累,同时给大家参考,欢迎补充。 安卓和ios不同的视频播放特性 1,视频播放组件统一替换了默认video组件。并浮在最高层,无法在上面放东西。这一特性也决定了安卓web...
Android WebView 开发 资源释放,处理详解
现在 app 与h5  结合的应用越来越多,这里我们一般用 WebView 来显示 但是 问题也挺多的,资源释放,缓存处理,等。 WebView 的基本使用 mWebview = (WebView) findViewById(R.id.webview); webview.loadUrl(""); WebView  的WebSettings 基本设置百度基本可以查到,我这里就贴出下
Android如何获取fragment里的webview控件资源
先大致讲一下项目的框架,模仿京东分类页面。左侧listview,右侧一个fragment内嵌webview。当我在MainActivity的onCreate()方法中获取webview资源,编译运行APP一直是崩溃。debug找到了原因--空指针异常。仔细分析发现是findviewbyid()方法并没有获取到webview这个资源,造成webview是一个null值。由此造成程序的崩溃。 查资料
android WebView加载优化——拦截替换加载本地资源文件
这个版本有个需求就是优化webview的加载速度,争取做到h5秒开。于是各种找解决方案: 1、美团WebView性能、体验分析与优化 https://tech.meituan.com/WebViewPerf.html 我使用的方法也是参考美团的一点,并没有美团优化的全面 2、腾讯开源框架VasSonic https://segmentfault.com/a/1190000010711024 QQ使...
android Webview加载本地资源(图片,文件....)
前段时间项目中要做一个webview加载本地资源的功能: public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { WebResourceResponse response = null; try { // 重新构造WebResourceResponse 将数据...
缓存解析Fragment点击跳到WebView
依赖 compile 'com.android.support:recyclerview-v7:25.3.1' Recycler compile 'com.squareup.okhttp3:okhttp:3.8.1' <android.support.v7.widget.RecyclerView android:id="@+id/rv" andro...
iOS webview加载网页内容,拦截如果本地有资源就先加载本地资源
webiew加载一个网页资源过多,加载速度过慢。可以将部分资源放在本地,拦截webview的链接和请求,本地有的资源直接获取本地的,不去加载网络服务器内容 首先自定义一个继承自NSURLProtocol的类 然后重写+ (BOOL)canInitWithRequest:(NSURLRequest *)request   重写 + (NSURLRequest *)canonicalRequ...
Android Tinker集成(含有AndResGuard资源混淆)
Tinker的原理 服务端做dex差量,将差量包下发到客户端,在ART模式的机型上本地跟原apk中的classes.dex做merge,merge成为一个新的merge.dex后将merge.dex插入pathClassLoader的dexElement,为了实现差量包的最小化,Tinker自研了DexDiff/DexMerge算法。Tinker还支持资源...
使用WebView加载HTML资源
最近的项目需要做一个如同微信中的腾讯新闻的功能,如下图所示:   直接上关键代码: 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_wid...
Android插件化(三)加载插件apk中的Resource资源
Android加载插件apk中的Resource资源简介如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源码中发现,它有一个私有方法addAssetPath,只需要将apk的路径作为参数传入,我们就可以获得对应的AssetsManager对象,然后我们就可以使用AssetsManager对象,创建一个Resources对象,然后就
Android中的asserts和res/raw资源目录
1、assets目录 assets目录下称为原生文件,无法通过R资源清单类访问,这类文件在被打包成apk文件时是不会进行压缩的; (1)使用方法AssetManager assets = this.getResources().getAssets(); ((TextView)findViewById(R.id.txAssets)).setText( readStream(assets.o
IOS开发中WebView加载资源路径问题
在WebView中我们可以使用Web等技术进行显示HTML、解析CSS和执行JavaScript等操作。WebView控件加载本地HTML代码或者网络资源。 在使用loadHTMLString:baseURL方法时,设定要加载的主页的基本路径,通过一个HTML字符串加载主页数据。这里要注意的是HTML中的资源文件的路径问题。 向Surppoting Files添加资源文件夹有两种方式,如图所示:
Android WebView主资源加载过程
当我们在浏览器中输入一个网址时,浏览器会调用到WebView的loadUrl接口,开始加载页面资源,本章节就主要介绍HTML主资源的加载过程,参考的chromium版本是48.0.2542.0,也是我们Android M使用的版本。整个资源加载流程非常复杂,下图只是列出主要的几个调用过程,其中绿色表示browser进程,蓝色表示render进程,整个调用过程从framework层的api load...
Android-WebView(五)优先加载本地资源(js, css等)
https://my.oschina.net/fengheju/blog/681227 Android-WebView(五)优先加载本地资源(js, css等)  收藏 风荷举   发表于 10个月前 阅读 897 收藏 5 点赞 0 评论 0    摘要: Android webview 离线资源加载
在Excel中读取学生的E-mail实现成绩单群发
在Excel中读取学生的E-mail、姓名、成绩,使用Jmail控件实现成绩单群发
关于在Dialog中使用webview,关闭时释放资源的问题
今天在弄奖励广告,发现退出的时候报错,释放serviceConnection的问题 看了几个帖子,发现说webview中如果要调用了setJavaScriptEnabled很容易出现这种情况,建议webview动态添加 看的几个帖子,先记录下 http://blog.csdn.net/lxd_Android/article/details/56022088?locationNum=1&a...
在WebView的页面中直接使用res中的图片
WebView页面中使用res中图片的方法: 附测试页面: function loadimage(imageName) { document.getElementById("img").src = "file:///android_res/drawable/" + imageName; }    Android端: private void lo
iOS 详解WKWebview屏蔽广告,保存图片以及截取链接
(原创)2017-6-20最近刚刚实现的功能, 分享一下经验(原谅文章没有句号, 为了开发方便我设置的中文下使用英文标点).自己做了一个比较简单浏览器, 里面有模仿UC实现长按页面屏蔽广告的功能保存网页图片和获取网页跳页的链接都是基于上面做的扩展, 这里详细讲去除广告思路:手动去除广告主要有以下几个步骤:1, 获取html上的触摸事件2, 捕获触摸事件返回...
Android Webview异常之易忽略的点:更新系统Webview
今天发现webview不能正常显示网页内容了。后来发现漏更新系统的Webview,特此记录备忘。
[Android]webView访问本地文件资源
查阅了很多资料,从setAllowFileAccess(true)到shouldInterceptRequest();都尝试过。其中:setAllowFileAccess(true)一点用都没。从文档看,这个默认就是true 而shouldInterceptRequest()在请求图片是可以,但是视屏(MP4)不行。 折腾了老半天,祭出我的神器:AndSe...
Android WebView 实现缓存网页数据
WebView加载网页,有网的情况下加载网页,之后关闭网络并结束进程在打开一样可以看到先前看到过的网页,当点击没打开过的网页是则:链接不存在。
UIWebView拦截资源请求
项目中web页埋点以加载资源文件的形式发起请求,当客户端拦截到该请求时,要求放弃发送该请求,改为客户端统计此次埋点事件。 NSURLProtocol可以拦截监听每一个URL Loading System中发出request请求,记住是URL Loading System中那些类发出的请求,如果不是这些类发出的请求,NSURLProtocol就没办法拦截和监听了。
android如何让webview里的资源访问本地缓存
继承并实现一个ContentProvider package com.packagename.provider; public class MyProvider extends ContentProvider { @Override public ParcelFileDescriptor openFile(Uri uri, String mode){ ...
记录一个问题,oracle连接的问题
异常:“OracleInternal.Common.ProviderConfig”的类型初始值设定项引发异常。
异常后显示错误页面
今天将一下 ,如何在web site发生异常后,我们统一跳转到 一个友好的错误页面。 在了解这个问题前,我们先思考一下。 关于为何需要这样的功能,我就不细说了。 那我们要考虑的是,统一跳转~,对滴,统一跳转。   1   创建一个Global.asax页面 vs里会有的,自己找找   然后,你可以了解一下,这个文件是干嘛用的。 这里我就贴一个链接吧。 这个比较详细(里面还包...
WebView HTTPS页面引用HTTP资源的问题
问题 WebView页面图片无法显示; log报错: chromium: [INFO:CONSOLE(0)] "Mixed Content: The page at xxx was loaded over HTTP 原因 如果不单独设置,WebView是不支持在Https域名下加载Http资源的。 设置办法: //允许混合模式(http与https) if (Bu...
Android与H5互调使用cordova的WebView,插件调用,插件编写
Android WebViews 在大型原生Android工程中嵌入一个含有cordova的WebView(制作混合应用,原生页面+H5页面)
android webView加载html 并引用本地资源(图片、字体库)
android webView加载html 并引用本地资源(图片、字体库)
Android WebView 如何给资源请求添加请求头
通过WebView.loadUrl(url,map)可以在访问这个url的初步请求时,webview会加上请求头,但在png,css等资源文件时,无法添加,这让我在通过代理来访问这个url时,无法加载图片和CSS文件。
WKWebView——html生成长图
前言由于本人今年加入了换工作大潮,到了如今的这家公司,工作不是忙,所以有跟多的时间自我学习,于是想到写下自己在这两年工作以来的第一篇博客。最近在重拾swift,所以把之前遇到的一个把Html5页面转换成长图的功能使用swift重新整理了一遍;当时在做这个功能是也在网上搜集过很多资料,相对来说使用UIWebView进行截图相对来说是很简单的直接使用renderInContext方法即可将web页面直...
Android WebView的两点技巧-资源拦截与js注入
1.前言WebView是个很常用的控件,但是缺不是那么简单,那么,今天来给大家介绍下最近在做的时候,遇见的几个问题。注意,并不是所有的情况下,webview加载的都是自适应的网页。比如说,加载<p></p><img></img> 。2.资源拦截问题 问题描述 网页的某些资源在手机上不合适,比如说css资源过于庞大,客户端加载太慢,比如说,你的这个css放在客户端不合适,等等。 那么,我们怎么解
Android开发用webView加载长图
需求是要加载一张存放在项目里的长图,支持缩放,第一反应想到的最容易的办法就是webview了,上代码布局就是web 没啥说的&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; xmlns:app=&quot;ht...
Android 后台生成长图并分享(非长截图)
Demo地址: https://github.com/SherlockGougou/DrawLongPictureDemo 先看需求: 1.用户点击生成长图按钮,弹出等待框,后台生成一张长图。 2.用户展示界面和最终生成的长图,布局完全不一样,所以不能通过直接将view转换成bitmap,或者长截图来实现。 3.生成的长图,头部加上公司logo,尾部加上二...
WebView:拦截url、js交互、使用本地图片资源
上一篇WebView(一):基本设置与使用,我们了解了WebView的常用API、基本设置以及加载HTML网页。这一篇我们深入讲一些常用的WebView使用方法。比如我们标题上写的拦截URL、JS交互、使用本地图片资源等。好了,废话就到这里,让我们走起……一、Android代码与JS交互现在我们已经使用WebView加载好了HTML网页,我们可以点击网页上的控件进行操作,但是如果HTML中的一些控件
WebView 生成长图,截图
关于 WebView 截图 网上已经有很多例子了,但是在研究使用的时候发现一些问题,在这记录一下,供大家参考。