SDK38 Suddenly asking to access photos

Please provide the following:

  1. 38:
  2. iOS

Hi, I have stumbled upon a weird issue.
I have upgraded to SDK38, no changes to the code, built, then released to test-flight, the app now asks for access to photos.
I have made 0 changes to the code other than updating expo and relative libraries.

I did a project-wide search for CAMERA_ROLL and nothing came back… is this a known issue or am I missing something?

Thanks

Hey @goodonyou,

Can you share your package.json file here?

Cheers,
Adam

1 Like

@adamjnav

package.json

{
  "expo": {
    "name": "***",
    "slug": "***",
    "privacy": "unlisted",
    "platforms": [
      "ios",
      "android"
    ]
  }
}

app.config.js

// eslint-disable-next-line arrow-body-style
export default ({ config }) => {
  // Merges original config from app.json with the rest
  return {
    ...config,
    version: 'x.x.x',
    facebookScheme: '***',
    facebookAppId: '***',
    facebookDisplayName: '***',
    orientation: 'portrait',
    splash: {
      image: './assets/splash.png',
      resizeMode: 'contain',
      backgroundColor: '#1B1B1B',
    },
    updates: {
      enabled: true,
      checkAutomatically: 'ON_LOAD',
      fallbackToCacheTimeout: 0,
    },
    assetBundlePatterns: [
      '**/*',
    ],
    notification: {
      icon: './assets/android/notification-xxxhdpi.png',
      color: '#ffffff',
      iosDisplayInForeground: true,
      androidMode: 'default',
      androidCollapsedTitle: '#{unread_notifications} new events',
    },
    ios: {
      bundleIdentifier: '***',
      buildNumber: '109',
      icon: './assets/icon_ios.png',
      supportsTablet: true,
      usesIcloudStorage: false,
    },
    android: {
      package: '***',
      versionCode: 500014,
      permissions: [
        'ACCESS_COARSE_LOCATION',
        'ACCESS_FINE_LOCATION',
      ],
      icon: './assets/icon_android.png',
      splash: {
        backgroundColor: '#1B1B1B',
        resizeMode: 'contain',
        xxxhdpi: './assets/android/res/drawable-xxxhdpi/shell_launch_background_image.png',
      },
      adaptiveIcon: {
        foregroundImage: './assets/android/androidAdaptiveIcon.png',
        backgroundColor: '#000000',
      },
      googleServicesFile: './google-services.json',
      useNextNotificationsApi: false,
    },
    androidStatusBar: {
      translucent: true,
    },
    hooks: {
      postPublish: [
        {
          file: 'sentry-expo/upload-sourcemaps',
          config: {
            organization: '***',
            project: '***',
            authToken: '***'
          },
        },
      ],
    },
  };
};

Apologies for bumping this, but I would like to undertand… I feel there is a but in the build process somewhere.
Only thing I can think of is that I did one build including the iOS firebase config, then I removed it thinking it might’ve been the culprit.

Any ideas?

Hey @goodonyou, you shared your app.json/config.js but not your package.json. Can you share that please?

HI Adam, you are indeed correct, in the meantime I have tracked down the root cause, which is puzzling to say the least.

import React from 'react';
import { Image } from 'react-native-expo-image-cache';

// preview can be a local image or a data uri
const preview = { uri: ' data:image/png;base64,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' };


const FastImage = ({ source, style }) => {
  const { uri } = source;
  return (
    <Image style={style} {...{ preview, uri }} />
  );
};

export default FastImage;

This is the package: GitHub - wcandillon/react-native-expo-image-cache: React Native Image Cache and Progressive Loading based on Expo

The issue is the base64 encoded preview! If I switch it to a local/remote image it does not happen.

The package worked fine in SDK37 and works fine in Android SDK38, but triggers a request for CAMERA_ROLL permission in iOS SDK38.

I feel like there is something funky going on in expo.

Looking at the code of the package, preview is loaded simply as a React Native image:

{!!preview && (
          <RNImage
            source={preview}
            style={computedStyle}
            blurRadius={Platform.OS === "android" ? 0.5 : 0}
            {...otherProps}
          />
        )}

Thanks

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.