You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo安卓端使用@react-native-community/cameraroll报getPhotos未定义错误

问题解决方案

核心原因

你当前用Expo Go调试使用原生能力的第三方库@react-native-community/cameraroll,Expo 托管工作流(公共Expo Go客户端)不支持该原生模块,另外也存在导入写法、权限适配的潜在问题。

可直接落地的解决步骤

方案1(推荐,适配Expo生态):替换为Expo官方媒体库

Expo 官方封装了兼容托管工作流的媒体访问能力,无需处理原生配置,直接替换即可:

  1. 卸载原社区库
npm uninstall @react-native-community/cameraroll
  1. 安装Expo官方媒体库
expo install expo-media-library
  1. 替换原有代码逻辑,示例参考:
import * as MediaLibrary from 'expo-media-library';

// 权限申请逻辑替换为
const requestPermission = async () => {
  const { granted } = await MediaLibrary.requestPermissionsAsync();
  return granted;
}

// 拉取照片逻辑替换为
const photos = await MediaLibrary.getAssetsAsync({
  first: 20,
  mediaType: MediaLibrary.MediaType.photo,
});

方案2(坚持使用社区cameraroll)

如果必须使用该社区库,需切换出Expo托管工作流:

  1. 执行expo prebuild生成安卓、iOS原生工程目录
  2. 编译自定义Expo开发客户端,后续用自定义客户端代替公共Expo Go调试
  3. 修正导入写法,部分版本的社区cameraroll没有默认导出,把导入语句改为:
import * as CameraRoll from '@react-native-community/cameraroll';
  1. 适配安卓11+权限,在安卓工程的AndroidManifest.xml中补充权限声明:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<!-- 安卓13及以上额外补充 -->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />

内容的提问来源于stack exchange,提问作者Wipster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:48:02