Currently there is no way to combine leaf artifacts from a multiplexed build of a product without an additional product to receive such artifacts as inputs from dependencies. Android is served by the current approach because an application, library, and APK are all separate products. An iOS application built for multiple architectures is one product only, and using multiple products for such a case is highly undesirable.
- Nested products? Maybe every profile instance in multiplexing creates a nested product? Product-level Rules can then combine artifacts from child products (which the parent product automatically depends on all of). Downside is reliance on particular items, but customizability remains high
- Rule condition defaults to product.profile !== undefined, product.profile === undefined refers to the "meta build". A product is built for the specified profiles plus the parent profile. The parent profile Rules take effect only for the parent. Or, every product (even non multiplexed) additionally gets built for an invisible profile that can have Rules applied only for that "slice".
- Multiplexing on buildVariant, e.g. to combine debug/release OS X frameworks (
Gradle's "flavors" might be worth looking into as design inspiration. https://docs.gradle.org/current/userguide/nativeBinaries.html#flavors This is used on Android for multiple architectures and multiple APKs.