Set custom flutter_assets by add FLTAssetsPath to AppFrameworkInfo.plist (#29499)
* Get FLTAssetsPath from AppFrameworkInfo.plist
diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh
index 1bf2310..f8f3a2f 100755
--- a/packages/flutter_tools/bin/xcode_backend.sh
+++ b/packages/flutter_tools/bin/xcode_backend.sh
@@ -46,6 +46,19 @@
target_path="${FLUTTER_TARGET}"
fi
+ local derived_dir="${SOURCE_ROOT}/Flutter"
+ if [[ -e "${project_path}/.ios" ]]; then
+ derived_dir="${project_path}/.ios/Flutter"
+ fi
+
+ # Default value of assets_path is flutter_assets
+ local assets_path="flutter_assets"
+ # The value of assets_path can set by add FLTAssetsPath to AppFrameworkInfo.plist
+ FLTAssetsPath=$(/usr/libexec/PlistBuddy -c "Print :FLTAssetsPath" "${derived_dir}/AppFrameworkInfo.plist" 2>/dev/null)
+ if [[ -n "$FLTAssetsPath" ]]; then
+ assets_path="${FLTAssetsPath}"
+ fi
+
# Use FLUTTER_BUILD_MODE if it's set, otherwise use the Xcode build configuration name
# This means that if someone wants to use an Xcode build config other than Debug/Profile/Release,
# they _must_ set FLUTTER_BUILD_MODE so we know what type of artifact to build.
@@ -87,10 +100,6 @@
AssertExists "${framework_path}"
AssertExists "${project_path}"
- local derived_dir="${SOURCE_ROOT}/Flutter"
- if [[ -e "${project_path}/.ios" ]]; then
- derived_dir="${project_path}/.ios/Flutter"
- fi
RunCommand mkdir -p -- "$derived_dir"
AssertExists "$derived_dir"
@@ -248,7 +257,7 @@
--target="${target_path}" \
--${build_mode} \
--depfile="${build_dir}/snapshot_blob.bin.d" \
- --asset-dir="${derived_dir}/App.framework/flutter_assets" \
+ --asset-dir="${derived_dir}/App.framework/${assets_path}" \
${precompilation_flag} \
${flutter_engine_flag} \
${local_engine_flag} \