安卓应用打包排队,自己手动打包
faker_pu
·
2026-04-26
·
via LINUX DO - 最新话题
前景:朋友用uniapp开发的app应用,然后抱怨云打包一直排队,大概最近ai的应用太多了,导致排队太多太久了,问我有什么方法可以手动打包的,之前没有接触过安卓打包,然后用ai搜了下可以实现,然后感觉这也是一个商机嘛,自己建一个打包的平台,然后研究了下。 整个流程 Node.js CLI工具 ↓ 调用 Capacitor ↓ 自动生成 Android 项目 ↓ 调用 Gradle 打包 APK 安装工具 1. 安装commandlinetools - 安卓打包需要的环境 - 设置环境变量在cmdline-tools上层目录设ANDROID_HOME - 安装组件sdkmanager "platform-tools" "platforms;android-33" "build-tools;33.0.2" - sdkmanager --licenses 一路y确认 2. 安装capacitor - 前端资源转换成安卓源码 - npm install @capacitor/core @capacitor/cli 3. 安装gradlew - 用来打包安卓应用 操作步骤 1. 先用npm打包 - 我这边用的uniapp,npm run build:h5 2. 用capacitor初始化配置 - npx cap init - 生成安卓应用的基础信息 - 然后我看有些有执行前端资源路径的,我的版本没有看到,然后去capacitor.config.json这个文件中设置webDir,设置前端打包以后的路径,默认是dist,如果静态地址不是这个需要修改 - npx cap android * 生成对应的android文件夹 - npx cap sync android * 把前端资源同步至android包内 **这边如果前端修改了,只需要npx cap sync重新同步至安卓包就可以,其他的可以不做操作** 用gradle打包安卓应用 - 到android,执行**gradlew assembleRelease/gradlew assembleDebug**,release好像是要验证应用签名的,我这边就没有试 - 然后文件就会在**android\app\build\outputs\apk\debug\xxx.apk** 这个目录中,如果是release会在apk下release文件夹中 打包都时候有可能jdk版本不兼容问题 添加configurations.all和ext这两项 我用的新的版本,说jdk17就可以了,但是老是报版本低,后面系统jdk升到21就可以 还有打包的时候有些插件打完以后会有多个版本的kotlin,需要兼容下 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.7.2' classpath 'com.google.gms:google-services:4.4.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } apply from: "variables.gradle" ext { kotlin_version = '1.8.22' } allprojects { configurations.all { resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:1.8.22" force "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.22" force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22" } } repositories { google() mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir } 把apk复制到模拟器或者安卓真机中,或者执行 npx cap run android 可以直接运行到模拟器中 注意事项 如果是用uniapp的uni.request网络请求的话,有可能是用不了,换成fetch就可以,之前封装的uni.request请求工具类,怎么试都打不到后端,后面试了下fetch可以打到后端,但是回报跨域问题,后面后端开启支持跨域就可以了,查了下uniapp是用原生的okhttp去请求做了封装,然后capacitor是用XMLHttpRequest去做请求的。如果换成fetch需要改工具类,有些不规范的接口也需要调整,比如用post请求,但是参数放到url连接中的也会报错,这个请求必须要有body,然后自己需要改接口,改成formdata格式后面就可以。 如果后端http请求,可以添加capacitor配置文件中添加capacitor配置文件中添加或者AndroidManifest.xml中添加android:usesCleartextTraffic=“true”,但是我怎么试都没用,不知道怎么回事 capacitor.config.json配置文件中添加 "server": { "cleartext": true } ------- AndroidManifest.xml文件中添加 <application android:usesCleartextTraffic="true" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> 总结 可以用capacitor来本地打包成安卓应用 打包的时候jdk版本会有要求,以及插件中kotlin会有版本冲突 网络请求不兼容,需要手动修改请求工具类满足请求,可以用fetch或者axios,建议开发的时候用axios开发 安卓对http请求禁用,http网络请求需要混合模式开始,也没找到方法,后面升到https 可以打包简单的安卓应用,也没有试调用系统的功能入相机或其他功能 1 个帖子 - 1 位参与者 阅读完整话题
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。