@expo/prebuild-config 56.0.9 → 56.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -22,8 +22,9 @@ export declare function getAdaptiveIcon(config: ExpoConfig): {
|
|
|
22
22
|
* their respective "mipmap" directories for <= Android 7, and creates a set of adaptive
|
|
23
23
|
* icon files for > Android 7 from the adaptive icon files (if provided).
|
|
24
24
|
*/
|
|
25
|
-
export declare function setIconAsync(projectRoot: string, { icon, backgroundColor, backgroundImage, monochromeImage, isAdaptive, }: {
|
|
25
|
+
export declare function setIconAsync(projectRoot: string, { icon, foregroundImage, backgroundColor, backgroundImage, monochromeImage, isAdaptive, }: {
|
|
26
26
|
icon: string | null;
|
|
27
|
+
foregroundImage?: string | null;
|
|
27
28
|
backgroundColor: string | null;
|
|
28
29
|
backgroundImage: string | null;
|
|
29
30
|
monochromeImage: string | null;
|
|
@@ -91,8 +91,9 @@ const withAndroidIcons = config => {
|
|
|
91
91
|
backgroundImage,
|
|
92
92
|
monochromeImage
|
|
93
93
|
} = getAdaptiveIcon(config);
|
|
94
|
-
const icon =
|
|
95
|
-
|
|
94
|
+
const icon = getIcon(config);
|
|
95
|
+
const hasIcon = icon ?? foregroundImage;
|
|
96
|
+
if (!hasIcon) {
|
|
96
97
|
return config;
|
|
97
98
|
}
|
|
98
99
|
config = (0, _withAndroidManifestIcons().withAndroidManifestIcons)(config);
|
|
@@ -101,6 +102,7 @@ const withAndroidIcons = config => {
|
|
|
101
102
|
return (0, _configPlugins().withDangerousMod)(config, ['android', async config => {
|
|
102
103
|
await setIconAsync(config.modRequest.projectRoot, {
|
|
103
104
|
icon,
|
|
105
|
+
foregroundImage,
|
|
104
106
|
backgroundColor,
|
|
105
107
|
backgroundImage,
|
|
106
108
|
monochromeImage,
|
|
@@ -145,29 +147,34 @@ function getAdaptiveIcon(config) {
|
|
|
145
147
|
*/
|
|
146
148
|
async function setIconAsync(projectRoot, {
|
|
147
149
|
icon,
|
|
150
|
+
foregroundImage,
|
|
148
151
|
backgroundColor,
|
|
149
152
|
backgroundImage,
|
|
150
153
|
monochromeImage,
|
|
151
154
|
isAdaptive
|
|
152
155
|
}) {
|
|
153
|
-
|
|
156
|
+
const legacyIcon = icon ?? foregroundImage;
|
|
157
|
+
const adaptiveForegroundImage = foregroundImage ?? legacyIcon;
|
|
158
|
+
if (!legacyIcon || !adaptiveForegroundImage) {
|
|
154
159
|
return null;
|
|
155
160
|
}
|
|
156
|
-
|
|
161
|
+
const legacyBackgroundImage = icon ? null : backgroundImage;
|
|
162
|
+
const legacyBackgroundColor = icon ? null : backgroundColor;
|
|
163
|
+
await configureLegacyIconAsync(projectRoot, legacyIcon, legacyBackgroundImage, legacyBackgroundColor);
|
|
157
164
|
if (isAdaptive) {
|
|
158
|
-
await generateRoundIconAsync(projectRoot,
|
|
165
|
+
await generateRoundIconAsync(projectRoot, legacyIcon, legacyBackgroundImage, legacyBackgroundColor);
|
|
159
166
|
} else {
|
|
160
167
|
await deleteIconNamedAsync(projectRoot, IC_LAUNCHER_ROUND_WEBP);
|
|
161
168
|
}
|
|
162
|
-
await configureAdaptiveIconAsync(projectRoot,
|
|
169
|
+
await configureAdaptiveIconAsync(projectRoot, adaptiveForegroundImage, backgroundImage, monochromeImage, isAdaptive);
|
|
163
170
|
return true;
|
|
164
171
|
}
|
|
165
172
|
|
|
166
173
|
/**
|
|
167
|
-
* Configures legacy icon files to be used on Android 7 and earlier. If adaptive icon
|
|
168
|
-
* was provided, we create a pseudo-adaptive icon by layering the provided files (or
|
|
169
|
-
* color if no backgroundImage is provided. If no backgroundImage and no backgroundColor
|
|
170
|
-
* the background is set to transparent.)
|
|
174
|
+
* Configures legacy icon files to be used on Android 7 and earlier. If only adaptive icon
|
|
175
|
+
* configuration was provided, we create a pseudo-adaptive icon by layering the provided files (or
|
|
176
|
+
* background color if no backgroundImage is provided. If no backgroundImage and no backgroundColor
|
|
177
|
+
* are provided, the background is set to transparent.)
|
|
171
178
|
*/
|
|
172
179
|
async function configureLegacyIconAsync(projectRoot, icon, backgroundImage, backgroundColor) {
|
|
173
180
|
return generateMultiLayerImageAsync(projectRoot, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withAndroidIcons.js","names":["_configPlugins","data","require","_imageUtils","_fs","_interopRequireDefault","_path","_withAndroidManifestIcons","e","__esModule","default","Colors","AndroidConfig","dpiValues","exports","mdpi","folderName","scale","hdpi","xhdpi","xxhdpi","xxxhdpi","LEGACY_BASELINE_PIXEL_SIZE","ADAPTIVE_BASELINE_PIXEL_SIZE","ANDROID_RES_PATH","MIPMAP_ANYDPI_V26","ICON_BACKGROUND","IC_LAUNCHER_WEBP","IC_LAUNCHER_ROUND_WEBP","IC_LAUNCHER_BACKGROUND_WEBP","IC_LAUNCHER_FOREGROUND_WEBP","IC_LAUNCHER_MONOCHROME_WEBP","IC_LAUNCHER_XML","IC_LAUNCHER_ROUND_XML","withAndroidIcons","config","foregroundImage","backgroundColor","backgroundImage","monochromeImage","getAdaptiveIcon","icon","getIcon","withAndroidManifestIcons","withAndroidAdaptiveIconColors","withDangerousMod","setIconAsync","modRequest","projectRoot","isAdaptive","android","adaptiveIcon","setRoundIconManifest","manifest","application","Manifest","getMainApplicationOrThrow","$","withAndroidColors","modResults","setBackgroundColor","configureLegacyIconAsync","generateRoundIconAsync","deleteIconNamedAsync","configureAdaptiveIconAsync","generateMultiLayerImageAsync","outputImageFileName","imageCacheFolder","backgroundImageCacheFolder","borderRadiusRatio","generateMonochromeImageAsync","backgroundImageFileName","icLauncherXmlString","createAdaptiveIconXmlString","createAdaptiveIconXmlFiles","colors","assignColorValue","value","name","background","iconElements","push","join","add","anyDpiV26Directory","path","resolve","fs","promises","mkdir","recursive","launcherPath","launcherRoundPath","Promise","all","writeFile","map","rm","force","iterateDpiValues","dpiFolder","iconLayer","generateIconAsync","cacheType","src","backgroundLayer","compositeImagesAsync","foreground","monochromeIcon","callback","Object","values","iconSizePx","generateImageAsync","width","height","resizeMode","borderRadius","undefined","source"],"sources":["../../../src/plugins/icons/withAndroidIcons.ts"],"sourcesContent":["import type { ConfigPlugin } from '@expo/config-plugins';\nimport { AndroidConfig, withAndroidColors, withDangerousMod } from '@expo/config-plugins';\nimport type { ResourceXML } from '@expo/config-plugins/build/android/Resources';\nimport type { ExpoConfig } from '@expo/config-types';\nimport { compositeImagesAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { withAndroidManifestIcons } from './withAndroidManifestIcons';\n\nconst { Colors } = AndroidConfig;\n\ntype DPIString = 'mdpi' | 'hdpi' | 'xhdpi' | 'xxhdpi' | 'xxxhdpi';\ntype dpiMap = Record<DPIString, { folderName: string; scale: number }>;\n\nexport const dpiValues: dpiMap = {\n mdpi: { folderName: 'mipmap-mdpi', scale: 1 },\n hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },\n xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },\n xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },\n xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },\n};\n\nconst LEGACY_BASELINE_PIXEL_SIZE = 48;\nconst ADAPTIVE_BASELINE_PIXEL_SIZE = 108;\n\nexport const ANDROID_RES_PATH = 'android/app/src/main/res/';\nconst MIPMAP_ANYDPI_V26 = 'mipmap-anydpi-v26';\nconst ICON_BACKGROUND = 'iconBackground';\nconst IC_LAUNCHER_WEBP = 'ic_launcher.webp';\nconst IC_LAUNCHER_ROUND_WEBP = 'ic_launcher_round.webp';\nconst IC_LAUNCHER_BACKGROUND_WEBP = 'ic_launcher_background.webp';\nconst IC_LAUNCHER_FOREGROUND_WEBP = 'ic_launcher_foreground.webp';\nconst IC_LAUNCHER_MONOCHROME_WEBP = 'ic_launcher_monochrome.webp';\nconst IC_LAUNCHER_XML = 'ic_launcher.xml';\nconst IC_LAUNCHER_ROUND_XML = 'ic_launcher_round.xml';\n\nexport const withAndroidIcons: ConfigPlugin = (config) => {\n const { foregroundImage, backgroundColor, backgroundImage, monochromeImage } =\n getAdaptiveIcon(config);\n const icon = foregroundImage ?? getIcon(config);\n\n if (!icon) {\n return config;\n }\n\n config = withAndroidManifestIcons(config);\n // Apply colors.xml changes\n config = withAndroidAdaptiveIconColors(config, backgroundColor);\n return withDangerousMod(config, [\n 'android',\n async (config) => {\n await setIconAsync(config.modRequest.projectRoot, {\n icon,\n backgroundColor,\n backgroundImage,\n monochromeImage,\n isAdaptive: !!config.android?.adaptiveIcon,\n });\n return config;\n },\n ]);\n};\n\nexport function setRoundIconManifest(\n config: Pick<ExpoConfig, 'android'>,\n manifest: AndroidConfig.Manifest.AndroidManifest\n): AndroidConfig.Manifest.AndroidManifest {\n const isAdaptive = !!config.android?.adaptiveIcon;\n const application = AndroidConfig.Manifest.getMainApplicationOrThrow(manifest);\n\n if (isAdaptive) {\n application.$['android:roundIcon'] = '@mipmap/ic_launcher_round';\n } else {\n delete application.$['android:roundIcon'];\n }\n return manifest;\n}\n\nconst withAndroidAdaptiveIconColors: ConfigPlugin<string | null> = (config, backgroundColor) => {\n return withAndroidColors(config, (config) => {\n config.modResults = setBackgroundColor(backgroundColor ?? '#ffffff', config.modResults);\n return config;\n });\n};\n\nexport function getIcon(config: ExpoConfig) {\n return config.android?.icon || config.icon || null;\n}\n\nexport function getAdaptiveIcon(config: ExpoConfig) {\n return {\n foregroundImage: config.android?.adaptiveIcon?.foregroundImage ?? null,\n backgroundColor: config.android?.adaptiveIcon?.backgroundColor ?? null,\n backgroundImage: config.android?.adaptiveIcon?.backgroundImage ?? null,\n monochromeImage: config.android?.adaptiveIcon?.monochromeImage ?? null,\n };\n}\n\n/**\n * Resizes the user-provided icon to create a set of legacy icon files in\n * their respective \"mipmap\" directories for <= Android 7, and creates a set of adaptive\n * icon files for > Android 7 from the adaptive icon files (if provided).\n */\nexport async function setIconAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n monochromeImage,\n isAdaptive,\n }: {\n icon: string | null;\n backgroundColor: string | null;\n backgroundImage: string | null;\n monochromeImage: string | null;\n isAdaptive: boolean;\n }\n) {\n if (!icon) {\n return null;\n }\n\n await configureLegacyIconAsync(projectRoot, icon, backgroundImage, backgroundColor);\n if (isAdaptive) {\n await generateRoundIconAsync(projectRoot, icon, backgroundImage, backgroundColor);\n } else {\n await deleteIconNamedAsync(projectRoot, IC_LAUNCHER_ROUND_WEBP);\n }\n await configureAdaptiveIconAsync(projectRoot, icon, backgroundImage, monochromeImage, isAdaptive);\n\n return true;\n}\n\n/**\n * Configures legacy icon files to be used on Android 7 and earlier. If adaptive icon configuration\n * was provided, we create a pseudo-adaptive icon by layering the provided files (or background\n * color if no backgroundImage is provided. If no backgroundImage and no backgroundColor are provided,\n * the background is set to transparent.)\n */\nasync function configureLegacyIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n return generateMultiLayerImageAsync(projectRoot, {\n icon,\n backgroundImage,\n backgroundColor,\n outputImageFileName: IC_LAUNCHER_WEBP,\n imageCacheFolder: 'android-standard-square',\n backgroundImageCacheFolder: 'android-standard-square-background',\n });\n}\n\nasync function generateRoundIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n return generateMultiLayerImageAsync(projectRoot, {\n icon,\n borderRadiusRatio: 0.5,\n outputImageFileName: IC_LAUNCHER_ROUND_WEBP,\n backgroundImage,\n backgroundColor,\n imageCacheFolder: 'android-standard-circle',\n backgroundImageCacheFolder: 'android-standard-round-background',\n isAdaptive: false,\n });\n}\n\n/**\n * Configures adaptive icon files to be used on Android 8 and up. A foreground image must be provided,\n * and will have a transparent background unless:\n * - A backgroundImage is provided, or\n * - A backgroundColor was specified\n */\nexport async function configureAdaptiveIconAsync(\n projectRoot: string,\n foregroundImage: string,\n backgroundImage: string | null,\n monochromeImage: string | null,\n isAdaptive: boolean\n) {\n if (monochromeImage) {\n await generateMonochromeImageAsync(projectRoot, {\n icon: monochromeImage,\n imageCacheFolder: 'android-adaptive-monochrome',\n outputImageFileName: IC_LAUNCHER_MONOCHROME_WEBP,\n });\n }\n await generateMultiLayerImageAsync(projectRoot, {\n backgroundColor: 'transparent',\n backgroundImage,\n backgroundImageCacheFolder: 'android-adaptive-background',\n outputImageFileName: IC_LAUNCHER_FOREGROUND_WEBP,\n icon: foregroundImage,\n imageCacheFolder: 'android-adaptive-foreground',\n backgroundImageFileName: IC_LAUNCHER_BACKGROUND_WEBP,\n isAdaptive: true,\n });\n\n // create ic_launcher.xml and ic_launcher_round.xml\n const icLauncherXmlString = createAdaptiveIconXmlString(backgroundImage, monochromeImage);\n await createAdaptiveIconXmlFiles(\n projectRoot,\n icLauncherXmlString,\n // If the user only defined icon and not android.adaptiveIcon, then skip enabling the layering system\n // this will scale the image down and present it uncropped.\n isAdaptive\n );\n}\n\nfunction setBackgroundColor(backgroundColor: string | null, colors: ResourceXML) {\n return Colors.assignColorValue(colors, {\n value: backgroundColor,\n name: ICON_BACKGROUND,\n });\n}\n\nexport const createAdaptiveIconXmlString = (\n backgroundImage: string | null,\n monochromeImage: string | null\n) => {\n const background = backgroundImage ? `@mipmap/ic_launcher_background` : `@color/iconBackground`;\n\n const iconElements: string[] = [\n `<background android:drawable=\"${background}\"/>`,\n '<foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>',\n ];\n\n if (monochromeImage) {\n iconElements.push('<monochrome android:drawable=\"@mipmap/ic_launcher_monochrome\"/>');\n }\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n ${iconElements.join('\\n ')}\n</adaptive-icon>`;\n};\n\nasync function createAdaptiveIconXmlFiles(\n projectRoot: string,\n icLauncherXmlString: string,\n add: boolean\n) {\n const anyDpiV26Directory = path.resolve(projectRoot, ANDROID_RES_PATH, MIPMAP_ANYDPI_V26);\n await fs.promises.mkdir(anyDpiV26Directory, { recursive: true });\n const launcherPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_XML);\n const launcherRoundPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_ROUND_XML);\n if (add) {\n await Promise.all([\n fs.promises.writeFile(launcherPath, icLauncherXmlString, 'utf8'),\n fs.promises.writeFile(launcherRoundPath, icLauncherXmlString, 'utf8'),\n ]);\n } else {\n // Remove the xml if the icon switches from adaptive to standard.\n await Promise.all(\n [launcherPath, launcherRoundPath].map(async (path) => {\n return fs.promises.rm(path, { force: true });\n })\n );\n }\n}\n\nasync function generateMultiLayerImageAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n imageCacheFolder,\n backgroundImageCacheFolder,\n borderRadiusRatio,\n outputImageFileName,\n backgroundImageFileName,\n isAdaptive,\n }: {\n icon: string;\n backgroundImage: string | null;\n backgroundColor: string | null;\n imageCacheFolder: string;\n backgroundImageCacheFolder: string;\n backgroundImageFileName?: string;\n borderRadiusRatio?: number;\n outputImageFileName: string;\n isAdaptive?: boolean;\n }\n) {\n await iterateDpiValues(projectRoot, async ({ dpiFolder, scale }) => {\n let iconLayer = await generateIconAsync(projectRoot, {\n cacheType: imageCacheFolder,\n src: icon,\n scale,\n // backgroundImage overrides backgroundColor\n backgroundColor: backgroundImage ? 'transparent' : (backgroundColor ?? 'transparent'),\n borderRadiusRatio,\n isAdaptive,\n });\n\n if (backgroundImage) {\n const backgroundLayer = await generateIconAsync(projectRoot, {\n cacheType: backgroundImageCacheFolder,\n src: backgroundImage,\n scale,\n backgroundColor: 'transparent',\n borderRadiusRatio,\n isAdaptive,\n });\n\n if (backgroundImageFileName) {\n await fs.promises.writeFile(\n path.resolve(dpiFolder, backgroundImageFileName),\n backgroundLayer\n );\n } else {\n iconLayer = await compositeImagesAsync({\n foreground: iconLayer,\n background: backgroundLayer,\n });\n }\n } else if (backgroundImageFileName) {\n // Remove any instances of ic_launcher_background.png that are there from previous icons\n await deleteIconNamedAsync(projectRoot, backgroundImageFileName);\n }\n\n await fs.promises.mkdir(dpiFolder, { recursive: true });\n await fs.promises.writeFile(path.resolve(dpiFolder, outputImageFileName), iconLayer);\n });\n}\n\nasync function generateMonochromeImageAsync(\n projectRoot: string,\n {\n icon,\n imageCacheFolder,\n outputImageFileName,\n }: { icon: string; imageCacheFolder: string; outputImageFileName: string }\n) {\n await iterateDpiValues(projectRoot, async ({ dpiFolder, scale }) => {\n const monochromeIcon = await generateIconAsync(projectRoot, {\n cacheType: imageCacheFolder,\n src: icon,\n scale,\n backgroundColor: 'transparent',\n isAdaptive: true,\n });\n await fs.promises.mkdir(dpiFolder, { recursive: true });\n await fs.promises.writeFile(path.resolve(dpiFolder, outputImageFileName), monochromeIcon);\n });\n}\n\nfunction iterateDpiValues(\n projectRoot: string,\n callback: (value: { dpiFolder: string; folderName: string; scale: number }) => Promise<void>\n) {\n return Promise.all(\n Object.values(dpiValues).map((value) =>\n callback({\n dpiFolder: path.resolve(projectRoot, ANDROID_RES_PATH, value.folderName),\n ...value,\n })\n )\n );\n}\n\nasync function deleteIconNamedAsync(projectRoot: string, name: string) {\n return iterateDpiValues(projectRoot, ({ dpiFolder }) => {\n return fs.promises.rm(path.resolve(dpiFolder, name), { force: true });\n });\n}\n\nasync function generateIconAsync(\n projectRoot: string,\n {\n cacheType,\n src,\n scale,\n backgroundColor,\n borderRadiusRatio,\n isAdaptive,\n }: {\n cacheType: string;\n src: string;\n scale: number;\n backgroundColor: string;\n borderRadiusRatio?: number;\n isAdaptive?: boolean;\n }\n) {\n const iconSizePx =\n (isAdaptive ? ADAPTIVE_BASELINE_PIXEL_SIZE : LEGACY_BASELINE_PIXEL_SIZE) * scale;\n\n return (\n await generateImageAsync(\n { projectRoot, cacheType },\n {\n src,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n borderRadius: borderRadiusRatio ? iconSizePx * borderRadiusRatio : undefined,\n }\n )\n ).source;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"withAndroidIcons.js","names":["_configPlugins","data","require","_imageUtils","_fs","_interopRequireDefault","_path","_withAndroidManifestIcons","e","__esModule","default","Colors","AndroidConfig","dpiValues","exports","mdpi","folderName","scale","hdpi","xhdpi","xxhdpi","xxxhdpi","LEGACY_BASELINE_PIXEL_SIZE","ADAPTIVE_BASELINE_PIXEL_SIZE","ANDROID_RES_PATH","MIPMAP_ANYDPI_V26","ICON_BACKGROUND","IC_LAUNCHER_WEBP","IC_LAUNCHER_ROUND_WEBP","IC_LAUNCHER_BACKGROUND_WEBP","IC_LAUNCHER_FOREGROUND_WEBP","IC_LAUNCHER_MONOCHROME_WEBP","IC_LAUNCHER_XML","IC_LAUNCHER_ROUND_XML","withAndroidIcons","config","foregroundImage","backgroundColor","backgroundImage","monochromeImage","getAdaptiveIcon","icon","getIcon","hasIcon","withAndroidManifestIcons","withAndroidAdaptiveIconColors","withDangerousMod","setIconAsync","modRequest","projectRoot","isAdaptive","android","adaptiveIcon","setRoundIconManifest","manifest","application","Manifest","getMainApplicationOrThrow","$","withAndroidColors","modResults","setBackgroundColor","legacyIcon","adaptiveForegroundImage","legacyBackgroundImage","legacyBackgroundColor","configureLegacyIconAsync","generateRoundIconAsync","deleteIconNamedAsync","configureAdaptiveIconAsync","generateMultiLayerImageAsync","outputImageFileName","imageCacheFolder","backgroundImageCacheFolder","borderRadiusRatio","generateMonochromeImageAsync","backgroundImageFileName","icLauncherXmlString","createAdaptiveIconXmlString","createAdaptiveIconXmlFiles","colors","assignColorValue","value","name","background","iconElements","push","join","add","anyDpiV26Directory","path","resolve","fs","promises","mkdir","recursive","launcherPath","launcherRoundPath","Promise","all","writeFile","map","rm","force","iterateDpiValues","dpiFolder","iconLayer","generateIconAsync","cacheType","src","backgroundLayer","compositeImagesAsync","foreground","monochromeIcon","callback","Object","values","iconSizePx","generateImageAsync","width","height","resizeMode","borderRadius","undefined","source"],"sources":["../../../src/plugins/icons/withAndroidIcons.ts"],"sourcesContent":["import type { ConfigPlugin } from '@expo/config-plugins';\nimport { AndroidConfig, withAndroidColors, withDangerousMod } from '@expo/config-plugins';\nimport type { ResourceXML } from '@expo/config-plugins/build/android/Resources';\nimport type { ExpoConfig } from '@expo/config-types';\nimport { compositeImagesAsync, generateImageAsync } from '@expo/image-utils';\nimport fs from 'fs';\nimport path from 'path';\n\nimport { withAndroidManifestIcons } from './withAndroidManifestIcons';\n\nconst { Colors } = AndroidConfig;\n\ntype DPIString = 'mdpi' | 'hdpi' | 'xhdpi' | 'xxhdpi' | 'xxxhdpi';\ntype dpiMap = Record<DPIString, { folderName: string; scale: number }>;\n\nexport const dpiValues: dpiMap = {\n mdpi: { folderName: 'mipmap-mdpi', scale: 1 },\n hdpi: { folderName: 'mipmap-hdpi', scale: 1.5 },\n xhdpi: { folderName: 'mipmap-xhdpi', scale: 2 },\n xxhdpi: { folderName: 'mipmap-xxhdpi', scale: 3 },\n xxxhdpi: { folderName: 'mipmap-xxxhdpi', scale: 4 },\n};\n\nconst LEGACY_BASELINE_PIXEL_SIZE = 48;\nconst ADAPTIVE_BASELINE_PIXEL_SIZE = 108;\n\nexport const ANDROID_RES_PATH = 'android/app/src/main/res/';\nconst MIPMAP_ANYDPI_V26 = 'mipmap-anydpi-v26';\nconst ICON_BACKGROUND = 'iconBackground';\nconst IC_LAUNCHER_WEBP = 'ic_launcher.webp';\nconst IC_LAUNCHER_ROUND_WEBP = 'ic_launcher_round.webp';\nconst IC_LAUNCHER_BACKGROUND_WEBP = 'ic_launcher_background.webp';\nconst IC_LAUNCHER_FOREGROUND_WEBP = 'ic_launcher_foreground.webp';\nconst IC_LAUNCHER_MONOCHROME_WEBP = 'ic_launcher_monochrome.webp';\nconst IC_LAUNCHER_XML = 'ic_launcher.xml';\nconst IC_LAUNCHER_ROUND_XML = 'ic_launcher_round.xml';\n\nexport const withAndroidIcons: ConfigPlugin = (config) => {\n const { foregroundImage, backgroundColor, backgroundImage, monochromeImage } =\n getAdaptiveIcon(config);\n const icon = getIcon(config);\n const hasIcon = icon ?? foregroundImage;\n\n if (!hasIcon) {\n return config;\n }\n\n config = withAndroidManifestIcons(config);\n // Apply colors.xml changes\n config = withAndroidAdaptiveIconColors(config, backgroundColor);\n return withDangerousMod(config, [\n 'android',\n async (config) => {\n await setIconAsync(config.modRequest.projectRoot, {\n icon,\n foregroundImage,\n backgroundColor,\n backgroundImage,\n monochromeImage,\n isAdaptive: !!config.android?.adaptiveIcon,\n });\n return config;\n },\n ]);\n};\n\nexport function setRoundIconManifest(\n config: Pick<ExpoConfig, 'android'>,\n manifest: AndroidConfig.Manifest.AndroidManifest\n): AndroidConfig.Manifest.AndroidManifest {\n const isAdaptive = !!config.android?.adaptiveIcon;\n const application = AndroidConfig.Manifest.getMainApplicationOrThrow(manifest);\n\n if (isAdaptive) {\n application.$['android:roundIcon'] = '@mipmap/ic_launcher_round';\n } else {\n delete application.$['android:roundIcon'];\n }\n return manifest;\n}\n\nconst withAndroidAdaptiveIconColors: ConfigPlugin<string | null> = (config, backgroundColor) => {\n return withAndroidColors(config, (config) => {\n config.modResults = setBackgroundColor(backgroundColor ?? '#ffffff', config.modResults);\n return config;\n });\n};\n\nexport function getIcon(config: ExpoConfig) {\n return config.android?.icon || config.icon || null;\n}\n\nexport function getAdaptiveIcon(config: ExpoConfig) {\n return {\n foregroundImage: config.android?.adaptiveIcon?.foregroundImage ?? null,\n backgroundColor: config.android?.adaptiveIcon?.backgroundColor ?? null,\n backgroundImage: config.android?.adaptiveIcon?.backgroundImage ?? null,\n monochromeImage: config.android?.adaptiveIcon?.monochromeImage ?? null,\n };\n}\n\n/**\n * Resizes the user-provided icon to create a set of legacy icon files in\n * their respective \"mipmap\" directories for <= Android 7, and creates a set of adaptive\n * icon files for > Android 7 from the adaptive icon files (if provided).\n */\nexport async function setIconAsync(\n projectRoot: string,\n {\n icon,\n foregroundImage,\n backgroundColor,\n backgroundImage,\n monochromeImage,\n isAdaptive,\n }: {\n icon: string | null;\n foregroundImage?: string | null;\n backgroundColor: string | null;\n backgroundImage: string | null;\n monochromeImage: string | null;\n isAdaptive: boolean;\n }\n) {\n const legacyIcon = icon ?? foregroundImage;\n const adaptiveForegroundImage = foregroundImage ?? legacyIcon;\n\n if (!legacyIcon || !adaptiveForegroundImage) {\n return null;\n }\n\n const legacyBackgroundImage = icon ? null : backgroundImage;\n const legacyBackgroundColor = icon ? null : backgroundColor;\n\n await configureLegacyIconAsync(\n projectRoot,\n legacyIcon,\n legacyBackgroundImage,\n legacyBackgroundColor\n );\n if (isAdaptive) {\n await generateRoundIconAsync(\n projectRoot,\n legacyIcon,\n legacyBackgroundImage,\n legacyBackgroundColor\n );\n } else {\n await deleteIconNamedAsync(projectRoot, IC_LAUNCHER_ROUND_WEBP);\n }\n await configureAdaptiveIconAsync(\n projectRoot,\n adaptiveForegroundImage,\n backgroundImage,\n monochromeImage,\n isAdaptive\n );\n\n return true;\n}\n\n/**\n * Configures legacy icon files to be used on Android 7 and earlier. If only adaptive icon\n * configuration was provided, we create a pseudo-adaptive icon by layering the provided files (or\n * background color if no backgroundImage is provided. If no backgroundImage and no backgroundColor\n * are provided, the background is set to transparent.)\n */\nasync function configureLegacyIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n return generateMultiLayerImageAsync(projectRoot, {\n icon,\n backgroundImage,\n backgroundColor,\n outputImageFileName: IC_LAUNCHER_WEBP,\n imageCacheFolder: 'android-standard-square',\n backgroundImageCacheFolder: 'android-standard-square-background',\n });\n}\n\nasync function generateRoundIconAsync(\n projectRoot: string,\n icon: string,\n backgroundImage: string | null,\n backgroundColor: string | null\n) {\n return generateMultiLayerImageAsync(projectRoot, {\n icon,\n borderRadiusRatio: 0.5,\n outputImageFileName: IC_LAUNCHER_ROUND_WEBP,\n backgroundImage,\n backgroundColor,\n imageCacheFolder: 'android-standard-circle',\n backgroundImageCacheFolder: 'android-standard-round-background',\n isAdaptive: false,\n });\n}\n\n/**\n * Configures adaptive icon files to be used on Android 8 and up. A foreground image must be provided,\n * and will have a transparent background unless:\n * - A backgroundImage is provided, or\n * - A backgroundColor was specified\n */\nexport async function configureAdaptiveIconAsync(\n projectRoot: string,\n foregroundImage: string,\n backgroundImage: string | null,\n monochromeImage: string | null,\n isAdaptive: boolean\n) {\n if (monochromeImage) {\n await generateMonochromeImageAsync(projectRoot, {\n icon: monochromeImage,\n imageCacheFolder: 'android-adaptive-monochrome',\n outputImageFileName: IC_LAUNCHER_MONOCHROME_WEBP,\n });\n }\n await generateMultiLayerImageAsync(projectRoot, {\n backgroundColor: 'transparent',\n backgroundImage,\n backgroundImageCacheFolder: 'android-adaptive-background',\n outputImageFileName: IC_LAUNCHER_FOREGROUND_WEBP,\n icon: foregroundImage,\n imageCacheFolder: 'android-adaptive-foreground',\n backgroundImageFileName: IC_LAUNCHER_BACKGROUND_WEBP,\n isAdaptive: true,\n });\n\n // create ic_launcher.xml and ic_launcher_round.xml\n const icLauncherXmlString = createAdaptiveIconXmlString(backgroundImage, monochromeImage);\n await createAdaptiveIconXmlFiles(\n projectRoot,\n icLauncherXmlString,\n // If the user only defined icon and not android.adaptiveIcon, then skip enabling the layering system\n // this will scale the image down and present it uncropped.\n isAdaptive\n );\n}\n\nfunction setBackgroundColor(backgroundColor: string | null, colors: ResourceXML) {\n return Colors.assignColorValue(colors, {\n value: backgroundColor,\n name: ICON_BACKGROUND,\n });\n}\n\nexport const createAdaptiveIconXmlString = (\n backgroundImage: string | null,\n monochromeImage: string | null\n) => {\n const background = backgroundImage ? `@mipmap/ic_launcher_background` : `@color/iconBackground`;\n\n const iconElements: string[] = [\n `<background android:drawable=\"${background}\"/>`,\n '<foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>',\n ];\n\n if (monochromeImage) {\n iconElements.push('<monochrome android:drawable=\"@mipmap/ic_launcher_monochrome\"/>');\n }\n\n return `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n ${iconElements.join('\\n ')}\n</adaptive-icon>`;\n};\n\nasync function createAdaptiveIconXmlFiles(\n projectRoot: string,\n icLauncherXmlString: string,\n add: boolean\n) {\n const anyDpiV26Directory = path.resolve(projectRoot, ANDROID_RES_PATH, MIPMAP_ANYDPI_V26);\n await fs.promises.mkdir(anyDpiV26Directory, { recursive: true });\n const launcherPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_XML);\n const launcherRoundPath = path.resolve(anyDpiV26Directory, IC_LAUNCHER_ROUND_XML);\n if (add) {\n await Promise.all([\n fs.promises.writeFile(launcherPath, icLauncherXmlString, 'utf8'),\n fs.promises.writeFile(launcherRoundPath, icLauncherXmlString, 'utf8'),\n ]);\n } else {\n // Remove the xml if the icon switches from adaptive to standard.\n await Promise.all(\n [launcherPath, launcherRoundPath].map(async (path) => {\n return fs.promises.rm(path, { force: true });\n })\n );\n }\n}\n\nasync function generateMultiLayerImageAsync(\n projectRoot: string,\n {\n icon,\n backgroundColor,\n backgroundImage,\n imageCacheFolder,\n backgroundImageCacheFolder,\n borderRadiusRatio,\n outputImageFileName,\n backgroundImageFileName,\n isAdaptive,\n }: {\n icon: string;\n backgroundImage: string | null;\n backgroundColor: string | null;\n imageCacheFolder: string;\n backgroundImageCacheFolder: string;\n backgroundImageFileName?: string;\n borderRadiusRatio?: number;\n outputImageFileName: string;\n isAdaptive?: boolean;\n }\n) {\n await iterateDpiValues(projectRoot, async ({ dpiFolder, scale }) => {\n let iconLayer = await generateIconAsync(projectRoot, {\n cacheType: imageCacheFolder,\n src: icon,\n scale,\n // backgroundImage overrides backgroundColor\n backgroundColor: backgroundImage ? 'transparent' : (backgroundColor ?? 'transparent'),\n borderRadiusRatio,\n isAdaptive,\n });\n\n if (backgroundImage) {\n const backgroundLayer = await generateIconAsync(projectRoot, {\n cacheType: backgroundImageCacheFolder,\n src: backgroundImage,\n scale,\n backgroundColor: 'transparent',\n borderRadiusRatio,\n isAdaptive,\n });\n\n if (backgroundImageFileName) {\n await fs.promises.writeFile(\n path.resolve(dpiFolder, backgroundImageFileName),\n backgroundLayer\n );\n } else {\n iconLayer = await compositeImagesAsync({\n foreground: iconLayer,\n background: backgroundLayer,\n });\n }\n } else if (backgroundImageFileName) {\n // Remove any instances of ic_launcher_background.png that are there from previous icons\n await deleteIconNamedAsync(projectRoot, backgroundImageFileName);\n }\n\n await fs.promises.mkdir(dpiFolder, { recursive: true });\n await fs.promises.writeFile(path.resolve(dpiFolder, outputImageFileName), iconLayer);\n });\n}\n\nasync function generateMonochromeImageAsync(\n projectRoot: string,\n {\n icon,\n imageCacheFolder,\n outputImageFileName,\n }: { icon: string; imageCacheFolder: string; outputImageFileName: string }\n) {\n await iterateDpiValues(projectRoot, async ({ dpiFolder, scale }) => {\n const monochromeIcon = await generateIconAsync(projectRoot, {\n cacheType: imageCacheFolder,\n src: icon,\n scale,\n backgroundColor: 'transparent',\n isAdaptive: true,\n });\n await fs.promises.mkdir(dpiFolder, { recursive: true });\n await fs.promises.writeFile(path.resolve(dpiFolder, outputImageFileName), monochromeIcon);\n });\n}\n\nfunction iterateDpiValues(\n projectRoot: string,\n callback: (value: { dpiFolder: string; folderName: string; scale: number }) => Promise<void>\n) {\n return Promise.all(\n Object.values(dpiValues).map((value) =>\n callback({\n dpiFolder: path.resolve(projectRoot, ANDROID_RES_PATH, value.folderName),\n ...value,\n })\n )\n );\n}\n\nasync function deleteIconNamedAsync(projectRoot: string, name: string) {\n return iterateDpiValues(projectRoot, ({ dpiFolder }) => {\n return fs.promises.rm(path.resolve(dpiFolder, name), { force: true });\n });\n}\n\nasync function generateIconAsync(\n projectRoot: string,\n {\n cacheType,\n src,\n scale,\n backgroundColor,\n borderRadiusRatio,\n isAdaptive,\n }: {\n cacheType: string;\n src: string;\n scale: number;\n backgroundColor: string;\n borderRadiusRatio?: number;\n isAdaptive?: boolean;\n }\n) {\n const iconSizePx =\n (isAdaptive ? ADAPTIVE_BASELINE_PIXEL_SIZE : LEGACY_BASELINE_PIXEL_SIZE) * scale;\n\n return (\n await generateImageAsync(\n { projectRoot, cacheType },\n {\n src,\n width: iconSizePx,\n height: iconSizePx,\n resizeMode: 'cover',\n backgroundColor,\n borderRadius: borderRadiusRatio ? iconSizePx * borderRadiusRatio : undefined,\n }\n )\n ).source;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/prebuild-config",
|
|
3
|
-
"version": "56.0.
|
|
3
|
+
"version": "56.0.10",
|
|
4
4
|
"description": "Get the prebuild config",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -27,17 +27,17 @@
|
|
|
27
27
|
"@types/debug": "^4.1.5",
|
|
28
28
|
"@types/semver": "^7.5.8",
|
|
29
29
|
"memfs": "^3.2.0",
|
|
30
|
-
"expo
|
|
31
|
-
"
|
|
30
|
+
"@expo/plist": "0.7.0",
|
|
31
|
+
"expo-module-scripts": "56.0.2"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@expo/config": "~56.0.
|
|
35
|
-
"@expo/config-plugins": "~56.0.
|
|
36
|
-
"@expo/config-types": "^56.0.
|
|
37
|
-
"@expo/image-utils": "^0.
|
|
38
|
-
"@expo/json-file": "^10.
|
|
34
|
+
"@expo/config": "~56.0.8",
|
|
35
|
+
"@expo/config-plugins": "~56.0.7",
|
|
36
|
+
"@expo/config-types": "^56.0.5",
|
|
37
|
+
"@expo/image-utils": "^0.10.0",
|
|
38
|
+
"@expo/json-file": "^10.2.0",
|
|
39
39
|
"@react-native/normalize-colors": "0.85.3",
|
|
40
|
-
"expo-modules-autolinking": "~56.0.
|
|
40
|
+
"expo-modules-autolinking": "~56.0.9",
|
|
41
41
|
"debug": "^4.3.1",
|
|
42
42
|
"resolve-from": "^5.0.0",
|
|
43
43
|
"semver": "^7.6.0"
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "c4c9867a0bcbb188e55ecaec4998e38d33108a5d",
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "tsc --emitDeclarationOnly && babel src --out-dir build --extensions \".ts\" --source-maps --ignore \"src/**/__mocks__/*\",\"src/**/__tests__/*\"",
|
|
51
51
|
"clean": "expo-module clean",
|