Ahm*_*war 1 android gradle react-native expo
当我在移动设备中运行应用程序时,我正在使用expo 43
withAmplify
expo run:android
Run Code Online (Sandbox Code Playgroud)
我可以看到我的应用程序在移动设备上运行。
但是当我尝试创建相同的构建时
eas build -p android
Run Code Online (Sandbox Code Playgroud)
我遇到以下错误
Gradle build failed with unknown error. Please see logs for the "Run gradlew" phase
Run Code Online (Sandbox Code Playgroud)
这是 eas json
{
"cli": {
"version": ">= 0.46.0"
},
"build": {
"development": {
"distribution": "internal",
"android": {
"gradleCommand": ":app:assembleDebug"
},
"ios": {
"buildConfiguration": "Debug"
}
},
"preview": {
"distribution": "internal"
},
"production": {}
},
"submit": {
"production": {}
}
}
Run Code Online (Sandbox Code Playgroud)
这是 eas build 的日志
[stderr] 40 | import { enableScreens } from "react-native-screens";
Error: Unable to resolve module ./aws-exports from /root/workingdir/build/App.js:
None of these files exist:
* aws-exports(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)
* aws-exports/index(.native|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json)
40 | import { enableScreens } from "react-native-screens";
41 | import Amplify from 'aws-amplify'
> 42 | import config from './aws-exports'
Run Code Online (Sandbox Code Playgroud)
我的根目录中有 aws-exports.js,它适用于 expo run:android
日志中显示了根本问题:EAS 构建无法解析模块./aws-exports
。
原因有两个:
.gitignore
)aws-exports.js
未复制。因此出现构建错误。我通过使用EAS Secret功能解决了这个问题。诀窍是对aws-exports.js
变量中的内容进行 Base64 编码,即AWS_EXPORTS
。该变量可以在名为 的预安装挂钩中使用eas-build-pre-install
,因此我们可以告诉 EAS 解码该值并将其写回到 中aws-exports.js
,以便该文件在构建时可用。
这是通过在以下位置添加这两个脚本来完成的package.json
:
"aws-export": "echo 'Update Expo AWS_EXPORTS secret with value: \n\n' && cat aws-exports.js |base64"
Run Code Online (Sandbox Code Playgroud)
运行aws-export
脚本,然后通过 Expo 网站上的 Secrets 选项卡或使用eas secret:create
命令设置编码内容。每次在 amplify 中更改某些内容时,不要忘记更新该值以反映 中的本地更改aws-exports.js
!
然后预安装挂钩将解码该值(这由 EAS 自动运行):
"eas-build-pre-install": "echo $AWS_EXPORTS | base64 -d > ./aws-exports.js"
Run Code Online (Sandbox Code Playgroud)
再次运行构建。
归档时间: |
|
查看次数: |
1745 次 |
最近记录: |