Cordova 配置文件/常用命令

cordova默认的项目,当滑动时候,在ios设备上会有个回弹效果,对于网站项目这个正常,但是手机app这个是不需要的,而且影响体验,所以我们需要禁止掉这个属性;

<preference name="DisallowOverscroll" value="true" />

是否允许后台存储

这个属性我们一定要配置none,否则的后ios会调用icloud存储,这个虽然没有大的影响,但是在发布到apple store的时候可能会因为这个原因,被拒绝掉

<preference name="BackupWebStorage" value="none" />

文件下载到存储卡

<preference name="AndroidPersistentFileLocation" value="Compatibility" />

splash 启动配置

在app启动的时候我们会看到各种启动图片,这个叫splash, 我们需要对此进行配置,前提是我要安装splash插件才能生效的,并且也可配置app的横竖屏,启动页面的持续时间等等。

<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="2000" />
<preference name="FadeSplashScreenDuration" value="2000"/>
<preference name="Orientation" value="portrait" />

针对平台的设置

对于不同的平台会有不同的设置,比如splash和icon, 因为android 和ios上尺寸是不一样的。

<platform name="android">
        <allow-intent href="market:*" />
</platform>

插件配置

我们必须要配置的插件通常就是上面几个,白名单用来允许访问https网络,主要是用在android的项目,但是对于最新的cordova应该不需要了。

plugin这个是最新的定义方式,之前我一直在用feature这个属性,但是后来发现被废弃掉了。

指定好这个plugin以后,每次cordova会检查项目是否有这个几个插件,如果没有的话,自动从新下载,有的话不下载,当本地和定义版本不一致的使用,更新重新下载。

 

 

常用命令

  • cordova plugin ls 查看所有已安装的插件
  • cordova plugin rm xxx  删除插件
  • cordova plugin add  xxx 安装插件
  • cordova platform add android / ios  添加平台
  • cordova help 帮助
  • cordova requirements 检查打包条件
  • cordova build android/ios  打包测试包
  • cordova build --release 打包正式包
  • npm update -g cordova 更新cordova 
  • cordova platform update android/ios  更新完成后 还有同步更新平台
  • cordova-hcp init 热更新文件初始化
  • cordova-hcp build 更新热更新文件

cordova打包 android

如果没有FQ,那么肯定是不能下载gradle包的,但是我们可以利用国内的镜像去下载

同步gradle包时报错报错 

Operation timed out (Connection timed out). If you are behind an HTTP proxy,please configure the proxy settings either in IDE or Gradle.

 

1.找到三个build.gradle文件

  • android -> build.gradle
  • android -> app -> build.gradle
  • android -> CordovaLib -> build.gradle

2.替换为国内阿里云镜像 

https://maven.aliyun.com/mvn/guide  阿里云有效maven仓库

而我们常用的 public 仓库,其实是 central 仓库和 jcenter 仓库的聚合,所以配置了 public 仓库,就不需要再配置 jcenter 的仓库了。

替换前

  

替换后(只留下public仓库和google仓库即可)

 

 

 

 

终极方案 只要这两个就可以了 ,  默认配置是https://google.com  所以google的镜像是一定不能删掉的 再加上仓库的镜像就可以了

 repositories {
        maven{ url'https://maven.aliyun.com/repository/public' }
        maven{ url'https://maven.aliyun.com/repository/google' }
    }

ps: 在别人的项目中,如果有 goole() 这种的,还是保留下来比较好, 因为阿里云不一样包括了所有的库。

 

 

3. 检查环境,然后cordova clean  cordova build 

 

问题

  1. android studio download maven-metadata.xml卡住问题

是因为阿里云的仓库地址换了

   2.进程被占用

 

 

 

解決distributionUrl下载过慢问题

解决方法: 修改url地址为  file\:你的下载的gradle路径地址

 

 

 

 

 

启示:

1.

首先,你是用国内的仓库,所以就必须得确认仓库的地址是否是最新的!!!

首先,你是用国内的仓库,所以就必须得确认仓库的地址是否是最新的!!!

首先,你是用国内的仓库,所以就必须得确认仓库的地址是否是最新的!!! 

 

方法:

百度搜索  

阿里云maven仓库地址

2.当时不知道要修改三个 build.gradle文件

修改了根目录的后 发现编译到后面,又变成了google.com下载。

思路:

这时候就应该全局去搜索google.com  看看哪些地方使用了, 把它们都改为最新的仓库地址

问题解决!

 

 

将Cordova应用打包成AAR,供第三方APP集成

  

一、创建cordova应用

初始化Cordova应用,如果应用已存在,请忽略此步操作

