【发布时间】:2022-08-18 18:00:48
【问题描述】:
由于 Google 在 Google Play 控制台上将最低 sdk 提高到 31,我不得不对 Android 12 进行一些更改和更新,但是当我尝试添加新的 Android 平台 android@11 时,我遇到了关于已更改的闪存的此错误科尔多瓦11
谁能帮助我?
非常感谢您提前
这是错误:
Cannot read properties of null (reading \'find\')
TypeError: Cannot read properties of null (reading \'find\')
at E:\\DEV\\IONIC\\donateApp_cord\\node_modules\\cordova-android\\lib\\prepare.js:387:49
at Array.forEach (<anonymous>)
at updateProjectSplashScreen (E:\\DEV\\IONIC\\donateApp_cord\\node_modules\\cordova-android\\lib\\prepare.js:384:7)
at updateProjectAccordingTo (E:\\DEV\\IONIC\\donateApp_cord\\node_modules\\cordova-android\\lib\\prepare.js:269:5)
at E:\\DEV\\IONIC\\donateApp_cord\\node_modules\\cordova-android\\lib\\prepare.js:67:21
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Promise.all (index 0)
[ERROR] An error occurred while running subprocess cordova.
cordova.cmd platform add android@11 --verbose exited with exit code 1.
引发错误的文件是:E:\\DEV\\IONIC\\donateApp_cord\\node_modules\\cordova-android\\lib\\prepare.js
function updateProjectSplashScreen (platformConfig, locations) {
// res/values/themes.xml
const themes = xmlHelpers.parseElementtreeSync(locations.themes);
const splashScreenTheme = themes.find(\'style[@name=\"Theme.App.SplashScreen\"]\');
[
\'windowSplashScreenAnimatedIcon\',
\'windowSplashScreenAnimationDuration\',
\'windowSplashScreenBackground\',
\'windowSplashScreenBrandingImage\',
\'windowSplashScreenIconBackgroundColor\',
\'postSplashScreenTheme\'
].forEach(themeKey => {
const cdvConfigPrefKey = \'Android\' + themeKey.charAt(0).toUpperCase() + themeKey.slice(1);
const cdvConfigPrefValue = platformConfig.getPreference(cdvConfigPrefKey, this.platform);
let themeTargetNode = splashScreenTheme.find(`item[@name=\"${themeKey}\"]`);
switch (themeKey) {
case \'windowSplashScreenBackground\':
// use the user defined value for \"colors.xml\"
updateProjectSplashScreenBackgroundColor(cdvConfigPrefValue, locations);
// force the themes value to `@color/cdv_splashscreen_background`
themeTargetNode.text = \'@color/cdv_splashscreen_background\';
break;
case \'windowSplashScreenAnimatedIcon\':
// handle here the cases of \"png\" vs \"xml\" (drawable)
// If \"png\":
// - Clear out default or previous set \"drawable/ic_cdv_splashscreen.xml\" if exisiting.
// - Copy png in correct mipmap dir with name \"ic_cdv_splashscreen.png\"
// If \"xml\":
// - Clear out \"{mipmap}/ic_cdv_splashscreen.png\" if existing.
// - Copy xml into drawable dir with name \"ic_cdv_splashscreen.xml\"
// updateProjectSplashScreenIcon()
// value should change depending on case:
// If \"png\": \"@mipmap/ic_cdv_splashscreen\"
// If \"xml\": \"@drawable/ic_cdv_splashscreen\"
updateProjectSplashScreenImage(locations, themeKey, cdvConfigPrefKey, cdvConfigPrefValue);
break;
case \'windowSplashScreenBrandingImage\':
// display warning only when set.
if (cdvConfigPrefValue) {
events.emit(\'warn\', `\"${themeKey}\" is currently not supported by the splash screen compatibility library. https://issuetracker.google.com/issues/194301890`);
}
updateProjectSplashScreenImage(locations, themeKey, cdvConfigPrefKey, cdvConfigPrefValue);
// force the themes value to `@color/cdv_splashscreen_icon_background`
if (!cdvConfigPrefValue && themeTargetNode) {
splashScreenTheme.remove(themeTargetNode);
} else if (cdvConfigPrefValue) {
// if there is no current node, create a new node.
if (!themeTargetNode) {
themeTargetNode = themes.getroot().makeelement(\'item\', { name: themeKey });
splashScreenTheme.append(themeTargetNode);
}
// set the user defined color.
themeTargetNode.text = \'@drawable/ic_cdv_splashscreen_branding\';
}
break;
case \'windowSplashScreenIconBackgroundColor\':
// use the user defined value for \"colors.xml\"
updateProjectSplashScreenIconBackgroundColor(cdvConfigPrefValue, locations);
// force the themes value to `@color/cdv_splashscreen_icon_background`
if (!cdvConfigPrefValue && themeTargetNode) {
// currentItem.remove();
splashScreenTheme.remove(themeTargetNode);
} else if (cdvConfigPrefValue) {
// if there is no current color, create a new node.
if (!themeTargetNode) {
themeTargetNode = themes.getroot().makeelement(\'item\', { name: themeKey });
splashScreenTheme.append(themeTargetNode);
}
// set the user defined color.
themeTargetNode.text = \'@color/cdv_splashscreen_icon_background\';
}
break;
case \'windowSplashScreenAnimationDuration\':
themeTargetNode.text = cdvConfigPrefValue || \'200\';
break;
case \'postSplashScreenTheme\':
themeTargetNode.text = cdvConfigPrefValue || \'@style/Theme.AppCompat.NoActionBar\';
break;
default:
events.emit(\'warn\', `The theme property \"${themeKey}\" does not exist`);
}
});
fs.writeFileSync(locations.themes, themes.write({ indent: 4 }), \'utf-8\');
events.emit(\'verbose\', \'Wrote out Android application themes to \' + locations.themes);
}
在 foreach 上的 splashScreenTheme.find 功能上,有人可以帮我吗?
-
我也有同样的问题。你找到解决办法了吗?
标签: cordova ionic-framework android-12