怎么安转6.0的cordova

2016-12-16 23:55:05 u014253480 阅读数 20423

Cordova添加平台的时候都会有个默认值,一般都是选择最新的版本。

我使用的Cordova版本是6.4.0,在进行添加android平台是它给我选了6.0.0版本,当我使用 cordova platform add android 的时候它是成功的帮我创建了android平台的相关代码,但是它报出了一个错误,告诉我说,需要jdk1.8或者更高版本~(我使用的是1.7jdk)
后来才发现是因为Cordova帮我创建android的时候是选择6.0.0版本的(好像android6.0.0需要jdk1.8版本),发现了这个问题之后,我又不想更换jdk版本,所以,我就只能改变Cordova生成的android版本的,上官网查了下文档,得到了想要的结果:

这里写图片描述

这里写图片描述
我们只需使用该命令即可:cordova platform add android@version

官网相关资料:
http://cordova.apache.org/docs/en/latest/reference/cordova-cli/index.html#syntax

2018-09-25 10:11:56 leverage2009 阅读数 95

原文:http://cordova.apache.org/docs/en/7.x/guide/platforms/android/webview.html

Cordova19以后,安卓平台依靠CordovaWebView控件

Cordova19以前,依赖于CordovaActivity组件

 

1. 保证安装最新Cordova版本,从cordova.apache.org下载并解压其安卓包

2. 找到安卓的/framework目录,运行ant jar,创建Cordova的.jar文件,则未/framework/cordova-x.x.x.jar

3. 拷贝.jar文件到安卓项目的/libs目录下

4. 添加布局到应用/res/xml/main.xml文件

<org.apache.cordova.CordovaWebView
    android:id="@+id/tutorialView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

5. 修改activity,以让其实现CordovaInterface接口。也可以拷贝/framework/src/org/apache/cordova/CordovaActivity.java,或者自己实现它们。以下代码段是基于其接口最简单的应用实现:

public class CordovaViewTestActivity extends Activity implements CordovaInterface {
    CordovaWebView cwv;
    /* Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cwv = (CordovaWebView) findViewById(R.id.tutorialView);
        Config.init(this);
        cwv.loadUrl(Config.getStartUrl());
    }

6. 如果该应用需要用到摄像头,可以以以下方式实现:

@Override
public void setActivityResultCallback(CordovaPlugin plugin) {
    this.activityResultCallback = plugin;
}
/**
 * Launch an activity for which you would like a result when it finished. When this activity exits,
 * your onActivityResult() method is called.
 *
 * @param command           The command object
 * @param intent            The intent to start
 * @param requestCode       The request code that is passed to callback to identify the activity
 */
public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {
    this.activityResultCallback = command;
    this.activityResultKeepRunning = this.keepRunning;

    // If multitasking turned on, then disable it for activities that return results
    if (command != null) {
        this.keepRunning = false;
    }

    // Start activity
    super.startActivityForResult(intent, requestCode);
}

@Override
/**
 * Called when an activity you launched exits, giving you the requestCode you started it with,
 * the resultCode it returned, and any additional data from it.
 *
 * @param requestCode       The request code originally supplied to startActivityForResult(),
 *                          allowing you to identify who this result came from.
 * @param resultCode        The integer result code returned by the child activity through its setResult().
 * @param data              An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
 */
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    CordovaPlugin callback = this.activityResultCallback;
    if (callback != null) {
        callback.onActivityResult(requestCode, resultCode, intent);
    }
}

7. 最后,记得加上线程池,否则插件没有线程跑咯:

@Override
public ExecutorService getThreadPool() {
    return threadPool;
}

8. 将HTML和js文件拷贝到对应的安卓/assets/www目录中

9. 将framework/res/xml中的config.xml文件拷贝到/res/xml目录中

2020-04-15 21:44:05 summerking 阅读数 456

在cordova开发app时,有时需要弄清手机android版本、android SDK版本和cordova-android版本之间的关系。
对于不同的手机android版本,cordova的编译和运行会由于版本不匹配而失败。

查询版本

查询版本的对应关系可以到官网:
https://cordova.apache.org/docs/en/9.x/guide/platforms/android/index.html#page-toc-source
如图:
在这里插入图片描述
上述分别对应了所需要的cordova-android version、SDK manager中的API Levels和手机设备上看到的android版本号。

下图是sdk manager中的API Levels:
在这里插入图片描述

安装指定的cordova-android版本

显示最新cordova-android命令:
在cmd命令窗口执行:

npm view cordova-android

可以用通配符,查询所需版本。
例如:要显示所有7.X.X版本,用如下命令:

npm view cordova-android@7.*

显示特定版本8.0.0,用如下命令:

npm view cordova-android@8.0.0

安装指定版本,命令如下:

cordova platform add android@^7.1.4

其他cordova platform命令参考:
在这里插入图片描述

2016-11-11 18:10:05 xiaoliu201050080317 阅读数 1557

1.首先上源码类图:

这里写图片描述
2. 和Cordova 3.5的区别:
2.1把webview封装到SystemWebViewEngine里面,然后CordovaWebViewImp依赖SystemWebViewEngine;
2.2 SystemWebViewEngine实现CordovaWebViewEnginer,有一些基本方法必须要实现,比如loadUrl(),getView();
2.3然而SystemWebViewEngine最后调用的还是SystemWebView的一些方法,只是一个壳,但是还做了一些事情:创建CordovovaBride,然后调用exposeJsInterface()进行接口暴露;
3.比3.5优化的地方:
3.1可以通过实现CordovaWebViewEnginer去更改需求。
3.2 更改了安全问题.
4.关于白名单问题
会在SystemWebViewClient的shouldInterceptRequest和shouldOverrideUrlLoading去拦截一下判断是否在允许的范围,然后做出相应的响应操作。

2016-04-19 11:15:36 u014029186 阅读数 1671

1.谷歌浏览器报错:“No Content-Security-Plolicy meta tag found.please add one when using the cordova-plugin-whitelist plugin”

添加上这个标签

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">


备注:whitelist是cordova域名白名单


2.在开发过程中遇到这样子的问题:


解决方案:将上述APi接口的地址写入

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' API地址 ">