Cordova Hybrid App

文档参见: http://cordova.apache.org/docs/en/latest/guide/overview/index.html

基础环境

  1. nodejs
  2. java
  3. android sdk

简单例子

#cordova create <PATH> [ID [NAME [CONFIG]]] [options]
cordova create demo net.tyio.c "My App"
cordova platform add android
cordova build android

安卓签名

官方的签名步骤有点问题,经验先记下来。

#生成自己的签名
#==> gen-my-key.sh <==
rm -f q.keystore
keytool -genkey \
    -storetype pkcs12 \
    -alias q \
    -validity 36500 \
    -storepass qqqqqq \
    -dname "CN=cordova.tyio.net, OU=t, O=t, L=bj, ST=bj, C=china" \
    -keystore q.keystore

#打包未签名的apk
#==> build.sh <==
cordova build android --release

#最后再签名
#==> sign.sh <==
cp platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk app.apk

jarsigner -keystore q.keystore -storepass qqqqqq \
    app.apk \
    q
exit

使用远程入口

cordova 会把

./platforms/android/platform_www/
./www

下的数据(视情况 release or debug)都拷贝到

./platforms/android/app/build/intermediates/assets/release/www/
./platforms/android/app/build/intermediates/assets/debug/www/

然后再打包apk。

我们可以打包一个最简的apk,然后所有的逻辑都走在线,操作如下:

正常 build 后,拷贝 ./platforms/android/app/build/intermediates/assets/release/www/* 到网站目录,

修改 config.xml

<content src="https://cordova.tyio.net" />

清空 www,再build,出一个 apk。

Linux 搭建编译环境

mkdir src
podman run -v ./src:/opt/src -it hamdifourati/cordova-android-builder bash

# ...
cordova create k
cordova platform add android
cordova build android

config.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="net.tyio.k" version="1.1.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>k</name>
    <content src="https://k.tyio.net" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
</widget>

以下不用看了。

yum install java java-devel

# 去 https://gradle.org/releases/ 下载 gradle
wget https://downloads.gradle.org/distributions/gradle-4.10.3-bin.zip
unzip gradle-*-bin.zip
ln -s xxx/gradle-xxx/bin/gradle /usr/bin
# cordova 编译时,又会自己去下载 4.1 版的,原因未知...

# 下载 android sdk
https://developer.android.com/studio/#downloads
Command line tools only

cd /opt
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
mkdir android && cd android && unzip ../sdk-tools*.zip
chown -R q android

# 查看合适的 build-tools 版本
./tools/bin/sdkmanager --list
# 安装 build-tools
./tools/bin/sdkmanager 'build-tools;28.0.3'

# 需要用的时候, 激活环境
export ANDROID_HOME="/opt/android"
export ANDROID_SDK_ROOT="/opt/android"

# 激活后, 就可以正常编译了
cordova build android

Crosswalk

https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview

cordova 8.x 不兼容,所以:

npm i -g cordova@7

如果需要启用 crosswalk, 则:

cordova plugin add cordova-android-support-gradle-release
cordova plugin add cordova-plugin-crosswalk-webview

集成 crosswalk 如果遇到 Failed to execute aapt 错误, 则:

cordova plugin add cordova-android-support-gradle-release

参考: https://stackoverflow.com/questions/49183917/failed-to-execute-aapt-with-cordova

Lite 版(好像没效)

cordova plugin add cordova-plugin-crosswalk-webview --variable XWALK_MODE="lite"