expo icon indicating copy to clipboard operation
expo copied to clipboard

in `android.intentFilters`, `pathAdvancedPattern` is rejected by JSON schema

Open billinghamj opened this issue 1 year ago • 6 comments

Summary

pathAdvancedPattern is one of the fields allowed by Android for intent filters - https://developer.android.com/guide/topics/manifest/data-element#path - introduced in API 31

When it is used in the android.intentFilters config section, it mostly works fine - there's no typing errors, it is generated correctly, etc. But when running expo-cli doctor, it's rejected

Environment

  expo-env-info 1.0.5 environment info:
    System:
      OS: macOS 13.3.1
      Shell: 5.9 - /bin/zsh
    Binaries:
      Node: 19.9.0 - /opt/homebrew/bin/node
      Yarn: 3.5.0 - /opt/homebrew/bin/yarn
      npm: 9.6.3 - /opt/homebrew/bin/npm
    Managers:
      CocoaPods: 1.12.0 - /opt/homebrew/bin/pod
    SDKs:
      iOS SDK:
        Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4
    IDEs:
      Xcode: 14.3/14E222b - /usr/bin/xcodebuild
    npmGlobalPackages:
      eas-cli: 3.10.2
      expo-cli: 6.3.7
    Expo Workflow: managed

Please specify your device/emulator/simulator platform, model and version

Android 13, no specific device

Error output

Error: Problems validating fields in app.json. Learn more: https://docs.expo.dev/workflow/configuration/
 • Field: android/intentFilters/0/data - must be object.
 • Field: android/intentFilters/0/data/1 - should NOT have additional property 'pathAdvancedPattern'.
 • Field: android/intentFilters/0/data - must match a schema in anyOf.

Reproducible demo or steps to reproduce from a blank project

app.config.ts:

import { ConfigContext, ExpoConfig } from '@expo/config';

export default (context: ConfigContext): ExpoConfig => {
	return {
		...context.config,
		version: '1.0.0',
		android: {
			package: 'com.jamesbillingham.testapp',
			intentFilters: [
				{
					autoVerify: true,
					action: 'VIEW',
					category: ['BROWSABLE', 'DEFAULT'],
					data: {
						scheme: 'https',
						host: 'testapp.jamesbillingham.com',
						pathAdvancedPattern: '/[^.~_-].*',
					},
				},
			],
		},
		plugins: [
			['expo-build-properties', {
				android: {
					minSdkVersion: 31,
					compileSdkVersion: 33,
					targetSdkVersion: 33,
					buildToolsVersion: '33.0.1',
				},
			}],
		],
	};
};

billinghamj avatar Apr 28 '23 19:04 billinghamj