说明
创建项目
cordova create zmtask com.zhumadev.zmtask zmtask
添加安卓平台
cordova platform add android@^10.1.2
注意:此出用的是10.1.2 版本 太新的版本google对跨域访问进行了比较强的限制
调试环境
{
"MIN_SDK_VERSION": 22,
"SDK_VERSION": 30,
"GRADLE_VERSION": "6.7.1",
"MIN_BUILD_TOOLS_VERSION": "30.0.2",
"AGP_VERSION": "4.2.2",
"KOTLIN_VERSION": "1.5.21",
"ANDROIDX_APP_COMPAT_VERSION": "1.3.1",
"ANDROIDX_WEBKIT_VERSION": "1.4.0",
"GRADLE_PLUGIN_GOOGLE_SERVICES_VERSION": "4.3.8",
"IS_GRADLE_PLUGIN_GOOGLE_SERVICES_ENABLED": false,
"IS_GRADLE_PLUGIN_KOTLIN_ENABLED": false
}
注意下面两个:
"GRADLE_VERSION": "6.7.1",
"MIN_BUILD_TOOLS_VERSION": "30.0.2",
需要修改项目下的这个文件:
node_modules\cordova-android\framework\cdv-gradle-config-defaults.json
cordova-plugin-device 随便添加一个插件 不然会报错 没有找到plugin js
cordova plugin add cordova-plugin-device
\android\CordovaLib\src\org\apache\cordova\engine\SystemWebViewClient.java
最后面的方法做出以下修改 访问/store和有ajax的请求定位到服务端 按照参数的查询ajax=1 展示没有插件可以处理 只能是path
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
Uri uri=request.getUrl();
String path= uri.getPath();
String ajax= uri.getQueryParameter("ajax");
//LOG.w(TAG, "assetLoaderBuilder path : "+path);
if(path.startsWith("/Store")||"1".equals(ajax)){
LOG.w(TAG, "assetLoaderBuilder remote path : "+path);
return null;
}
LOG.w(TAG, "assetLoaderBuilder local path : "+path);
//LOG.w(TAG, "shouldInterceptRequest R? : " + request.getUrl());
return this.assetLoader.shouldInterceptRequest(uri);
}
AndroidManifest.xml
据说加了下面一句可以阻止一个错误但是我本地有时候不行
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.TracingController" on path: