Expo Managed Workflow项目如何改造以支持原生代码配置?
改造Expo Managed项目以支持原生代码配置
1. 先把Prebuild用对
你执行prebuild后没看到变化,大概率是命令没执行到位:
- 先确认项目根目录的
app.json/app.config.js里,已经配置了ios.bundleIdentifier和android.package(这是生成原生项目的必填参数) - 执行命令时要指定平台,比如
npx expo prebuild --platform ios或npx expo prebuild --platform android,不加平台参数默认会生成两个平台的原生代码 - 执行完成后,项目根目录会多出
ios和android文件夹,这就是你要的原生项目目录,后续所有原生配置都在这里操作
2. 保留TypeScript开发逻辑
所有业务代码、UI组件依然可以用TypeScript写在原有的src或项目根目录下,和之前Managed Workflow的开发方式完全一致。Expo会自动把这些TS代码打包到原生项目里,不需要额外调整。
3. 自定义原生权限配置
iOS端
- 打开
ios/[你的项目名称]/Info.plist,添加需要的权限描述,比如相机权限:<key>NSCameraUsageDescription</key> <string>需要访问相机拍摄照片</string> - 如果要改依赖配置,直接编辑
ios/Podfile,之后执行npx pod-install ios安装依赖即可
Android端
- 打开
android/app/src/main/AndroidManifest.xml,添加权限声明,比如定位权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> - 如需修改gradle配置,直接编辑
android/app/build.gradle或android/build.gradle
4. 后续开发与构建
- 日常开发继续用
npx expo start,Expo会自动识别原生目录的修改,同步到开发环境 - 打包正式版时,既可以用
npx expo run:ios/npx expo run:android直接编译原生项目,也可以用Expo云构建(但云构建需要开启experimental.prebuildFromNative选项,才能识别你在原生目录的自定义修改)
5. 注意事项
- 别随便执行
npx expo prebuild --clean,这个命令会重置原生目录,之前自定义的原生代码会丢失。如果想让配置持久化,可以把权限这类配置写到app.config.js的ios.infoPlist/android.androidManifest字段里,这样prebuild时会自动同步这些配置 - 不要删除
ios和android目录,否则得重新执行prebuild生成 - 原生代码修改后如果遇到依赖冲突,得手动排查Podfile或gradle的配置问题
内容的提问来源于stack exchange,提问作者Cole
相关产品推荐
相关产品推荐