cordvoa create cordova-aar com.chinacreator.app.demo 集成DEMO
cordova platform add android
cordova build android

二、将Cordova的Lib打包成AAR

  • 将生成应用导入到Android Studio

 

 

 

  • 生成CordovaLib的aar

 

 

 

  • 将此文件复制保存

 

 

 

三、将Cordova的APP应用打包成AAR

  • 修改./app/build.gradle
// apply plugin: 'com.android.application'
apply plugin: 'com.android.library' // 改成library
......
// applicationId privateHelpers.extractStringFromManifest("package") // 注释应用ID
  • 修改./app/src/main/AndroidManifest.xml
<application android:hardwareAccelerated="true" android:supportsRtl="true">
  <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
  </activity>
</application>
  • 生成APP的AAR

 

 

 

  • 复制保存应用AAR

四、原生APP集成Cordova应用

  • 复制生成的AAR资源到原生应用

  • 导入AAR包
......
android {
    ......
    // AAR包地址
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    ......
    compile(name: 'CordovaLib-release', ext: 'aar')
    compile(name: 'app-release', ext: 'aar')
}
  • 启动Cordova应用的Activity
startActivity(new Intent(this, com.chinacreator.app.demo.MainActivity.class));
  • 文件下载并打开 安装插件  cordova-plugin-advanced-http  cordova-plugin-file-opener2
 onClick={() => {
   // data: { reportType: 'pdf', reports: JSON.stringify(data) },
    Toolkit.download({
      url: `${window.baseUrl}/fileserv/download/${item.file_id}`,
      fileName: item.file_name,
      data: {},
    }).then((res) => {
      Toolkit.openFile({ filePath: res });
    }).catch((err) => {
      Toolkit.message(`下载失败:${err.message}`);
    });
  }}


/** Toolkit.js
 * 文件下载
 * @param params
 * @returns {Promise}
 */
const download = (params) => {
    const auth = store.get('auth');
    const headers = get(params, 'headers', {});
    if (auth && auth.cookie) {
        set(headers, 'Cookie', auth.cookie);
    }

    return new Promise((resolve, reject) => {
        if (!isURL(params.url, { require_protocol: true })) {
            return reject(new Error('下载地址错误'));
        }
        if (!params.fileName || params.fileName === '') {
            return reject(new Error('下载文件名称不存在'));
        }
        emitter.emit('DOWNLOAD_FILE', {
            url: params.url,
            data: get(params, 'data', {}),
            headers,
            fileName: params.fileName,
            success: (url) => {
                resolve(url);
            },
            error: (err) => {
                reject(err);
            },
        });
    });
};

/**
 * 打开文件
 * @param params
 * @returns {Promise}
 */
const openFile = async (params) => {
    await delay(500);
    window.emitter.emit('OPEN_FILE', params);
};

    

本地文件系统 

/**
 * 处理文件下载
 * @param params
 */
const handleDownload = (params) => {
  // HTML5 获取系统权限 window.requestFileSystem(LocalFileSystem.PERSISTENT,
0, function(fs) {
     // 创建目录 fs.root.getDirectory(
'文件夹名称', { create: true }, function(dirEntry) { console.log('dirEntrydirEntrydirEntry', JSON.stringify(dirEntry)); dirEntry.getFile(params.fileName, { create: true, exclusive: false }, function(fileEntry) { const data = get(params, 'data', {}); const headers = get(params, 'headers', {}); cordova.plugin.http.downloadFile(params.url, data, headers, fileEntry.toURL(), function(entry) { console.log(entry.name); console.log(entry.fullPath); console.log(entry); console.log(entry.toInternalURL()); params.success(entry.toURL()); params.success(entry.toInternalURL()); }, function(response) { if (response.error) params.error(new Error(response.error)); }); }, params.error); }, params.error); }, params.error); }
/**
 * 打开文件
 * @param params
 */
const handleOpenFile = (params) => {
    const mimeType = params.mimeType ? params.mimeType : 'application/pdf';
    if (params.noDialog) {
        console.log('1-打开:' + params.filePath);
        cordova.plugins.fileOpener2.open(params.filePath, mimeType, {
            error: function (e) {
                console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
            },
            success: function () {
                console.log('file opened successfully');
            }
        });
    } else {
        console.log('2-打开:' + params.filePath);
        cordova.plugins.fileOpener2.showOpenWithDialog(params.filePath, mimeType);
    }
}

 

posted @ 2020-11-20 16:40  一路向北√  阅读(685)  评论(0编辑  收藏  举报

web应用开发&研究 -

业精于勤而荒于嬉。

工作,使我快乐。


Font Awesome | Respond.js | Bootstrap中文网