编辑
2024-12-19
我当开发
00

目录

1. 环境
2. 补丁
3. 打包
4. 新的构建

本来买的vps闲着,然后部署了个H5的游戏,又想着ip访问不方便,就想打包APP。网上搜了一下,在线打包好多都花钱,本地的,装HBuilderX或者Android Studio,后来AI告诉我 Cordova 可以,是Node.js的一个工具Node.js我本地倒是有,安装也不麻烦,使用倒是还行,但是还要安装一堆的环境。我手上有docker,原来已经有人打包好Cordova安卓环境了,直接用就行,docker还能当工具用,我也是第一次知道这么玩。

cordovaapparchitecture-20230712.svg

1. 环境

dokerhubgithub 上找了一圈,试验了几个环境,内部的版本比较老,导致各种失败,终于找到了一个能用的:

命令如下:

docker run -it -v "$(pwd)":/opt/src --rm hamdifourati/cordova-android-builder bash
  • --rm 就是使用后删除,容器退出后就删除实例了
  • $(pwd) 是取当前目录,这里会创建cordova的工作目录,指定目录也行,把引号去掉,如果是静态的文件包含index.html的就很方便
  • 最后的 bash 是进入该容器实例控制台的意思,就是所有的操作都在 cordova 容器内部

2. 补丁

进入到容器后,会到默认的/opt/src 目录,这里就印射的本地目录,但是还得打补丁才能用(注意这里都是容器内部),一遍一遍试才总结出来的:

#sdkmanager包升级 sdkmanager "platforms;android-34" sdkmanager "build-tools;34.0.0" #java环境 #https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.deb dpkg -i jdk-17.0.12_linux-x64_bin.deb export JAVA_HOME=/usr/lib/jvm/jdk-17.0.12-oracle-x64 export PATH=$JAVA_HOME/bin:$PATH #vim 酌情安装 #apt-get install -y vim

3. 打包

到这就可以正式用了,

  • 基本命令:
#创建项目 cordova create MyApp cd MyApp #部署环境 cordova platform add android #构建 cordova build android

最后会提示成功,第一次会很慢,后面就好了,去印射的路径$(pwd)拿就行了

图片.png

如果不用了,使用exit退出

  • 允许HTTP(默认https)
vim platforms/android/app/src/main/AndroidManifest.xml
#android:usesCleartextTraffic="true" <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true">
  • 配置

图片.png

vim config.xml
<?xml version='1.0' encoding='utf-8'?> <widget id="io.cordova.hellocordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <!-- APP的名 --> <name>XYAPP</name> <description>Sample Apache Cordova App</description> <author email="dev@cordova.apache.org" href="https://cordova.apache.org"> Meixianghao </author> <!-- 直接跳转的地址,默认是index.html --> <content src="http://XXX:8889/" /> <!-- 设置为竖屏应用 --> <preference name="Orientation" value="portrait" /> <!-- 允许HTTP内部跳转 默认是浏览器打开 --> <allow-navigation href="http://*/*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> </widget>

后续还要配置图标,启动页面,等,目前我用不上

4. 新的构建

由于每次进入都要打补丁,我本地又构建了一个,没上传,这里是 Dockerfile

Dockerfile
#https://hub.docker.com/_/openjdk ARG OPENJDK_VERSION=17 FROM eclipse-temurin:${OPENJDK_VERSION} # Reference default value ARG OPENJDK_VERSION #https://github.com/nodesource/distributions/blob/master/README.md ARG NODEJS_VERSION=20 #https://gradle.org/releases/ ARG GRADLE_VERSION=8.7 #https://www.npmjs.com/package/cordova?activeTab=versions ARG CORDOVA_VERSION=12.0.0 #https://developer.android.com/studio#command-tools ARG ANDROID_CMDTOOLS_VERSION=11076708 LABEL maintainer="Hamdi Fourati <contact@hamdifourati.info>" WORKDIR /opt/src ENV JAVA_HOME /opt/java/openjdk/ ENV ANDROID_SDK_ROOT /usr/local/android-sdk-linux ENV ANDROID_HOME $ANDROID_SDK_ROOT ENV GRADLE_USER_HOME /opt/gradle ENV PATH $PATH:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$GRADLE_USER_HOME/bin # Tools RUN apt update && apt -qq install -y git # NodeJS RUN echo https://deb.nodesource.com/setup_${NODEJS_VERSION}.x RUN curl -sL https://deb.nodesource.com/setup_${NODEJS_VERSION}.x | bash - RUN apt -qq install -y nodejs # Cordova RUN npm i -g cordova@${CORDOVA_VERSION} # Gradle RUN apt -qq install -y unzip RUN curl -so /tmp/gradle-${GRADLE_VERSION}-bin.zip https://downloads.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip && \ unzip -qd /opt /tmp/gradle-${GRADLE_VERSION}-bin.zip && \ ln -s /opt/gradle-${GRADLE_VERSION} /opt/gradle # Android RUN curl -so /tmp/commandlinetools-linux-${ANDROID_CMDTOOLS_VERSION}_latest.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDTOOLS_VERSION}_latest.zip && \ mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/ && \ unzip -qd $ANDROID_SDK_ROOT/cmdline-tools/ /tmp/commandlinetools-linux-${ANDROID_CMDTOOLS_VERSION}_latest.zip && \ mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest # 打补丁 RUN sdkmanager "platforms;android-34" RUN sdkmanager "build-tools;34.0.0" RUN wget https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.deb RUN dpkg -i jdk-17.0.12_linux-x64_bin.deb RUN export JAVA_HOME=/usr/lib/jvm/jdk-17.0.12-oracle-x64 RUN export PATH=$JAVA_HOME/bin:$PATH RUN apt-get install -y vim # Update and accept licences COPY android.packages android.packages RUN ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | sdkmanager --package_file=android.packages

android.packages

platforms;android-34 build-tools;34.0.0
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:没想好

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!