<commit_before># Apple Bazel definitions - Common Information

## Controlling Builds

Most aspect of your builds should be controlled via the attributes you set on
the rules. However there are some things where Bazel and/or the rules allow you
to opt in/out of something on a per-build basis without the need to express it
in a BUILD file.

### Output Groups {#output_groups}

[Output groups](https://docs.bazel.build/versions/master/skylark/rules.html#requesting-output-files)
are an interface provided by Bazel to signal which files are to be built. By
default, Bazel will build all files in the `default` output group. In addition
to this, rules_apple supports other output groups that can be used to control
which files are requested:

*   `dsyms`: This output group contains all dSYM files generated during the
    build, for the top level target **and** its embedded dependencies. To
    request this output group to be built, use the `--output_groups=+dsyms`
    flag. In order to generate the dSYM files you still need to pass the<commit_msg>Add documentation on bundle size limits.<commit_after># Apple Bazel definitions - Common Information

## Build limits

According to
[Apple's documentation](https://help.apple.com/app-store-connect/#/dev611e0a21f),
iOS and tvOS bundle sizes cannot exceed 4GB in size (limit for watchOS is 75MB).
Because of this, rules_apple does not support building zipped archives that
would be larger than 4GB. If your build outputs would be larger than 4GB (e.g.
test bundles) you'll need to reduce the number of dependencies to fit this limit
(e.g. for test bundles, you can split the targets so that output size is smaller
than 4GB).

## Build outputs

Most aspects of your builds should be controlled via the attributes you set on
the rules. However there are some things where Bazel and/or the rules allow you
to opt in/out of something on a per-build basis without the need to express it
in a BUILD file.

### Output Groups {#output_groups}

[Output groups](https://docs.bazel.build/versions/master/skylark/rules.html#requesting-output-files)
are an interface provided by Bazel to signal which files are to be built. By
default, Bazel will build all files in the `default` output group. In addition
to this, rules_apple supports other output groups that can be used to control
which files are requested:

*   `dsyms`: This output group contains all dSYM files generated during the
    build, for the top level target **and** its embedded dependencies. To
    request this output group to be built, use the `--output_groups=+dsyms`
    flag. In order to generate the dSYM files you still need to pass the
{'fraction_non_alphanumeric': 0.05897920604914934, 'fraction_numerical': 0.004536862003780718, 'mean_word_length': 4.334677419354839, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1156387', 'n_tokens_mistral': 718, 'n_tokens_neox': 691, 'n_words': 385}