gradle-native
gradle-native copied to clipboard
PBXAggregateTarget used to "build" (e.g. copy) xcframework
PBXAggregateTarget
doesn't seem to have any productReference
. However, in this very particular scenario, the target has a single script build phase which copy a xcframework to a build dir. There are several questions to answer here:
1- Is the outputs of the build phase participate to the implicit dependency resolution?
2- Should build phase output paths be used as target paths of the target? If yes, does it make sense for a target to have multiple output files?
3- PBXAggregateTarget
always has no productReference
?
4- Is this only a Cocoapods thing? Or do other projects use this construct?
Example:
49 DD6DBFB0950D5ACA7BBB5F25E1C1A342 /* MobileVLCKit */ = {
50 isa = PBXAggregateTarget;
51 buildConfigurationList = 46EB2E0000E7B0 /* Build configuration list for PBXAggregateTarget "MobileVLCKit" */;
52 buildPhases = (
53 46EB2E0001A340 /* [CP] Copy XCFrameworks */,
54 );
55 dependencies = (
56 );
57 name = MobileVLCKit;
58 };
[...]
14303 46EB2E0001A340 /* [CP] Copy XCFrameworks */ = {
14304 isa = PBXShellScriptBuildPhase;
14305 buildActionMask = 2147483647;
14306 files = (
14307 );
14308 inputPaths = (
14309 "${PODS_ROOT}/Target Support Files/MobileVLCKit/MobileVLCKit-xcframeworks.sh",
14310 "${PODS_ROOT}/MobileVLCKit/MobileVLCKit.xcframework",
14311 );
14312 name = "[CP] Copy XCFrameworks";
14313 outputPaths = (
14314 "${PODS_XCFRAMEWORKS_BUILD_DIR}/MobileVLCKit/MobileVLCKit.framework",
14315 );
14316 runOnlyForDeploymentPostprocessing = 0;
14317 shellPath = /bin/sh;
14318 shellScript = "\"${PODS_ROOT}/Target Support Files/MobileVLCKit/MobileVLCKit-xcframeworks.sh\"\n";
14319 showEnvVarsInLog = 0;
14320 };