1import { ExpoConfig } from 'expo/config'; 2import { AndroidConfig, ConfigPlugin, withAndroidManifest } from 'expo/config-plugins'; 3 4const { 5 addMetaDataItemToMainApplication, 6 getMainApplicationOrThrow, 7 removeMetaDataItemFromMainApplication, 8} = AndroidConfig.Manifest; 9 10const META_BRANCH_KEY = 'io.branch.sdk.BranchKey'; 11 12export const withBranchAndroid: ConfigPlugin = (config) => { 13 return withAndroidManifest(config, (config) => { 14 config.modResults = setBranchApiKey(config, config.modResults); 15 return config; 16 }); 17}; 18 19export function getBranchApiKey(config: ExpoConfig) { 20 return config.android?.config?.branch?.apiKey ?? null; 21} 22 23export function setBranchApiKey( 24 config: ExpoConfig, 25 androidManifest: AndroidConfig.Manifest.AndroidManifest 26) { 27 const apiKey = getBranchApiKey(config); 28 29 const mainApplication = getMainApplicationOrThrow(androidManifest); 30 31 if (apiKey) { 32 // If the item exists, add it back 33 addMetaDataItemToMainApplication(mainApplication, META_BRANCH_KEY, apiKey); 34 } else { 35 // Remove any existing item 36 removeMetaDataItemFromMainApplication(mainApplication, META_BRANCH_KEY); 37 } 38 return androidManifest; 39} 40