Android Cordova 开发 - Cordova 嵌入 Android
一、Cordova 嵌入 Android
1、Cordova 项目迁移
-
通过导入模块的方式将 Cordova 项目下的 platforms\android\CordovaLib 导入到 Android 项目下
-
setting.gradle 中添加如下内容
include ':CordovaLib'
- app 下的 build.gradle 中添加如下内容
dependencies {...implementation project(path: ':CordovaLib')...
}
-
将 Cordova 项目下的 platforms\android\cdv-gradle-config.json 拷贝到 Android 项目下,并进行按需修改
-
将 Cordova 项目下的 platforms\android\app\src\main\assets 拷贝到 Android 项目下的 app\src\main 目录下
-
将 Cordova 项目下的 platforms\android\app\src\main\res\xml\config.xml 拷贝到 Android 项目下的 app\src\main\res\xml 目录下
-
将 Cordova 项目下的 platforms\android\app\src\main\java 目录下的包拷贝到 Android 项目下的 app\src\main\java 目录下
-
对 Android 项目的清单文件 AndroidManifest.xml 进行按需修改
2、创建 Cordova WebView
package ds.hy.bluetooth.location.activity;import android.os.Bundle;
import org.apache.cordova.CordovaActivity;public class TestCordovaActivity extends CordovaActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);super.init();launchUrl = "file:///android_asset/www/baseStationPatrol.html";loadUrl(launchUrl);}
}
二、常见异常
1、基本介绍
java.io.FileNotFoundException: www/favicon.ico
2、解决方案
- 修改 src/org/apache/cordova/engine 目录下的 SystemWebViewClient 类的第 423 行
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {if (request.getUrl().getPath().equals("/favicon.ico")) {return new WebResourceResponse("image/png", null, null);} else {return this.assetLoader.shouldInterceptRequest(request.getUrl());}
}