当前位置: 首页 > web >正文

Expo项目在本地打包apk的问题

没想到在新公司又用到了React Native,于是配置安卓环境又浪费了我一天时间。

本来我们用的是expo,它可以完全跳过安卓环境来打包项目,走EAS Build。但是官网打包它慢,有时还要排队,我最长打过1个多小时的包,真的是不太能忍。

另一点是因为新项目很可能需要用原生代码去实现某些功能,所以研究了npx expo prebuild,把原项目的android文件夹暴露出来。

然后就开始了痛苦的一天,虽然app\android\gradle\wrapper\gradle-wrapper.properties里替换了distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.13-bin.zip

app\android\build.gradle里也增加了阿里云的路径:

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {maven{ url 'https://maven.aliyun.com/repository/central' }maven{ url 'https://maven.aliyun.com/repository/public' }maven{ url 'https://maven.aliyun.com/repository/google' }maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}google()mavenCentral()}dependencies {classpath('com.android.tools.build:gradle')classpath('com.facebook.react:react-native-gradle-plugin')classpath('org.jetbrains.kotlin:kotlin-gradle-plugin')}
}def reactNativeAndroidDir = new File(providers.exec {workingDir(rootDir)commandLine("node", "--print", "require.resolve('react-native/package.json')")}.standardOutput.asText.get().trim(),"../android"
)allprojects {repositories {maven{ url 'https://maven.aliyun.com/repository/central' }maven{ url 'https://maven.aliyun.com/repository/public' }maven{ url 'https://maven.aliyun.com/repository/google' }maven{ url 'https://maven.aliyun.com/repository/gradle-plugin'}maven {// All of React Native (JS, Obj-C sources, Android binaries) is installed from npmurl(reactNativeAndroidDir)}google()mavenCentral()maven { url 'https://www.jitpack.io' }}
}apply plugin: "expo-root-project"
apply plugin: "com.facebook.react.rootproject"

可真跑起gradlew assembleRelease来,还是慢慢吞吞,下载了一个多小时的.gradle包后跟我说,jdk版本太低,至少应该为11。

晕,原电脑的同事用的是java8…… 换完java11后,又告诉我至少得用java17…… 算了,我直接下java21得了。

在javac -version显示javac 21.0.7的情况下,使用gradlew assembleRelease,还报错找不到java11……

我以为是项目的问题,重来了几次依旧不行。后来才查到,原来是C:\Users\用户\.gradle捣的鬼,所以一上头,直接把这下了一个多小时几个G的.gradle删除。

不管是gradlew assembleRelease还是gradlew clean,还是会继续下载该包的,但鉴于经常有些包请求不到,于是考虑走本地代理,在app\android\gradle.properties中增加配置:

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=7897
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=7897

解决了下载gradle包超级慢的问题,它依旧会报错:缺少ANDROID_HOME配置环境。

果然,还是得把安卓的SDK弄一遍。理论上可以只下载SDK不用下载Android Studio,然而实际官网那个SDK包我是真的不大会用,里面虽然看到个sdkmanager.bat,但不是可视化操作真不如jdk那样安装方便。

退而求其次,干脆还是下载Android Studio吧,结果下载安装时,需要配置代理才能安装SDK。什么mirrors.neusoft.edu.cn、mirrors.aliyun.com都试过,看似通了其实并没有。

The Android SDK location cannot be at the filesystem root

在sdk components setup根本就无法勾选SDK,折腾了几个小时,最后还是换成本地代理解决了。

配置好ANDROID_HOME,终于能让expo项目在本地生成apk了,除了第一次生成有些慢之外,第二次以后生成时间也就一两分钟有点超出我的意料。因为之前用RN写的项目,打个包也至少得跑几分钟的代码,Expo居然能加速这么多?!

http://www.xdnf.cn/news/6665.html

相关文章:

  • Vue主题色切换实现方案(CSS 变量 + 类名切换)
  • 【前端】[vue3] [uni-app]使用 vantUI 框架
  • 使用 OpenCV 将图像中标记特定颜色区域
  • 黑马k8s(九)
  • day 26
  • Python训练营打卡 Day27
  • Java 中使用 Redis 实现消息订阅/发布
  • 三极管知识
  • 根据台账批量制作个人表
  • 5G-A和未来6G技术下的操作系统与移动设备变革:云端化与轻量化的发展趋势
  • 【Pandas】pandas DataFrame kurt
  • 如何让 Google 收录 Github Pages 个人博客
  • go封装将所有数字类型转浮点型,可设置保留几位小数
  • AG-UI 协议:重构多模态交互,开启智能应用新纪元
  • C42-作业练习
  • 光谱相机的空间分辨率和时间分辨率
  • MinIO 开源的分布式文件服务器
  • 三格电子上新了——IO-Link系列集线器
  • 【C++】 —— 笔试刷题day_29
  • el-breadcrumb 面包屑第一项后面怎么写没有分隔符
  • 【实测有效】Edge浏览器打开部分pdf文件显示空白
  • 线程池(ThreadPoolExecutor)实现原理和源码细节是Java高并发面试和实战开发的重点
  • 文件系统交互实现
  • css:无限滚动波浪线
  • Linux du 命令终极指南:从基础到精通
  • 详解具身智能开源数据集:RH20T
  • Maven使用详解:Maven的概述(二)
  • 单片机-STM32部分:18、WiFi模组
  • 真题卷001——算法备赛
  • 小结:JavaScript 模块化工具链