diff --git a/package/src/expo-plugin/withAndroidMLKitVisionModel.ts b/package/src/expo-plugin/withAndroidMLKitVisionModel.ts new file mode 100644 index 0000000..84d1bb5 --- /dev/null +++ b/package/src/expo-plugin/withAndroidMLKitVisionModel.ts @@ -0,0 +1,17 @@ +import { AndroidConfig, ConfigPlugin, withAndroidManifest } from '@expo/config-plugins' + +const { addMetaDataItemToMainApplication, getMainApplicationOrThrow } = AndroidConfig.Manifest + +export const withAndroidMLKitVisionModel: ConfigPlugin = (config) => { + return withAndroidManifest(config, (conf) => { + const androidManifest = conf.modResults + + const mainApplication = getMainApplicationOrThrow(androidManifest) + + addMetaDataItemToMainApplication(mainApplication, 'com.google.mlkit.vision.DEPENDENCIES', 'barcode') + + conf.modResults = androidManifest + + return conf + }) +} diff --git a/package/src/expo-plugin/withVisionCamera.ts b/package/src/expo-plugin/withVisionCamera.ts index 041d0c7..9c7d406 100644 --- a/package/src/expo-plugin/withVisionCamera.ts +++ b/package/src/expo-plugin/withVisionCamera.ts @@ -1,6 +1,7 @@ import { withPlugins, AndroidConfig, ConfigPlugin, createRunOncePlugin } from '@expo/config-plugins' import { withDisableFrameProcessorsAndroid } from './withDisableFrameProcessorsAndroid' import { withDisableFrameProcessorsIOS } from './withDisableFrameProcessorsIOS' +import { withAndroidMLKitVisionModel } from './withAndroidMLKitVisionModel' // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment const pkg = require('../../../package.json') @@ -31,7 +32,7 @@ const withCamera: ConfigPlugin = (config, props = {}) => { config = withDisableFrameProcessorsIOS(config) } - return withPlugins(config, [[AndroidConfig.Permissions.withPermissions, androidPermissions]]) + return withPlugins(config, [[AndroidConfig.Permissions.withPermissions, androidPermissions], withAndroidMLKitVisionModel]) } export default createRunOncePlugin(withCamera, pkg.name, pkg.version)