├── .cargo
└── config
├── .gitignore
├── Cargo.lock
├── Cargo.toml
├── Info.plist
├── LICENSE-APACHE
├── LICENSE-MIT
├── README.md
├── deploy.sh
├── resources
└── favicon.ico
├── rust-toolchain
├── scripts
├── codesign
│ ├── README.md
│ ├── generate_p12.sh
│ └── generate_private_and_csr.sh
├── create_ipa
├── create_sdk_stub
└── install_ipa
├── sdk_target
└── ios15.yml
├── simple_rust_ios_app.entitlements
└── src
└── main.rs
/.cargo/config:
--------------------------------------------------------------------------------
1 | [build]
2 | target = "aarch64-apple-ios"
3 |
4 | [target.aarch64-apple-ios]
5 | linker = "rust-lld"
6 |
7 | [env]
8 | CC_aarch64-apple-ios = "clang"
9 | IPHONEOS_DEPLOYMENT_TARGET = "7.0"
10 | IPHONEOS_SDKROOT = { value = "sdk/iPhoneOS15.5.sdk", relative = true, force = true }
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /target
2 | /sdk
3 | *.ipa
4 | *.app
5 | .DS_Store
--------------------------------------------------------------------------------
/Cargo.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Cargo.
2 | # It is not intended for manual editing.
3 | version = 3
4 |
5 | [[package]]
6 | name = "bitflags"
7 | version = "1.3.2"
8 | source = "registry+https://github.com/rust-lang/crates.io-index"
9 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
10 |
11 | [[package]]
12 | name = "block"
13 | version = "0.1.6"
14 | source = "registry+https://github.com/rust-lang/crates.io-index"
15 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
16 |
17 | [[package]]
18 | name = "cacao"
19 | version = "0.3.2"
20 | source = "git+https://github.com/ryanmcgrath/cacao.git#afed7cf1515a6c733f7bac1fde410893084aad63"
21 | dependencies = [
22 | "block",
23 | "core-foundation",
24 | "core-graphics",
25 | "dispatch",
26 | "lazy_static",
27 | "libc",
28 | "objc",
29 | "objc_id",
30 | "os_info",
31 | "url",
32 | ]
33 |
34 | [[package]]
35 | name = "cfg-if"
36 | version = "1.0.0"
37 | source = "registry+https://github.com/rust-lang/crates.io-index"
38 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
39 |
40 | [[package]]
41 | name = "core-foundation"
42 | version = "0.9.3"
43 | source = "registry+https://github.com/rust-lang/crates.io-index"
44 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
45 | dependencies = [
46 | "core-foundation-sys",
47 | "libc",
48 | ]
49 |
50 | [[package]]
51 | name = "core-foundation-sys"
52 | version = "0.8.3"
53 | source = "registry+https://github.com/rust-lang/crates.io-index"
54 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
55 |
56 | [[package]]
57 | name = "core-graphics"
58 | version = "0.22.3"
59 | source = "registry+https://github.com/rust-lang/crates.io-index"
60 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
61 | dependencies = [
62 | "bitflags",
63 | "core-foundation",
64 | "core-graphics-types",
65 | "foreign-types",
66 | "libc",
67 | ]
68 |
69 | [[package]]
70 | name = "core-graphics-types"
71 | version = "0.1.1"
72 | source = "registry+https://github.com/rust-lang/crates.io-index"
73 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b"
74 | dependencies = [
75 | "bitflags",
76 | "core-foundation",
77 | "foreign-types",
78 | "libc",
79 | ]
80 |
81 | [[package]]
82 | name = "dispatch"
83 | version = "0.2.0"
84 | source = "registry+https://github.com/rust-lang/crates.io-index"
85 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
86 |
87 | [[package]]
88 | name = "foreign-types"
89 | version = "0.3.2"
90 | source = "registry+https://github.com/rust-lang/crates.io-index"
91 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
92 | dependencies = [
93 | "foreign-types-shared",
94 | ]
95 |
96 | [[package]]
97 | name = "foreign-types-shared"
98 | version = "0.1.1"
99 | source = "registry+https://github.com/rust-lang/crates.io-index"
100 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
101 |
102 | [[package]]
103 | name = "form_urlencoded"
104 | version = "1.1.0"
105 | source = "registry+https://github.com/rust-lang/crates.io-index"
106 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
107 | dependencies = [
108 | "percent-encoding",
109 | ]
110 |
111 | [[package]]
112 | name = "idna"
113 | version = "0.3.0"
114 | source = "registry+https://github.com/rust-lang/crates.io-index"
115 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
116 | dependencies = [
117 | "unicode-bidi",
118 | "unicode-normalization",
119 | ]
120 |
121 | [[package]]
122 | name = "lazy_static"
123 | version = "1.4.0"
124 | source = "registry+https://github.com/rust-lang/crates.io-index"
125 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
126 |
127 | [[package]]
128 | name = "libc"
129 | version = "0.2.134"
130 | source = "registry+https://github.com/rust-lang/crates.io-index"
131 | checksum = "329c933548736bc49fd575ee68c89e8be4d260064184389a5b77517cddd99ffb"
132 |
133 | [[package]]
134 | name = "log"
135 | version = "0.4.17"
136 | source = "registry+https://github.com/rust-lang/crates.io-index"
137 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
138 | dependencies = [
139 | "cfg-if",
140 | ]
141 |
142 | [[package]]
143 | name = "malloc_buf"
144 | version = "0.0.6"
145 | source = "registry+https://github.com/rust-lang/crates.io-index"
146 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
147 | dependencies = [
148 | "libc",
149 | ]
150 |
151 | [[package]]
152 | name = "objc"
153 | version = "0.2.7"
154 | source = "registry+https://github.com/rust-lang/crates.io-index"
155 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
156 | dependencies = [
157 | "malloc_buf",
158 | ]
159 |
160 | [[package]]
161 | name = "objc_id"
162 | version = "0.1.1"
163 | source = "registry+https://github.com/rust-lang/crates.io-index"
164 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
165 | dependencies = [
166 | "objc",
167 | ]
168 |
169 | [[package]]
170 | name = "os_info"
171 | version = "3.5.1"
172 | source = "registry+https://github.com/rust-lang/crates.io-index"
173 | checksum = "c4750134fb6a5d49afc80777394ad5d95b04bc12068c6abb92fae8f43817270f"
174 | dependencies = [
175 | "log",
176 | "serde",
177 | "winapi",
178 | ]
179 |
180 | [[package]]
181 | name = "percent-encoding"
182 | version = "2.2.0"
183 | source = "registry+https://github.com/rust-lang/crates.io-index"
184 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
185 |
186 | [[package]]
187 | name = "proc-macro2"
188 | version = "1.0.46"
189 | source = "registry+https://github.com/rust-lang/crates.io-index"
190 | checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
191 | dependencies = [
192 | "unicode-ident",
193 | ]
194 |
195 | [[package]]
196 | name = "quote"
197 | version = "1.0.21"
198 | source = "registry+https://github.com/rust-lang/crates.io-index"
199 | checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
200 | dependencies = [
201 | "proc-macro2",
202 | ]
203 |
204 | [[package]]
205 | name = "serde"
206 | version = "1.0.145"
207 | source = "registry+https://github.com/rust-lang/crates.io-index"
208 | checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
209 | dependencies = [
210 | "serde_derive",
211 | ]
212 |
213 | [[package]]
214 | name = "serde_derive"
215 | version = "1.0.145"
216 | source = "registry+https://github.com/rust-lang/crates.io-index"
217 | checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
218 | dependencies = [
219 | "proc-macro2",
220 | "quote",
221 | "syn",
222 | ]
223 |
224 | [[package]]
225 | name = "simple_rust_ios_app"
226 | version = "0.1.0"
227 | dependencies = [
228 | "cacao",
229 | ]
230 |
231 | [[package]]
232 | name = "syn"
233 | version = "1.0.101"
234 | source = "registry+https://github.com/rust-lang/crates.io-index"
235 | checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2"
236 | dependencies = [
237 | "proc-macro2",
238 | "quote",
239 | "unicode-ident",
240 | ]
241 |
242 | [[package]]
243 | name = "tinyvec"
244 | version = "1.6.0"
245 | source = "registry+https://github.com/rust-lang/crates.io-index"
246 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
247 | dependencies = [
248 | "tinyvec_macros",
249 | ]
250 |
251 | [[package]]
252 | name = "tinyvec_macros"
253 | version = "0.1.0"
254 | source = "registry+https://github.com/rust-lang/crates.io-index"
255 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
256 |
257 | [[package]]
258 | name = "unicode-bidi"
259 | version = "0.3.8"
260 | source = "registry+https://github.com/rust-lang/crates.io-index"
261 | checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
262 |
263 | [[package]]
264 | name = "unicode-ident"
265 | version = "1.0.4"
266 | source = "registry+https://github.com/rust-lang/crates.io-index"
267 | checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
268 |
269 | [[package]]
270 | name = "unicode-normalization"
271 | version = "0.1.22"
272 | source = "registry+https://github.com/rust-lang/crates.io-index"
273 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
274 | dependencies = [
275 | "tinyvec",
276 | ]
277 |
278 | [[package]]
279 | name = "url"
280 | version = "2.3.1"
281 | source = "registry+https://github.com/rust-lang/crates.io-index"
282 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
283 | dependencies = [
284 | "form_urlencoded",
285 | "idna",
286 | "percent-encoding",
287 | ]
288 |
289 | [[package]]
290 | name = "winapi"
291 | version = "0.3.9"
292 | source = "registry+https://github.com/rust-lang/crates.io-index"
293 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
294 | dependencies = [
295 | "winapi-i686-pc-windows-gnu",
296 | "winapi-x86_64-pc-windows-gnu",
297 | ]
298 |
299 | [[package]]
300 | name = "winapi-i686-pc-windows-gnu"
301 | version = "0.4.0"
302 | source = "registry+https://github.com/rust-lang/crates.io-index"
303 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
304 |
305 | [[package]]
306 | name = "winapi-x86_64-pc-windows-gnu"
307 | version = "0.4.0"
308 | source = "registry+https://github.com/rust-lang/crates.io-index"
309 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
310 |
--------------------------------------------------------------------------------
/Cargo.toml:
--------------------------------------------------------------------------------
1 | [package]
2 | name = "simple_rust_ios_app"
3 | description = "Some simple iOS Rust App for demonstration."
4 | version = "0.1.0"
5 | edition = "2021"
6 |
7 | [dependencies]
8 | cacao = { git = "https://github.com/ryanmcgrath/cacao.git", features = [ "uikit", "autolayout" ], default-features = false }
9 |
--------------------------------------------------------------------------------
/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 21E258
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | simple_rust_ios_app
11 | CFBundleIdentifier
12 | rs.rust.simple-rust-ios-app
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | simple_rust_ios_app
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSupportedPlatforms
22 |
23 | iPhoneOS
24 |
25 | CFBundleVersion
26 | 1
27 | DTCompiler
28 | com.apple.compilers.llvm.clang.1_0
29 | DTPlatformBuild
30 | 19E239
31 | DTPlatformName
32 | iphoneos
33 | DTPlatformVersion
34 | 15.4
35 | DTSDKBuild
36 | 19E239
37 | DTSDKName
38 | iphoneos15.4
39 | DTXcode
40 | 1330
41 | DTXcodeBuild
42 | 13E113
43 | LSRequiresIPhoneOS
44 |
45 | MinimumOSVersion
46 | 15.4
47 | UIApplicationSupportsIndirectInputEvents
48 |
49 | UIDeviceFamily
50 |
51 | 1
52 | 2
53 |
54 | UILaunchScreen
55 |
56 | UILaunchScreen
57 |
58 |
59 | UIRequiredDeviceCapabilities
60 |
61 | arm64
62 | arkit
63 |
64 | UISupportedInterfaceOrientations~ipad
65 |
66 | UIInterfaceOrientationPortrait
67 |
68 | UISupportedInterfaceOrientations~iphone
69 |
70 | UIInterfaceOrientationPortrait
71 |
72 | NSCameraUsageDescription
73 | Need camera access for motion tracking
74 |
75 |
76 |
--------------------------------------------------------------------------------
/LICENSE-APACHE:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
--------------------------------------------------------------------------------
/LICENSE-MIT:
--------------------------------------------------------------------------------
1 | Permission is hereby granted, free of charge, to any
2 | person obtaining a copy of this software and associated
3 | documentation files (the "Software"), to deal in the
4 | Software without restriction, including without
5 | limitation the rights to use, copy, modify, merge,
6 | publish, distribute, sublicense, and/or sell copies of
7 | the Software, and to permit persons to whom the Software
8 | is furnished to do so, subject to the following
9 | conditions:
10 |
11 | The above copyright notice and this permission notice
12 | shall be included in all copies or substantial portions
13 | of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
17 | TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
18 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19 | SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
22 | IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23 | DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # simple_rust_ios_app
2 |
3 | Demonstrate how an iOS application could be build, signed and installed on any OS without the need of any SDK.
4 |
5 | This is based on [ios-beta](https://github.com/ryanmcgrath/cacao/tree/trunk/examples/ios-beta) example from the cocoa repository.
6 |
7 | **Requires Rust 1.64 or upper and [apple-dev-tools-wrapper](https://github.com/marysaka/apple-dev-tools-wrapper)**.
8 |
9 | ## Disclaimer
10 |
11 | This is just a simple PoC.
12 |
13 | The Rust ecosystem doesn't have much bindings around Apple libraries/frameworks (especially for *OS) at the moment, and **when present they are almost always unsafe**.
14 |
15 | You have been warned~!
16 |
17 | ## License
18 |
19 | simple_rust_ios_app is distributed under the terms of either the MIT license or the Apache
20 | License (Version 2.0), at the user's choice.
21 |
22 | See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT).
23 |
--------------------------------------------------------------------------------
/deploy.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | APP_NAME=simple_rust_ios_app
6 | TARGET="aarch64-apple-ios"
7 | PROFILE="release"
8 | USE_CARGO_BUNDLE="0"
9 | PRIVATE_DIRECTORY=../private
10 | SDK_TARGET=sdk_target/ios15.yml
11 | SDK_PATH=./sdk/iPhoneOS15.5.sdk
12 |
13 | mkdir -p $SDK_PATH
14 | ./scripts/create_sdk_stub $SDK_TARGET $SDK_PATH
15 | ./scripts/create_ipa $APP_NAME $PRIVATE_DIRECTORY $TARGET $PROFILE $USE_CARGO_BUNDLE
16 | ./scripts/install_ipa $APP_NAME
17 | #rm $APP_NAME.ipa
18 |
--------------------------------------------------------------------------------
/resources/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marysaka/simple_rust_ios_app/00f5ddf7598c9633a8ca858774148b45f9eefcc5/resources/favicon.ico
--------------------------------------------------------------------------------
/rust-toolchain:
--------------------------------------------------------------------------------
1 | [toolchain]
2 | channel = "stable"
3 | targets = [ "aarch64-apple-ios" ]
4 | profile = "minimal"
5 |
--------------------------------------------------------------------------------
/scripts/codesign/README.md:
--------------------------------------------------------------------------------
1 | # codesign
2 |
3 | Those scripts help the process of getting a new certificate from Apple.
4 |
5 | 1. Use ``generate_private_and_csr.sh`` to generate a private key and a CSR.
6 | 2. Upload it on [Apple Developer website](https://developer.apple.com/account/resources/certificates/add)
7 | 3. Download the resulting certificate and execute ``generate_p12.sh`` to generate the final P12 file that will be used by rcodesign.
8 |
--------------------------------------------------------------------------------
/scripts/codesign/generate_p12.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | if [ "$#" -ne 3 ]; then
6 | echo "usage "
7 | exit 1
8 | fi
9 |
10 | PRIVATE_CERT_PATH=$1
11 | PRIVATE_KEY_PATH=$2
12 | OUTPUT_PRIVATE_P12_PATH=$3
13 |
14 | openssl x509 -in $PRIVATE_CERT_PATH -inform DER -out private.pem -outform PEM
15 | openssl pkcs12 -export -inkey $PRIVATE_KEY_PATH -in private.pem -out $OUTPUT_PRIVATE_P12_PATH
16 | rm private.pem
17 |
--------------------------------------------------------------------------------
/scripts/codesign/generate_private_and_csr.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | if [ "$#" -ne 5 ]; then
6 | echo "usage "
7 | exit 1
8 | fi
9 |
10 | EMAIL=$1
11 | COMMON_NAME=$2
12 | COUNTRY=$3
13 | OUTPUT_PRIVATE_KEY_PATH=$4
14 | OUTPUT_CSR_PATH=$5
15 |
16 | openssl genrsa -out $OUTPUT_PRIVATE_KEY_PATH 2048
17 | openssl req -new -key $OUTPUT_PRIVATE_KEY_PATH -out $OUTPUT_CSR_PATH -subj "/emailAddress=$EMAIL, CN=$COMMON_NAME, C=$COUNTRY"
18 |
--------------------------------------------------------------------------------
/scripts/create_ipa:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | if [ "$#" -ne 5 ]; then
6 | echo "usage "
7 | exit 1
8 | fi
9 |
10 | APP_NAME=$1
11 | PRIVATE_DIRECTORY=$2
12 | TARGET=$3
13 | PROFILE=$4
14 | USE_CARGO_BUNDLE=$5
15 |
16 | # TODO: Make it more temp
17 | TEMPORARY_DIRECTORY=./temp
18 | APP_TEMPORARY_DIRECTORY=$TEMPORARY_DIRECTORY/$APP_NAME.app
19 |
20 | rm -rf $TEMPORARY_DIRECTORY
21 | rm -rf $APP_TEMPORARY_DIRECTORY
22 |
23 | mkdir -p $TEMPORARY_DIRECTORY
24 | mkdir -p $APP_TEMPORARY_DIRECTORY
25 |
26 | if [ "$PROFILE" == "debug" ]; then
27 | cargo build --target $TARGET --profile "dev"
28 | else
29 | cargo build --target $TARGET --profile $PROFILE
30 | fi
31 |
32 | if [ "$USE_CARGO_BUNDLE" == "1" ]; then
33 | if [ "$PROFILE" == "debug" ]; then
34 | cargo bundle --target $TARGET --profile "dev"
35 | else
36 | cargo bundle --target $TARGET --profile $PROFILE
37 | fi
38 |
39 | APP_TEMPORARY_DIRECTORY=target/$TARGET/$PROFILE/bundle/ios/$APP_NAME.app
40 | cp $PRIVATE_DIRECTORY/private.mobileprovision $APP_TEMPORARY_DIRECTORY/embedded.mobileprovision
41 |
42 | # cargo bundle doesn't respect iOS requirement for resources, we handle it manually
43 | cp -r resources/* $APP_TEMPORARY_DIRECTORY
44 | echo -n "APPL????" > $APP_TEMPORARY_DIRECTORY/PkgInfo
45 | else
46 | cp target/$TARGET/$PROFILE/$APP_NAME $APP_TEMPORARY_DIRECTORY/$APP_NAME
47 | cp Info.plist $APP_TEMPORARY_DIRECTORY/Info.plist
48 | cp $PRIVATE_DIRECTORY/private.mobileprovision $APP_TEMPORARY_DIRECTORY/embedded.mobileprovision
49 | cp -r resources/* $APP_TEMPORARY_DIRECTORY
50 | echo -n "APPL????" > $APP_TEMPORARY_DIRECTORY/PkgInfo
51 | fi
52 |
53 |
54 | rcodesign sign --p12-file $PRIVATE_DIRECTORY/private.p12 --p12-password-file $PRIVATE_DIRECTORY/private.pass -e $APP_NAME.entitlements $APP_TEMPORARY_DIRECTORY 2> /dev/null
55 | mkdir -p $TEMPORARY_DIRECTORY/Payload
56 | cp -r $APP_TEMPORARY_DIRECTORY $TEMPORARY_DIRECTORY/Payload
57 | rm -rf $APP_NAME.ipa
58 |
59 | pushd $TEMPORARY_DIRECTORY
60 | zip -r ../$APP_NAME.ipa Payload > /dev/null
61 | popd
62 |
63 | rm -rf $TEMPORARY_DIRECTORY/Payload
64 | rm -rf $APP_TEMPORARY_DIRECTORY
65 | rm -r $TEMPORARY_DIRECTORY
66 |
--------------------------------------------------------------------------------
/scripts/create_sdk_stub:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | from argparse import ArgumentParser
4 | import json
5 | import os
6 | import shutil
7 | import sys
8 | from typing import Any, Dict, List, Optional, Tuple
9 | import yaml
10 |
11 |
12 | def parse_arguments() -> Tuple[str, str]:
13 | parser = ArgumentParser(
14 | description="Create an SDK stub directory from a definition"
15 | )
16 | parser.add_argument("definition_yml_path", help="The YAML definition")
17 | parser.add_argument(
18 | "output_directory", help="The output path to use to store the stub SDK"
19 | )
20 |
21 | args = parser.parse_args()
22 |
23 | definition_yml_path = os.path.abspath(args.definition_yml_path)
24 | output_directory = os.path.abspath(args.output_directory)
25 |
26 | return (definition_yml_path, output_directory)
27 |
28 |
29 | def get_library_name(lib_opaque_object: Any) -> str:
30 | if type(lib_opaque_object) is str:
31 | return lib_opaque_object
32 | elif "name" in lib_opaque_object:
33 | return lib_opaque_object["name"]
34 | else:
35 | raise Exception("TODO")
36 |
37 |
38 | def get_library_path(lib_opaque_object: Any, is_framework: bool) -> str:
39 | if type(lib_opaque_object) is str:
40 | lib_name = lib_opaque_object
41 | if is_framework:
42 | return f"/System/Library/Frameworks/{lib_name}.framework/{lib_name}"
43 | else:
44 | return f"/usr/lib/{lib_name}.dylib"
45 | elif "name" in lib_opaque_object:
46 | lib_name = lib_opaque_object["name"]
47 | if is_framework:
48 | return f"/System/Library/Frameworks/{lib_name}.framework/{lib_name}"
49 | else:
50 | return f"/usr/lib/{lib_name}.dylib"
51 | elif "install_name" in lib_opaque_object:
52 | return lib_opaque_object["install_name"]
53 | else:
54 | raise Exception("TODO")
55 |
56 |
57 | def get_library_tbd_path(lib_opaque_object: Any, is_framework: bool) -> str:
58 | if type(lib_opaque_object) is str:
59 | lib_name = lib_opaque_object
60 | if is_framework:
61 | return f"System/Library/Frameworks/{lib_name}.framework/{lib_name}.tbd"
62 | else:
63 | return f"usr/lib/{lib_name}.tbd"
64 | elif "name" in lib_opaque_object:
65 | lib_name = lib_opaque_object["name"]
66 | if is_framework:
67 | return f"System/Library/Frameworks/{lib_name}.framework/{lib_name}.tbd"
68 | else:
69 | return f"usr/lib/{lib_name}.tbd"
70 | elif "tbd_name" in lib_opaque_object:
71 | if lib_opaque_object["tbd_name"][0] == "/":
72 | return lib_opaque_object["tbd_name"][1:]
73 |
74 | return lib_opaque_object["tbd_name"]
75 | else:
76 | print(lib_opaque_object)
77 | raise Exception("TODO")
78 |
79 |
80 | def get_arch_list(
81 | definition: Dict[str, Any], library_definition: Any
82 | ) -> Optional[List[str]]:
83 | if type(library_definition) is str:
84 | if "archs" in definition:
85 | return definition["archs"]
86 | elif "archs" in library_definition:
87 | return library_definition["archs"]
88 | elif "archs" in definition:
89 | return definition["archs"]
90 | return None
91 |
92 |
93 | def compute_targets(platform_name: str, archs: List[str]) -> str:
94 | targets = []
95 |
96 | for arch in archs:
97 | targets.append(f"{arch}-{platform_name}")
98 |
99 | return ", ".join(targets)
100 |
101 |
102 | def create_tbd_from_library_definition(
103 | output_directory: str,
104 | definition: Dict[str, Any],
105 | library_definition: Any,
106 | is_framework: bool,
107 | ):
108 | platform_name = definition["platform"]
109 | tbd_path = os.path.join(
110 | output_directory, get_library_tbd_path(library_definition, is_framework)
111 | )
112 | directory_name = os.path.dirname(tbd_path)
113 |
114 | os.makedirs(directory_name, exist_ok=True)
115 |
116 | archs = get_arch_list(definition, library_definition)
117 |
118 | if archs is None:
119 | raise Exception(f"Missing archs definition for {tbd_path}")
120 |
121 | with open(tbd_path, "w") as f:
122 | lines = ["--- !tapi-tbd", "tbd-version: 4"]
123 |
124 | targets = compute_targets(platform_name, archs)
125 | lines.append(f"targets: [ {targets} ]")
126 | lines.append(
127 | f"install-name: '{get_library_path(library_definition, is_framework)}'"
128 | )
129 |
130 | if type(library_definition) is not str and "symbols" in library_definition:
131 | symbols = ", ".join(library_definition["symbols"])
132 |
133 | lines.append(f"exports:")
134 | lines.append(f" - targets: [ {targets} ]")
135 | lines.append(f" symbols: [ {symbols} ]")
136 |
137 | lines.append("...")
138 | lines.append("")
139 |
140 | f.write("\n".join(lines))
141 |
142 |
143 | def create_sdk_settings_json(output_directory: str, definition: Dict[str, Any]):
144 | with open(os.path.join(output_directory, "SDKSettings.json"), "w") as sdk_json_file:
145 | detail = {
146 | "DisplayName": definition["display_name"],
147 | "DefaultDeploymentTarget": definition["version"],
148 | "MaximumDeploymentTarget": definition["version"],
149 | "Version": definition["version"],
150 | }
151 |
152 | sdk_json_file.write(json.dumps(detail))
153 |
154 |
155 | def create_sdk_tree(output_directory: str, definition: Dict[str, Any]):
156 | frameworks_list: List[object] = definition["frameworks"]
157 | libraries_list: List[object] = definition["libraries"]
158 |
159 | for framework in frameworks_list:
160 | create_tbd_from_library_definition(
161 | output_directory, definition, framework, True
162 | )
163 |
164 | for library in libraries_list:
165 | create_tbd_from_library_definition(output_directory, definition, library, False)
166 |
167 | create_sdk_settings_json(output_directory, definition)
168 |
169 |
170 | def main(definition_yml_path: str, output_directory: str) -> int:
171 | if not os.path.exists(definition_yml_path):
172 | print("Definition file not found!")
173 | sys.exit(1)
174 |
175 | with open(definition_yml_path, "r") as f:
176 | definition = yaml.safe_load(f)
177 |
178 | if os.path.exists(output_directory):
179 | shutil.rmtree(output_directory)
180 |
181 | create_sdk_tree(output_directory, definition)
182 | return 0
183 |
184 |
185 | if __name__ == "__main__":
186 | (definition_yml_path, output_directory) = parse_arguments()
187 | sys.exit(main(definition_yml_path, output_directory))
188 |
--------------------------------------------------------------------------------
/scripts/install_ipa:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 |
5 | if [ "$#" -ne 1 ]; then
6 | echo "usage "
7 | exit 1
8 | fi
9 |
10 | APP_NAME=$1
11 |
12 | ideviceinstaller --install $APP_NAME.ipa --debug
--------------------------------------------------------------------------------
/sdk_target/ios15.yml:
--------------------------------------------------------------------------------
1 | display_name: iOS 15.5
2 | version: "15.5"
3 | platform: ios
4 | archs: [ armv7, armv7s, arm64, arm64e ]
5 | libraries:
6 | - name: libobjc
7 | install_name: /usr/lib/libobjc.A.dylib
8 | symbols:
9 | - _objc_alloc
10 | - _objc_allocWithZone
11 | - _objc_alloc_init
12 | - _objc_autoreleasePoolPop
13 | - _objc_autoreleasePoolPush
14 | - _objc_autorelease
15 | - _objc_autoreleaseReturnValue
16 | - _objc_copyWeak
17 | - _objc_destroyWeak
18 | - _objc_initWeak
19 | - _objc_loadWeak
20 | - _objc_loadWeakRetained
21 | - _objc_moveWeak
22 | - _objc_retain
23 | - _objc_retainRuntimeFunction
24 | - _objc_retainAutorelease
25 | - _objc_retainAutoreleaseReturnValue
26 | - _objc_retainAutoreleasedReturnValue
27 | - _objc_retainBlock
28 | - _objc_release
29 | - _objc_releaseRuntimeFunction
30 | - _objc_storeStrong
31 | - _objc_storeWeak
32 | - _objc_unsafeClaimAutoreleasedReturnValue
33 | - _objc_getClass
34 | - _objc_getProtocol
35 | - _objc_msgSend
36 | - _objc_msgSendSuper
37 | - _objc_allocateClassPair
38 | - _objc_registerClassPair
39 | - _objc_disposeClassPair
40 | - _class_getName
41 | - _class_getInstanceMethod
42 | - _object_getClass
43 | - _class_addMethod
44 | - _class_addProtocol
45 | - _class_addIvar
46 | - _class_getInstanceVariable
47 | - _class_isMetaClass
48 | - _ivar_getOffset
49 | - _ivar_getTypeEncoding
50 | - _sel_registerName
51 | - _sel_getName
52 | - _method_getName
53 | - _method_copyReturnType
54 | - _method_copyArgumentType
55 | - _method_getNumberOfArguments
56 | - _protocol_getName
57 |
58 | - name: libSystem
59 | install_name: /usr/lib/libSystem.B.dylib
60 | symbols:
61 | - __Block_copy
62 | - __Block_release
63 | - __NSConcreteStackBlock
64 | - __Unwind_Backtrace
65 | - __Unwind_DeleteException
66 | - __Unwind_GetDataRelBase
67 | - __Unwind_GetIP
68 | - __Unwind_GetIPInfo
69 | - __Unwind_GetLanguageSpecificData
70 | - __Unwind_GetRegionStart
71 | - __Unwind_GetTextRelBase
72 | - __Unwind_RaiseException
73 | - __Unwind_Resume
74 | - __Unwind_SetGR
75 | - __Unwind_SetIP
76 | - ___error
77 | - __dyld_get_image_header
78 | - __dyld_get_image_name
79 | - __dyld_get_image_vmaddr_slide
80 | - __dyld_image_count
81 | - _abort
82 | - _bzero
83 | - _calloc
84 | - _close
85 | - _closedir
86 | - _fcntl
87 | - _free
88 | - _fstat
89 | - _getcwd
90 | - _getenv
91 | - _gettimeofday
92 | - _mach_absolute_time
93 | - _mach_timebase_info
94 | - _malloc
95 | - _memchr
96 | - _memcmp
97 | - _memcpy
98 | - _memmove
99 | - _memset
100 | - _mmap
101 | - _munmap
102 | - _nanosleep
103 | - _lseek
104 | - _open
105 | - _opendir
106 | - _posix_memalign
107 | - _pow
108 | - _powf
109 | - _pthread_cond_destroy
110 | - _pthread_cond_signal
111 | - _pthread_cond_timedwait
112 | - _pthread_cond_wait
113 | - _pthread_getspecific
114 | - _pthread_key_create
115 | - _pthread_key_delete
116 | - _pthread_mutex_destroy
117 | - _pthread_mutex_init
118 | - _pthread_mutex_lock
119 | - _pthread_mutex_trylock
120 | - _pthread_mutex_unlock
121 | - _pthread_mutexattr_destroy
122 | - _pthread_mutexattr_init
123 | - _pthread_mutexattr_settype
124 | - _pthread_rwlock_rdlock
125 | - _pthread_rwlock_wrlock
126 | - _pthread_rwlock_unlock
127 | - _pthread_rwlock_destroy
128 | - _pthread_setspecific
129 | - _read
130 | - _readdir_r
131 | - _realloc
132 | - _sched_yield
133 | - _setenv
134 | - _signal
135 | - _strerror_r
136 | - _strlen
137 | - _write
138 | - _writev
139 | - dyld_stub_binder
140 | - _dispatch_activate
141 | - _dispatch_after
142 | - _dispatch_after_f
143 | - _dispatch_apply
144 | - _dispatch_apply_f
145 | - _dispatch_assert_queue
146 | - _dispatch_assert_queue$V2
147 | - _dispatch_assert_queue_barrier
148 | - _dispatch_assert_queue_not
149 | - _dispatch_assert_queue_not$V2
150 | - _dispatch_async
151 | - _dispatch_async_and_wait
152 | - _dispatch_async_and_wait_f
153 | - _dispatch_async_f
154 | - _dispatch_barrier_async
155 | - _dispatch_barrier_async_and_wait
156 | - _dispatch_barrier_async_and_wait_f
157 | - _dispatch_barrier_async_f
158 | - _dispatch_barrier_sync
159 | - _dispatch_barrier_sync_f
160 | - _dispatch_block_cancel
161 | - _dispatch_block_create
162 | - _dispatch_block_create_with_qos_class
163 | - _dispatch_block_notify
164 | - _dispatch_block_perform
165 | - _dispatch_block_testcancel
166 | - _dispatch_block_wait
167 | - _dispatch_data_apply
168 | - _dispatch_data_copy_region
169 | - _dispatch_data_create
170 | - _dispatch_data_create_concat
171 | - _dispatch_data_create_map
172 | - _dispatch_data_create_subrange
173 | - _dispatch_data_get_size
174 | - _dispatch_get_context
175 | - _dispatch_get_current_queue
176 | - _dispatch_get_global_queue
177 | - _dispatch_get_specific
178 | - _dispatch_group_async
179 | - _dispatch_group_async_f
180 | - _dispatch_group_create
181 | - _dispatch_group_enter
182 | - _dispatch_group_leave
183 | - _dispatch_group_notify
184 | - _dispatch_group_notify_f
185 | - _dispatch_group_wait
186 | - _dispatch_main
187 | - _dispatch_once
188 | - _dispatch_once_f
189 | - _dispatch_queue_attr_make_initially_inactive
190 | - _dispatch_queue_attr_make_with_autorelease_frequency
191 | - _dispatch_queue_attr_make_with_qos_class
192 | - _dispatch_queue_create
193 | - _dispatch_queue_create_with_target
194 | - _dispatch_queue_create_with_target$V2
195 | - _dispatch_queue_get_label
196 | - _dispatch_queue_get_qos_class
197 | - _dispatch_queue_get_specific
198 | - _dispatch_queue_set_specific
199 | - _dispatch_release
200 | - _dispatch_resume
201 | - _dispatch_retain
202 | - _dispatch_semaphore_create
203 | - _dispatch_semaphore_signal
204 | - _dispatch_semaphore_wait
205 | - _dispatch_set_context
206 | - _dispatch_set_finalizer_f
207 | - _dispatch_set_qos_class_floor
208 | - _dispatch_set_target_queue
209 | - _dispatch_source_cancel
210 | - _dispatch_source_create
211 | - _dispatch_source_get_data
212 | - _dispatch_source_get_handle
213 | - _dispatch_source_get_mask
214 | - _dispatch_source_merge_data
215 | - _dispatch_source_set_cancel_handler
216 | - _dispatch_source_set_cancel_handler_f
217 | - _dispatch_source_set_event_handler
218 | - _dispatch_source_set_event_handler_f
219 | - _dispatch_source_set_registration_handler
220 | - _dispatch_source_set_registration_handler_f
221 | - _dispatch_source_set_timer
222 | - _dispatch_source_testcancel
223 | - _dispatch_suspend
224 | - _dispatch_sync
225 | - _dispatch_sync_f
226 | - _dispatch_time
227 | - _dispatch_walltime
228 | - _dispatch_workloop_create
229 | - _dispatch_workloop_create_inactive
230 | - _dispatch_workloop_set_autorelease_frequency
231 | - __dispatch_data_destructor_free
232 | - __dispatch_data_destructor_munmap
233 | - __dispatch_data_empty
234 | - __dispatch_main_q
235 | - __dispatch_queue_attr_concurrent
236 | - __dispatch_source_type_data_add
237 | - __dispatch_source_type_data_or
238 | - __dispatch_source_type_data_replace
239 | - __dispatch_source_type_mach_send
240 | - __dispatch_source_type_memorypressure
241 | - __dispatch_source_type_proc
242 | - __dispatch_source_type_read
243 | - __dispatch_source_type_timer
244 | - __dispatch_source_type_vnode
245 | - __dispatch_source_type_write
246 | - name: libc
247 | install_name: /usr/lib/libSystem.B.dylib
248 | - name: libm
249 | install_name: /usr/lib/libSystem.B.dylib
250 | - name: libresolv
251 | install_name: /usr/lib/libresolv.9.dylib
252 | - name: libiconv
253 | install_name: /usr/lib/libiconv.2.dylib
254 | # TODO: More
255 | frameworks:
256 | - Accelerate
257 | - Accessibility
258 | - Accounts
259 | - AddressBook
260 | - AddressBookUI
261 | - AdServices
262 | - AdSupport
263 | - AppClip
264 | - AppTrackingTransparency
265 | - ARKit
266 | - AssetsLibrary
267 | - AudioToolbox
268 | - AudioUnit
269 | - AuthenticationServices
270 | - AutomaticAssessmentConfiguration
271 | - AVFAudio
272 | - name: AVFoundation
273 | symbols:
274 | - _AVMediaTypeVideo
275 | - _AVMediaTypeAudio
276 | - _AVMediaTypeText
277 | - _AVMediaTypeClosedCaption
278 | - _AVMediaTypeSubtitle
279 | - _AVMediaTypeTimecode
280 | - _AVMediaTypeMetadata
281 | - _AVMediaTypeMuxed
282 |
283 | - _AVVideoRangeSDR
284 | - _AVVideoRangeHLG
285 | - _AVVideoRangePQ
286 | - _AVMediaTypeMetadataObject
287 | - _AVMediaTypeDepthData
288 |
289 | - _AVMediaCharacteristicVisual
290 | - _AVMediaCharacteristicAudible
291 | - _AVMediaCharacteristicLegible
292 | - _AVMediaCharacteristicFrameBased
293 | - _AVMediaCharacteristicUsesWideGamutColorSpace
294 | - _AVMediaCharacteristicContainsHDRVideo
295 | - _AVMediaCharacteristicContainsAlphaChannel
296 | - _AVMediaCharacteristicIsMainProgramContent
297 | - _AVMediaCharacteristicIsAuxiliaryContent
298 | - _AVMediaCharacteristicIsOriginalContent
299 | - _AVMediaCharacteristicContainsOnlyForcedSubtitles
300 | - _AVMediaCharacteristicTranscribesSpokenDialogForAccessibility
301 | - _AVMediaCharacteristicDescribesMusicAndSoundForAccessibility
302 | - _AVMediaCharacteristicEasyToRead
303 | - _AVMediaCharacteristicDescribesVideoForAccessibility
304 | - _AVMediaCharacteristicLanguageTranslation
305 | - _AVMediaCharacteristicDubbedTranslation
306 | - _AVMediaCharacteristicVoiceOverTranslation
307 |
308 | - _AVMetadataFormatQuickTimeUserData
309 | - _AVMetadataFormatISOUserData
310 | - _AVMetadataFormatQuickTimeMetadata
311 | - _AVMetadataFormatiTunesMetadata
312 | - _AVMetadataFormatID3Metadata
313 | - _AVMetadataFormatHLSMetadata
314 | - _AVMetadataFormatUnknown
315 |
316 | - _AVMetadataKeySpaceCommon
317 | - _AVMetadataKeySpaceQuickTimeUserData
318 | - _AVMetadataKeySpaceISOUserData
319 | - _AVMetadataKeySpaceQuickTimeMetadata
320 | - _AVMetadataKeySpaceiTunes
321 | - _AVMetadataKeySpaceID3
322 | - _AVMetadataKeySpaceIcy
323 | - _AVMetadataKeySpaceHLSDateRange
324 | - _AVMetadataKeySpaceAudioFile
325 |
326 | - _AVMetadataCommonKeyTitle
327 | - _AVMetadataCommonKeyCreator
328 | - _AVMetadataCommonKeySubject
329 | - _AVMetadataCommonKeyDescription
330 | - _AVMetadataCommonKeyPublisher
331 | - _AVMetadataCommonKeyContributor
332 | - _AVMetadataCommonKeyCreationDate
333 | - _AVMetadataCommonKeyLastModifiedDate
334 | - _AVMetadataCommonKeyType
335 | - _AVMetadataCommonKeyFormat
336 | - _AVMetadataCommonKeyIdentifier
337 | - _AVMetadataCommonKeySource
338 | - _AVMetadataCommonKeyLanguage
339 | - _AVMetadataCommonKeyRelation
340 | - _AVMetadataCommonKeyLocation
341 | - _AVMetadataCommonKeyCopyrights
342 | - _AVMetadataCommonKeyAlbumName
343 | - _AVMetadataCommonKeyAuthor
344 | - _AVMetadataCommonKeyArtist
345 | - _AVMetadataCommonKeyArtwork
346 | - _AVMetadataCommonKeyMake
347 | - _AVMetadataCommonKeyModel
348 | - _AVMetadataCommonKeySoftware
349 | - _AVMetadataCommonKeyAccessibilityDescription
350 | - _AVMetadataQuickTimeUserDataKeyAlbum
351 | - _AVMetadataQuickTimeUserDataKeyArranger
352 | - _AVMetadataQuickTimeUserDataKeyArtist
353 | - _AVMetadataQuickTimeUserDataKeyAuthor
354 | - _AVMetadataQuickTimeUserDataKeyChapter
355 | - _AVMetadataQuickTimeUserDataKeyComment
356 | - _AVMetadataQuickTimeUserDataKeyComposer
357 | - _AVMetadataQuickTimeUserDataKeyCopyright
358 | - _AVMetadataQuickTimeUserDataKeyCreationDate
359 | - _AVMetadataQuickTimeUserDataKeyDescription
360 | - _AVMetadataQuickTimeUserDataKeyDirector
361 | - _AVMetadataQuickTimeUserDataKeyDisclaimer
362 | - _AVMetadataQuickTimeUserDataKeyEncodedBy
363 | - _AVMetadataQuickTimeUserDataKeyFullName
364 | - _AVMetadataQuickTimeUserDataKeyGenre
365 | - _AVMetadataQuickTimeUserDataKeyHostComputer
366 | - _AVMetadataQuickTimeUserDataKeyInformation
367 | - _AVMetadataQuickTimeUserDataKeyKeywords
368 | - _AVMetadataQuickTimeUserDataKeyMake
369 | - _AVMetadataQuickTimeUserDataKeyModel
370 | - _AVMetadataQuickTimeUserDataKeyOriginalArtist
371 | - _AVMetadataQuickTimeUserDataKeyOriginalFormat
372 | - _AVMetadataQuickTimeUserDataKeyOriginalSource
373 | - _AVMetadataQuickTimeUserDataKeyPerformers
374 | - _AVMetadataQuickTimeUserDataKeyProducer
375 | - _AVMetadataQuickTimeUserDataKeyPublisher
376 | - _AVMetadataQuickTimeUserDataKeyProduct
377 | - _AVMetadataQuickTimeUserDataKeySoftware
378 | - _AVMetadataQuickTimeUserDataKeySpecialPlaybackRequirements
379 | - _AVMetadataQuickTimeUserDataKeyTrack
380 | - _AVMetadataQuickTimeUserDataKeyWarning
381 | - _AVMetadataQuickTimeUserDataKeyWriter
382 | - _AVMetadataQuickTimeUserDataKeyURLLink
383 | - _AVMetadataQuickTimeUserDataKeyLocationISO6709
384 | - _AVMetadataQuickTimeUserDataKeyTrackName
385 | - _AVMetadataQuickTimeUserDataKeyCredits
386 | - _AVMetadataQuickTimeUserDataKeyPhonogramRights
387 | - _AVMetadataQuickTimeUserDataKeyTaggedCharacteristic
388 | - _AVMetadataQuickTimeUserDataKeyAccessibilityDescription
389 | - _AVMetadataISOUserDataKeyCopyright
390 | - _AVMetadataISOUserDataKeyTaggedCharacteristic
391 | - _AVMetadataISOUserDataKeyDate
392 | - _AVMetadataISOUserDataKeyAccessibilityDescription
393 | - _AVMetadata3GPUserDataKeyCopyright
394 | - _AVMetadata3GPUserDataKeyAuthor
395 | - _AVMetadata3GPUserDataKeyPerformer
396 | - _AVMetadata3GPUserDataKeyGenre
397 | - _AVMetadata3GPUserDataKeyRecordingYear
398 | - _AVMetadata3GPUserDataKeyLocation
399 | - _AVMetadata3GPUserDataKeyTitle
400 | - _AVMetadata3GPUserDataKeyDescription
401 | - _AVMetadata3GPUserDataKeyCollection
402 | - _AVMetadata3GPUserDataKeyUserRating
403 | - _AVMetadata3GPUserDataKeyThumbnail
404 | - _AVMetadata3GPUserDataKeyAlbumAndTrack
405 | - _AVMetadata3GPUserDataKeyKeywordList
406 | - _AVMetadata3GPUserDataKeyMediaClassification
407 | - _AVMetadata3GPUserDataKeyMediaRating
408 | - _AVMetadataQuickTimeMetadataKeyAuthor
409 | - _AVMetadataQuickTimeMetadataKeyComment
410 | - _AVMetadataQuickTimeMetadataKeyCopyright
411 | - _AVMetadataQuickTimeMetadataKeyCreationDate
412 | - _AVMetadataQuickTimeMetadataKeyDirector
413 | - _AVMetadataQuickTimeMetadataKeyDisplayName
414 | - _AVMetadataQuickTimeMetadataKeyInformation
415 | - _AVMetadataQuickTimeMetadataKeyKeywords
416 | - _AVMetadataQuickTimeMetadataKeyProducer
417 | - _AVMetadataQuickTimeMetadataKeyPublisher
418 | - _AVMetadataQuickTimeMetadataKeyAlbum
419 | - _AVMetadataQuickTimeMetadataKeyArtist
420 | - _AVMetadataQuickTimeMetadataKeyArtwork
421 | - _AVMetadataQuickTimeMetadataKeyDescription
422 | - _AVMetadataQuickTimeMetadataKeySoftware
423 | - _AVMetadataQuickTimeMetadataKeyYear
424 | - _AVMetadataQuickTimeMetadataKeyGenre
425 | - _AVMetadataQuickTimeMetadataKeyiXML
426 | - _AVMetadataQuickTimeMetadataKeyLocationISO6709
427 | - _AVMetadataQuickTimeMetadataKeyMake
428 | - _AVMetadataQuickTimeMetadataKeyModel
429 | - _AVMetadataQuickTimeMetadataKeyArranger
430 | - _AVMetadataQuickTimeMetadataKeyEncodedBy
431 | - _AVMetadataQuickTimeMetadataKeyOriginalArtist
432 | - _AVMetadataQuickTimeMetadataKeyPerformer
433 | - _AVMetadataQuickTimeMetadataKeyComposer
434 | - _AVMetadataQuickTimeMetadataKeyCredits
435 | - _AVMetadataQuickTimeMetadataKeyPhonogramRights
436 | - _AVMetadataQuickTimeMetadataKeyCameraIdentifier
437 | - _AVMetadataQuickTimeMetadataKeyCameraFrameReadoutTime
438 | - _AVMetadataQuickTimeMetadataKeyTitle
439 | - _AVMetadataQuickTimeMetadataKeyCollectionUser
440 | - _AVMetadataQuickTimeMetadataKeyRatingUser
441 | - _AVMetadataQuickTimeMetadataKeyLocationName
442 | - _AVMetadataQuickTimeMetadataKeyLocationBody
443 | - _AVMetadataQuickTimeMetadataKeyLocationNote
444 | - _AVMetadataQuickTimeMetadataKeyLocationRole
445 | - _AVMetadataQuickTimeMetadataKeyLocationDate
446 | - _AVMetadataQuickTimeMetadataKeyDirectionFacing
447 | - _AVMetadataQuickTimeMetadataKeyDirectionMotion
448 | - _AVMetadataQuickTimeMetadataKeyContentIdentifier
449 | - _AVMetadataQuickTimeMetadataKeyAccessibilityDescription
450 | - _AVMetadataQuickTimeMetadataKeyIsMontage
451 | - _AVMetadataiTunesMetadataKeyAlbum
452 | - _AVMetadataiTunesMetadataKeyArtist
453 | - _AVMetadataiTunesMetadataKeyUserComment
454 | - _AVMetadataiTunesMetadataKeyCoverArt
455 | - _AVMetadataiTunesMetadataKeyCopyright
456 | - _AVMetadataiTunesMetadataKeyReleaseDate
457 | - _AVMetadataiTunesMetadataKeyEncodedBy
458 | - _AVMetadataiTunesMetadataKeyPredefinedGenre
459 | - _AVMetadataiTunesMetadataKeyUserGenre
460 | - _AVMetadataiTunesMetadataKeySongName
461 | - _AVMetadataiTunesMetadataKeyTrackSubTitle
462 | - _AVMetadataiTunesMetadataKeyEncodingTool
463 | - _AVMetadataiTunesMetadataKeyComposer
464 | - _AVMetadataiTunesMetadataKeyAlbumArtist
465 | - _AVMetadataiTunesMetadataKeyAccountKind
466 | - _AVMetadataiTunesMetadataKeyAppleID
467 | - _AVMetadataiTunesMetadataKeyArtistID
468 | - _AVMetadataiTunesMetadataKeySongID
469 | - _AVMetadataiTunesMetadataKeyDiscCompilation
470 | - _AVMetadataiTunesMetadataKeyDiscNumber
471 | - _AVMetadataiTunesMetadataKeyGenreID
472 | - _AVMetadataiTunesMetadataKeyGrouping
473 | - _AVMetadataiTunesMetadataKeyPlaylistID
474 | - _AVMetadataiTunesMetadataKeyContentRating
475 | - _AVMetadataiTunesMetadataKeyBeatsPerMin
476 | - _AVMetadataiTunesMetadataKeyTrackNumber
477 | - _AVMetadataiTunesMetadataKeyArtDirector
478 | - _AVMetadataiTunesMetadataKeyArranger
479 | - _AVMetadataiTunesMetadataKeyAuthor
480 | - _AVMetadataiTunesMetadataKeyLyrics
481 | - _AVMetadataiTunesMetadataKeyAcknowledgement
482 | - _AVMetadataiTunesMetadataKeyConductor
483 | - _AVMetadataiTunesMetadataKeyDescription
484 | - _AVMetadataiTunesMetadataKeyDirector
485 | - _AVMetadataiTunesMetadataKeyEQ
486 | - _AVMetadataiTunesMetadataKeyLinerNotes
487 | - _AVMetadataiTunesMetadataKeyRecordCompany
488 | - _AVMetadataiTunesMetadataKeyOriginalArtist
489 | - _AVMetadataiTunesMetadataKeyPhonogramRights
490 | - _AVMetadataiTunesMetadataKeyProducer
491 | - _AVMetadataiTunesMetadataKeyPerformer
492 | - _AVMetadataiTunesMetadataKeyPublisher
493 | - _AVMetadataiTunesMetadataKeySoundEngineer
494 | - _AVMetadataiTunesMetadataKeySoloist
495 | - _AVMetadataiTunesMetadataKeyCredits
496 | - _AVMetadataiTunesMetadataKeyThanks
497 | - _AVMetadataiTunesMetadataKeyOnlineExtras
498 | - _AVMetadataiTunesMetadataKeyExecProducer
499 | - _AVMetadataID3MetadataKeyAudioEncryption
500 | - _AVMetadataID3MetadataKeyAttachedPicture
501 | - _AVMetadataID3MetadataKeyAudioSeekPointIndex
502 | - _AVMetadataID3MetadataKeyComments
503 | - _AVMetadataID3MetadataKeyCommercial
504 | - _AVMetadataID3MetadataKeyCommerical
505 | - _AVMetadataID3MetadataKeyEncryption
506 | - _AVMetadataID3MetadataKeyEqualization
507 | - _AVMetadataID3MetadataKeyEqualization2
508 | - _AVMetadataID3MetadataKeyEventTimingCodes
509 | - _AVMetadataID3MetadataKeyGeneralEncapsulatedObject
510 | - _AVMetadataID3MetadataKeyGroupIdentifier
511 | - _AVMetadataID3MetadataKeyInvolvedPeopleList_v23
512 | - _AVMetadataID3MetadataKeyLink
513 | - _AVMetadataID3MetadataKeyMusicCDIdentifier
514 | - _AVMetadataID3MetadataKeyMPEGLocationLookupTable
515 | - _AVMetadataID3MetadataKeyOwnership
516 | - _AVMetadataID3MetadataKeyPrivate
517 | - _AVMetadataID3MetadataKeyPlayCounter
518 | - _AVMetadataID3MetadataKeyPopularimeter
519 | - _AVMetadataID3MetadataKeyPositionSynchronization
520 | - _AVMetadataID3MetadataKeyRecommendedBufferSize
521 | - _AVMetadataID3MetadataKeyRelativeVolumeAdjustment
522 | - _AVMetadataID3MetadataKeyRelativeVolumeAdjustment2
523 | - _AVMetadataID3MetadataKeyReverb
524 | - _AVMetadataID3MetadataKeySeek
525 | - _AVMetadataID3MetadataKeySignature
526 | - _AVMetadataID3MetadataKeySynchronizedLyric
527 | - _AVMetadataID3MetadataKeySynchronizedTempoCodes
528 | - _AVMetadataID3MetadataKeyAlbumTitle
529 | - _AVMetadataID3MetadataKeyBeatsPerMinute
530 | - _AVMetadataID3MetadataKeyComposer
531 | - _AVMetadataID3MetadataKeyContentType
532 | - _AVMetadataID3MetadataKeyCopyright
533 | - _AVMetadataID3MetadataKeyDate
534 | - _AVMetadataID3MetadataKeyEncodingTime
535 | - _AVMetadataID3MetadataKeyPlaylistDelay
536 | - _AVMetadataID3MetadataKeyOriginalReleaseTime
537 | - _AVMetadataID3MetadataKeyRecordingTime
538 | - _AVMetadataID3MetadataKeyReleaseTime
539 | - _AVMetadataID3MetadataKeyTaggingTime
540 | - _AVMetadataID3MetadataKeyEncodedBy
541 | - _AVMetadataID3MetadataKeyLyricist
542 | - _AVMetadataID3MetadataKeyFileType
543 | - _AVMetadataID3MetadataKeyTime
544 | - _AVMetadataID3MetadataKeyInvolvedPeopleList_v24
545 | - _AVMetadataID3MetadataKeyContentGroupDescription
546 | - _AVMetadataID3MetadataKeyTitleDescription
547 | - _AVMetadataID3MetadataKeySubTitle
548 | - _AVMetadataID3MetadataKeyInitialKey
549 | - _AVMetadataID3MetadataKeyLanguage
550 | - _AVMetadataID3MetadataKeyLength
551 | - _AVMetadataID3MetadataKeyMusicianCreditsList
552 | - _AVMetadataID3MetadataKeyMediaType
553 | - _AVMetadataID3MetadataKeyMood
554 | - _AVMetadataID3MetadataKeyOriginalAlbumTitle
555 | - _AVMetadataID3MetadataKeyOriginalFilename
556 | - _AVMetadataID3MetadataKeyOriginalLyricist
557 | - _AVMetadataID3MetadataKeyOriginalArtist
558 | - _AVMetadataID3MetadataKeyOriginalReleaseYear
559 | - _AVMetadataID3MetadataKeyFileOwner
560 | - _AVMetadataID3MetadataKeyLeadPerformer
561 | - _AVMetadataID3MetadataKeyBand
562 | - _AVMetadataID3MetadataKeyConductor
563 | - _AVMetadataID3MetadataKeyModifiedBy
564 | - _AVMetadataID3MetadataKeyPartOfASet
565 | - _AVMetadataID3MetadataKeyProducedNotice
566 | - _AVMetadataID3MetadataKeyPublisher
567 | - _AVMetadataID3MetadataKeyTrackNumber
568 | - _AVMetadataID3MetadataKeyRecordingDates
569 | - _AVMetadataID3MetadataKeyInternetRadioStationName
570 | - _AVMetadataID3MetadataKeyInternetRadioStationOwner
571 | - _AVMetadataID3MetadataKeySize
572 | - _AVMetadataID3MetadataKeyAlbumSortOrder
573 | - _AVMetadataID3MetadataKeyPerformerSortOrder
574 | - _AVMetadataID3MetadataKeyTitleSortOrder
575 | - _AVMetadataID3MetadataKeyInternationalStandardRecordingCode
576 | - _AVMetadataID3MetadataKeyEncodedWith
577 | - _AVMetadataID3MetadataKeySetSubtitle
578 | - _AVMetadataID3MetadataKeyYear
579 | - _AVMetadataID3MetadataKeyUserText
580 | - _AVMetadataID3MetadataKeyUniqueFileIdentifier
581 | - _AVMetadataID3MetadataKeyTermsOfUse
582 | - _AVMetadataID3MetadataKeyUnsynchronizedLyric
583 | - _AVMetadataID3MetadataKeyCommercialInformation
584 | - _AVMetadataID3MetadataKeyCopyrightInformation
585 | - _AVMetadataID3MetadataKeyOfficialAudioFileWebpage
586 | - _AVMetadataID3MetadataKeyOfficialArtistWebpage
587 | - _AVMetadataID3MetadataKeyOfficialAudioSourceWebpage
588 | - _AVMetadataID3MetadataKeyOfficialInternetRadioStationHomepage
589 | - _AVMetadataID3MetadataKeyPayment
590 | - _AVMetadataID3MetadataKeyOfficialPublisherWebpage
591 | - _AVMetadataID3MetadataKeyUserURL
592 | - _AVMetadataIcyMetadataKeyStreamTitle
593 | - _AVMetadataIcyMetadataKeyStreamURL
594 |
595 | - _AVMetadataExtraAttributeValueURIKey
596 | - _AVMetadataExtraAttributeBaseURIKey
597 | - _AVMetadataExtraAttributeInfoKey
598 |
599 | - _AVMetadataCommonIdentifierTitle
600 | - _AVMetadataCommonIdentifierCreator
601 | - _AVMetadataCommonIdentifierSubject
602 | - _AVMetadataCommonIdentifierDescription
603 | - _AVMetadataCommonIdentifierPublisher
604 | - _AVMetadataCommonIdentifierContributor
605 | - _AVMetadataCommonIdentifierCreationDate
606 | - _AVMetadataCommonIdentifierLastModifiedDate
607 | - _AVMetadataCommonIdentifierType
608 | - _AVMetadataCommonIdentifierFormat
609 | - _AVMetadataCommonIdentifierAssetIdentifier
610 | - _AVMetadataCommonIdentifierSource
611 | - _AVMetadataCommonIdentifierLanguage
612 | - _AVMetadataCommonIdentifierRelation
613 | - _AVMetadataCommonIdentifierLocation
614 | - _AVMetadataCommonIdentifierCopyrights
615 | - _AVMetadataCommonIdentifierAlbumName
616 | - _AVMetadataCommonIdentifierAuthor
617 | - _AVMetadataCommonIdentifierArtist
618 | - _AVMetadataCommonIdentifierArtwork
619 | - _AVMetadataCommonIdentifierMake
620 | - _AVMetadataCommonIdentifierModel
621 | - _AVMetadataCommonIdentifierSoftware
622 | - _AVMetadataCommonIdentifierAccessibilityDescription
623 | - _AVMetadataIdentifierQuickTimeUserDataAlbum
624 | - _AVMetadataIdentifierQuickTimeUserDataArranger
625 | - _AVMetadataIdentifierQuickTimeUserDataArtist
626 | - _AVMetadataIdentifierQuickTimeUserDataAuthor
627 | - _AVMetadataIdentifierQuickTimeUserDataChapter
628 | - _AVMetadataIdentifierQuickTimeUserDataComment
629 | - _AVMetadataIdentifierQuickTimeUserDataComposer
630 | - _AVMetadataIdentifierQuickTimeUserDataCopyright
631 | - _AVMetadataIdentifierQuickTimeUserDataCreationDate
632 | - _AVMetadataIdentifierQuickTimeUserDataDescription
633 | - _AVMetadataIdentifierQuickTimeUserDataDirector
634 | - _AVMetadataIdentifierQuickTimeUserDataDisclaimer
635 | - _AVMetadataIdentifierQuickTimeUserDataEncodedBy
636 | - _AVMetadataIdentifierQuickTimeUserDataFullName
637 | - _AVMetadataIdentifierQuickTimeUserDataGenre
638 | - _AVMetadataIdentifierQuickTimeUserDataHostComputer
639 | - _AVMetadataIdentifierQuickTimeUserDataInformation
640 | - _AVMetadataIdentifierQuickTimeUserDataKeywords
641 | - _AVMetadataIdentifierQuickTimeUserDataMake
642 | - _AVMetadataIdentifierQuickTimeUserDataModel
643 | - _AVMetadataIdentifierQuickTimeUserDataOriginalArtist
644 | - _AVMetadataIdentifierQuickTimeUserDataOriginalFormat
645 | - _AVMetadataIdentifierQuickTimeUserDataOriginalSource
646 | - _AVMetadataIdentifierQuickTimeUserDataPerformers
647 | - _AVMetadataIdentifierQuickTimeUserDataProducer
648 | - _AVMetadataIdentifierQuickTimeUserDataPublisher
649 | - _AVMetadataIdentifierQuickTimeUserDataProduct
650 | - _AVMetadataIdentifierQuickTimeUserDataSoftware
651 | - _AVMetadataIdentifierQuickTimeUserDataSpecialPlaybackRequirements
652 | - _AVMetadataIdentifierQuickTimeUserDataTrack
653 | - _AVMetadataIdentifierQuickTimeUserDataWarning
654 | - _AVMetadataIdentifierQuickTimeUserDataWriter
655 | - _AVMetadataIdentifierQuickTimeUserDataURLLink
656 | - _AVMetadataIdentifierQuickTimeUserDataLocationISO6709
657 | - _AVMetadataIdentifierQuickTimeUserDataTrackName
658 | - _AVMetadataIdentifierQuickTimeUserDataCredits
659 | - _AVMetadataIdentifierQuickTimeUserDataPhonogramRights
660 | - _AVMetadataIdentifierQuickTimeUserDataTaggedCharacteristic
661 | - _AVMetadataIdentifierQuickTimeUserDataAccessibilityDescription
662 | - _AVMetadataIdentifierISOUserDataCopyright
663 | - _AVMetadataIdentifierISOUserDataDate
664 | - _AVMetadataIdentifierISOUserDataTaggedCharacteristic
665 | - _AVMetadataIdentifierISOUserDataAccessibilityDescription
666 | - _AVMetadataIdentifier3GPUserDataCopyright
667 | - _AVMetadataIdentifier3GPUserDataAuthor
668 | - _AVMetadataIdentifier3GPUserDataPerformer
669 | - _AVMetadataIdentifier3GPUserDataGenre
670 | - _AVMetadataIdentifier3GPUserDataRecordingYear
671 | - _AVMetadataIdentifier3GPUserDataLocation
672 | - _AVMetadataIdentifier3GPUserDataTitle
673 | - _AVMetadataIdentifier3GPUserDataDescription
674 | - _AVMetadataIdentifier3GPUserDataCollection
675 | - _AVMetadataIdentifier3GPUserDataUserRating
676 | - _AVMetadataIdentifier3GPUserDataThumbnail
677 | - _AVMetadataIdentifier3GPUserDataAlbumAndTrack
678 | - _AVMetadataIdentifier3GPUserDataKeywordList
679 | - _AVMetadataIdentifier3GPUserDataMediaClassification
680 | - _AVMetadataIdentifier3GPUserDataMediaRating
681 | - _AVMetadataIdentifierQuickTimeMetadataAuthor
682 | - _AVMetadataIdentifierQuickTimeMetadataComment
683 | - _AVMetadataIdentifierQuickTimeMetadataCopyright
684 | - _AVMetadataIdentifierQuickTimeMetadataCreationDate
685 | - _AVMetadataIdentifierQuickTimeMetadataDirector
686 | - _AVMetadataIdentifierQuickTimeMetadataDisplayName
687 | - _AVMetadataIdentifierQuickTimeMetadataInformation
688 | - _AVMetadataIdentifierQuickTimeMetadataKeywords
689 | - _AVMetadataIdentifierQuickTimeMetadataProducer
690 | - _AVMetadataIdentifierQuickTimeMetadataPublisher
691 | - _AVMetadataIdentifierQuickTimeMetadataAlbum
692 | - _AVMetadataIdentifierQuickTimeMetadataArtist
693 | - _AVMetadataIdentifierQuickTimeMetadataArtwork
694 | - _AVMetadataIdentifierQuickTimeMetadataDescription
695 | - _AVMetadataIdentifierQuickTimeMetadataSoftware
696 | - _AVMetadataIdentifierQuickTimeMetadataYear
697 | - _AVMetadataIdentifierQuickTimeMetadataGenre
698 | - _AVMetadataIdentifierQuickTimeMetadataiXML
699 | - _AVMetadataIdentifierQuickTimeMetadataLocationISO6709
700 | - _AVMetadataIdentifierQuickTimeMetadataMake
701 | - _AVMetadataIdentifierQuickTimeMetadataModel
702 | - _AVMetadataIdentifierQuickTimeMetadataArranger
703 | - _AVMetadataIdentifierQuickTimeMetadataEncodedBy
704 | - _AVMetadataIdentifierQuickTimeMetadataOriginalArtist
705 | - _AVMetadataIdentifierQuickTimeMetadataPerformer
706 | - _AVMetadataIdentifierQuickTimeMetadataComposer
707 | - _AVMetadataIdentifierQuickTimeMetadataCredits
708 | - _AVMetadataIdentifierQuickTimeMetadataPhonogramRights
709 | - _AVMetadataIdentifierQuickTimeMetadataCameraIdentifier
710 | - _AVMetadataIdentifierQuickTimeMetadataCameraFrameReadoutTime
711 | - _AVMetadataIdentifierQuickTimeMetadataTitle
712 | - _AVMetadataIdentifierQuickTimeMetadataCollectionUser
713 | - _AVMetadataIdentifierQuickTimeMetadataRatingUser
714 | - _AVMetadataIdentifierQuickTimeMetadataLocationName
715 | - _AVMetadataIdentifierQuickTimeMetadataLocationBody
716 | - _AVMetadataIdentifierQuickTimeMetadataLocationNote
717 | - _AVMetadataIdentifierQuickTimeMetadataLocationRole
718 | - _AVMetadataIdentifierQuickTimeMetadataLocationDate
719 | - _AVMetadataIdentifierQuickTimeMetadataDirectionFacing
720 | - _AVMetadataIdentifierQuickTimeMetadataDirectionMotion
721 | - _AVMetadataIdentifierQuickTimeMetadataPreferredAffineTransform
722 | - _AVMetadataIdentifierQuickTimeMetadataDetectedFace
723 | - _AVMetadataIdentifierQuickTimeMetadataDetectedHumanBody
724 | - _AVMetadataIdentifierQuickTimeMetadataDetectedCatBody
725 | - _AVMetadataIdentifierQuickTimeMetadataDetectedDogBody
726 | - _AVMetadataIdentifierQuickTimeMetadataDetectedSalientObject
727 | - _AVMetadataIdentifierQuickTimeMetadataVideoOrientation
728 | - _AVMetadataIdentifierQuickTimeMetadataContentIdentifier
729 | - _AVMetadataIdentifierQuickTimeMetadataAccessibilityDescription
730 | - _AVMetadataIdentifierQuickTimeMetadataIsMontage
731 | - _AVMetadataIdentifierQuickTimeMetadataAutoLivePhoto
732 | - _AVMetadataIdentifierQuickTimeMetadataLivePhotoVitalityScore
733 | - _AVMetadataIdentifierQuickTimeMetadataLivePhotoVitalityScoringVersion
734 | - _AVMetadataIdentifierQuickTimeMetadataSpatialOverCaptureQualityScore
735 | - _AVMetadataIdentifierQuickTimeMetadataSpatialOverCaptureQualityScoringVersion
736 | - _AVMetadataIdentifierQuickTimeMetadataLocationHorizontalAccuracyInMeters
737 | - _AVMetadataIdentifieriTunesMetadataAlbum
738 | - _AVMetadataIdentifieriTunesMetadataArtist
739 | - _AVMetadataIdentifieriTunesMetadataUserComment
740 | - _AVMetadataIdentifieriTunesMetadataCoverArt
741 | - _AVMetadataIdentifieriTunesMetadataCopyright
742 | - _AVMetadataIdentifieriTunesMetadataReleaseDate
743 | - _AVMetadataIdentifieriTunesMetadataEncodedBy
744 | - _AVMetadataIdentifieriTunesMetadataPredefinedGenre
745 | - _AVMetadataIdentifieriTunesMetadataUserGenre
746 | - _AVMetadataIdentifieriTunesMetadataSongName
747 | - _AVMetadataIdentifieriTunesMetadataTrackSubTitle
748 | - _AVMetadataIdentifieriTunesMetadataEncodingTool
749 | - _AVMetadataIdentifieriTunesMetadataComposer
750 | - _AVMetadataIdentifieriTunesMetadataAlbumArtist
751 | - _AVMetadataIdentifieriTunesMetadataAccountKind
752 | - _AVMetadataIdentifieriTunesMetadataAppleID
753 | - _AVMetadataIdentifieriTunesMetadataArtistID
754 | - _AVMetadataIdentifieriTunesMetadataSongID
755 | - _AVMetadataIdentifieriTunesMetadataDiscCompilation
756 | - _AVMetadataIdentifieriTunesMetadataDiscNumber
757 | - _AVMetadataIdentifieriTunesMetadataGenreID
758 | - _AVMetadataIdentifieriTunesMetadataGrouping
759 | - _AVMetadataIdentifieriTunesMetadataPlaylistID
760 | - _AVMetadataIdentifieriTunesMetadataContentRating
761 | - _AVMetadataIdentifieriTunesMetadataBeatsPerMin
762 | - _AVMetadataIdentifieriTunesMetadataTrackNumber
763 | - _AVMetadataIdentifieriTunesMetadataArtDirector
764 | - _AVMetadataIdentifieriTunesMetadataArranger
765 | - _AVMetadataIdentifieriTunesMetadataAuthor
766 | - _AVMetadataIdentifieriTunesMetadataLyrics
767 | - _AVMetadataIdentifieriTunesMetadataAcknowledgement
768 | - _AVMetadataIdentifieriTunesMetadataConductor
769 | - _AVMetadataIdentifieriTunesMetadataDescription
770 | - _AVMetadataIdentifieriTunesMetadataDirector
771 | - _AVMetadataIdentifieriTunesMetadataEQ
772 | - _AVMetadataIdentifieriTunesMetadataLinerNotes
773 | - _AVMetadataIdentifieriTunesMetadataRecordCompany
774 | - _AVMetadataIdentifieriTunesMetadataOriginalArtist
775 | - _AVMetadataIdentifieriTunesMetadataPhonogramRights
776 | - _AVMetadataIdentifieriTunesMetadataProducer
777 | - _AVMetadataIdentifieriTunesMetadataPerformer
778 | - _AVMetadataIdentifieriTunesMetadataPublisher
779 | - _AVMetadataIdentifieriTunesMetadataSoundEngineer
780 | - _AVMetadataIdentifieriTunesMetadataSoloist
781 | - _AVMetadataIdentifieriTunesMetadataCredits
782 | - _AVMetadataIdentifieriTunesMetadataThanks
783 | - _AVMetadataIdentifieriTunesMetadataOnlineExtras
784 | - _AVMetadataIdentifieriTunesMetadataExecProducer
785 | - _AVMetadataIdentifierID3MetadataAudioEncryption
786 | - _AVMetadataIdentifierID3MetadataAttachedPicture
787 | - _AVMetadataIdentifierID3MetadataAudioSeekPointIndex
788 | - _AVMetadataIdentifierID3MetadataComments
789 | - _AVMetadataIdentifierID3MetadataCommercial
790 | - _AVMetadataIdentifierID3MetadataCommerical
791 | - _AVMetadataIdentifierID3MetadataEncryption
792 | - _AVMetadataIdentifierID3MetadataEqualization
793 | - _AVMetadataIdentifierID3MetadataEqualization2
794 | - _AVMetadataIdentifierID3MetadataEventTimingCodes
795 | - _AVMetadataIdentifierID3MetadataGeneralEncapsulatedObject
796 | - _AVMetadataIdentifierID3MetadataGroupIdentifier
797 | - _AVMetadataIdentifierID3MetadataInvolvedPeopleList_v23
798 | - _AVMetadataIdentifierID3MetadataLink
799 | - _AVMetadataIdentifierID3MetadataMusicCDIdentifier
800 | - _AVMetadataIdentifierID3MetadataMPEGLocationLookupTable
801 | - _AVMetadataIdentifierID3MetadataOwnership
802 | - _AVMetadataIdentifierID3MetadataPrivate
803 | - _AVMetadataIdentifierID3MetadataPlayCounter
804 | - _AVMetadataIdentifierID3MetadataPopularimeter
805 | - _AVMetadataIdentifierID3MetadataPositionSynchronization
806 | - _AVMetadataIdentifierID3MetadataRecommendedBufferSize
807 | - _AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment
808 | - _AVMetadataIdentifierID3MetadataRelativeVolumeAdjustment2
809 | - _AVMetadataIdentifierID3MetadataReverb
810 | - _AVMetadataIdentifierID3MetadataSeek
811 | - _AVMetadataIdentifierID3MetadataSignature
812 | - _AVMetadataIdentifierID3MetadataSynchronizedLyric
813 | - _AVMetadataIdentifierID3MetadataSynchronizedTempoCodes
814 | - _AVMetadataIdentifierID3MetadataAlbumTitle
815 | - _AVMetadataIdentifierID3MetadataBeatsPerMinute
816 | - _AVMetadataIdentifierID3MetadataComposer
817 | - _AVMetadataIdentifierID3MetadataContentType
818 | - _AVMetadataIdentifierID3MetadataCopyright
819 | - _AVMetadataIdentifierID3MetadataDate
820 | - _AVMetadataIdentifierID3MetadataEncodingTime
821 | - _AVMetadataIdentifierID3MetadataPlaylistDelay
822 | - _AVMetadataIdentifierID3MetadataOriginalReleaseTime
823 | - _AVMetadataIdentifierID3MetadataRecordingTime
824 | - _AVMetadataIdentifierID3MetadataReleaseTime
825 | - _AVMetadataIdentifierID3MetadataTaggingTime
826 | - _AVMetadataIdentifierID3MetadataEncodedBy
827 | - _AVMetadataIdentifierID3MetadataLyricist
828 | - _AVMetadataIdentifierID3MetadataFileType
829 | - _AVMetadataIdentifierID3MetadataTime
830 | - _AVMetadataIdentifierID3MetadataInvolvedPeopleList_v24
831 | - _AVMetadataIdentifierID3MetadataContentGroupDescription
832 | - _AVMetadataIdentifierID3MetadataTitleDescription
833 | - _AVMetadataIdentifierID3MetadataSubTitle
834 | - _AVMetadataIdentifierID3MetadataInitialKey
835 | - _AVMetadataIdentifierID3MetadataLanguage
836 | - _AVMetadataIdentifierID3MetadataLength
837 | - _AVMetadataIdentifierID3MetadataMusicianCreditsList
838 | - _AVMetadataIdentifierID3MetadataMediaType
839 | - _AVMetadataIdentifierID3MetadataMood
840 | - _AVMetadataIdentifierID3MetadataOriginalAlbumTitle
841 | - _AVMetadataIdentifierID3MetadataOriginalFilename
842 | - _AVMetadataIdentifierID3MetadataOriginalLyricist
843 | - _AVMetadataIdentifierID3MetadataOriginalArtist
844 | - _AVMetadataIdentifierID3MetadataOriginalReleaseYear
845 | - _AVMetadataIdentifierID3MetadataFileOwner
846 | - _AVMetadataIdentifierID3MetadataLeadPerformer
847 | - _AVMetadataIdentifierID3MetadataBand
848 | - _AVMetadataIdentifierID3MetadataConductor
849 | - _AVMetadataIdentifierID3MetadataModifiedBy
850 | - _AVMetadataIdentifierID3MetadataPartOfASet
851 | - _AVMetadataIdentifierID3MetadataProducedNotice
852 | - _AVMetadataIdentifierID3MetadataPublisher
853 | - _AVMetadataIdentifierID3MetadataTrackNumber
854 | - _AVMetadataIdentifierID3MetadataRecordingDates
855 | - _AVMetadataIdentifierID3MetadataInternetRadioStationName
856 | - _AVMetadataIdentifierID3MetadataInternetRadioStationOwner
857 | - _AVMetadataIdentifierID3MetadataSize
858 | - _AVMetadataIdentifierID3MetadataAlbumSortOrder
859 | - _AVMetadataIdentifierID3MetadataPerformerSortOrder
860 | - _AVMetadataIdentifierID3MetadataTitleSortOrder
861 | - _AVMetadataIdentifierID3MetadataInternationalStandardRecordingCode
862 | - _AVMetadataIdentifierID3MetadataEncodedWith
863 | - _AVMetadataIdentifierID3MetadataSetSubtitle
864 | - _AVMetadataIdentifierID3MetadataYear
865 | - _AVMetadataIdentifierID3MetadataUserText
866 | - _AVMetadataIdentifierID3MetadataUniqueFileIdentifier
867 | - _AVMetadataIdentifierID3MetadataTermsOfUse
868 | - _AVMetadataIdentifierID3MetadataUnsynchronizedLyric
869 | - _AVMetadataIdentifierID3MetadataCommercialInformation
870 | - _AVMetadataIdentifierID3MetadataCopyrightInformation
871 | - _AVMetadataIdentifierID3MetadataOfficialAudioFileWebpage
872 | - _AVMetadataIdentifierID3MetadataOfficialArtistWebpage
873 | - _AVMetadataIdentifierID3MetadataOfficialAudioSourceWebpage
874 | - _AVMetadataIdentifierID3MetadataOfficialInternetRadioStationHomepage
875 | - _AVMetadataIdentifierID3MetadataPayment
876 | - _AVMetadataIdentifierID3MetadataOfficialPublisherWebpage
877 | - _AVMetadataIdentifierID3MetadataUserURL
878 | - _AVMetadataIdentifierIcyMetadataStreamTitle
879 | - _AVMetadataIdentifierIcyMetadataStreamURL
880 |
881 | - _AVCoreAnimationBeginTimeAtZero
882 |
883 | - _AVLayerVideoGravityResizeAspect
884 | - _AVLayerVideoGravityResizeAspectFill
885 | - _AVLayerVideoGravityResize
886 |
887 | - _AVCaptureDeviceTypeExternalUnknown
888 | - _AVCaptureDeviceTypeBuiltInMicrophone
889 | - _AVCaptureDeviceTypeBuiltInWideAngleCamera
890 | - _AVCaptureDeviceTypeBuiltInTelephotoCamera
891 | - _AVCaptureDeviceTypeBuiltInUltraWideCamera
892 | - _AVCaptureDeviceTypeBuiltInDualCamera
893 | - _AVCaptureDeviceTypeBuiltInDualWideCamera
894 | - _AVCaptureDeviceTypeBuiltInTripleCamera
895 | - _AVCaptureDeviceTypeBuiltInTrueDepthCamera
896 | - _AVCaptureDeviceTypeBuiltInLiDARDepthCamera
897 | - _AVCaptureDeviceTypeBuiltInDuoCamera
898 |
899 | - AVKit
900 | - BackgroundTasks
901 | - BusinessChat
902 | - CallKit
903 | - CarPlay
904 | - CellularDataDiagnosticsSuite
905 | - CFNetwork
906 | - CHIP
907 | - ClassKit
908 | - ClockKit
909 | - CloudKit
910 | - Combine
911 | - Contacts
912 | - ContactsUI
913 | - CoreAudio
914 | - CoreAudioKit
915 | - CoreAudioTypes
916 | - CoreBluetooth
917 | - CoreData
918 | - name: CoreFoundation
919 | symbols:
920 | - _CFAbsoluteTimeGetCurrent
921 | - _CFRelease
922 | - _CFRunLoopAddObserver
923 | - _CFRunLoopAddSource
924 | - _CFRunLoopAddTimer
925 | - _CFRunLoopGetMain
926 | - _CFRunLoopObserverCreate
927 | - _CFRunLoopSourceCreate
928 | - _CFRunLoopSourceInvalidate
929 | - _CFRunLoopTimerCreate
930 | - _CFRunLoopTimerInvalidate
931 | - _CFRunLoopTimerSetNextFireDate
932 | - _CFRunLoopWakeUp
933 | - _kCFRunLoopCommonModes
934 | - _kCFRunLoopDefaultMode
935 | - CoreGraphics
936 | - CoreHaptics
937 | - CoreImage
938 | - CoreLocation
939 | - CoreLocationUI
940 | - CoreMedia
941 | - CoreMIDI
942 | - CoreML
943 | - CoreMotion
944 | - CoreNFC
945 | - CoreServices
946 | - CoreSpotlight
947 | - CoreTelephony
948 | - CoreText
949 | - CoreVideo
950 | - CreateML
951 | - CryptoKit
952 | - CryptoTokenKit
953 | - DataDetection
954 | - DeveloperToolsSupport
955 | - DeviceActivity
956 | - DeviceCheck
957 | - EventKit
958 | - EventKitUI
959 | - ExposureNotification
960 | - ExternalAccessory
961 | - FamilyControls
962 | - FileProvider
963 | - FileProviderUI
964 | - name: Foundation
965 | symbols:
966 | - _NSLog
967 | - GameController
968 | - GameKit
969 | - GameplayKit
970 | - GLKit
971 | - GroupActivities
972 | - GSS
973 | - HealthKit
974 | - HealthKitUI
975 | - HomeKit
976 | - iAd
977 | - IdentityLookup
978 | - IdentityLookupUI
979 | - ImageCaptureCore
980 | - ImageIO
981 | - Intents
982 | - IntentsUI
983 | - IOKit
984 | - IOSurface
985 | - JavaScriptCore
986 | - LinkPresentation
987 | - LocalAuthentication
988 | - ManagedSettings
989 | - ManagedSettingsUI
990 | - MapKit
991 | - MediaAccessibility
992 | - MediaPlayer
993 | - MediaSetup
994 | - MediaToolbox
995 | - Messages
996 | - MessageUI
997 | - name: Metal
998 | symbols:
999 | - _MTLCreateSystemDefaultDevice
1000 | - MetalKit
1001 | - MetalPerformanceShaders
1002 | - MetalPerformanceShadersGraph
1003 | - MetricKit
1004 | - MLCompute
1005 | - MobileCoreServices
1006 | - ModelIO
1007 | - MultipeerConnectivity
1008 | - MusicKit
1009 | - NaturalLanguage
1010 | - NearbyInteraction
1011 | - Network
1012 | - NetworkExtension
1013 | - NewsstandKit
1014 | - NotificationCenter
1015 | - OpenAL
1016 | - OpenGLES
1017 | - OSLog
1018 | - PassKit
1019 | - PDFKit
1020 | - PencilKit
1021 | - PHASE
1022 | - Photos
1023 | - PhotosUI
1024 | - ProximityReader
1025 | - PushKit
1026 | - QuartzCore
1027 | - QuickLook
1028 | - QuickLookThumbnailing
1029 | - RealityFoundation
1030 | - RealityKit
1031 | - ReplayKit
1032 | - SafariServices
1033 | - SceneKit
1034 | - ScreenTime
1035 | - name: Security
1036 | symbols:
1037 | - _SecRandomCopyBytes
1038 | - SensorKit
1039 | - ShazamKit
1040 | - Social
1041 | - SoundAnalysis
1042 | - Speech
1043 | - SpriteKit
1044 | - StoreKit
1045 | - SwiftUI
1046 | - SystemConfiguration
1047 | - TabularData
1048 | - ThreadNetwork
1049 | - Twitter
1050 | - name: UIKit
1051 | symbols:
1052 | - _UIApplicationMain
1053 | - _UIApplicationLaunchOptionsSourceApplicationKey
1054 | - _UIApplicationLaunchOptionsRemoteNotificationKey
1055 | - _UIApplicationLaunchOptionsAnnotationKey
1056 | - _UIApplicationLaunchOptionsLocationKey
1057 | - _UIApplicationLaunchOptionsNewsstandDownloadsKey
1058 | - _UIApplicationLaunchOptionsBluetoothCentralsKey
1059 | - _UIApplicationLaunchOptionsBluetoothPeripheralsKey
1060 | - _UIApplicationLaunchOptionsShortcutItemKey
1061 | - _UIApplicationLaunchOptionsEventAttributionKey
1062 | - _UIApplicationLaunchOptionsUserActivityDictionaryKey
1063 | - _UIApplicationLaunchOptionsUserActivityTypeKey
1064 | - _UIApplicationLaunchOptionsKey
1065 | - UniformTypeIdentifiers
1066 | - UserNotifications
1067 | - UserNotificationsUI
1068 | - VideoSubscriberAccount
1069 | - VideoToolbox
1070 | - Vision
1071 | - VisionKit
1072 | - WatchConnectivity
1073 | - WebKit
1074 | - WidgetKit
--------------------------------------------------------------------------------
/simple_rust_ios_app.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | application-identifier
6 | REDACTED.rs.rust.testing-ios-rust
7 | com.apple.developer.team-identifier
8 | REDACTED
9 | get-task-allow
10 |
11 | keychain-access-groups
12 |
13 | REDACTED.*
14 | com.apple.token
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/main.rs:
--------------------------------------------------------------------------------
1 | use std::sync::RwLock;
2 |
3 | use cacao::uikit::{App, AppDelegate, Scene, SceneConfig, SceneConnectionOptions, SceneSession, Window, WindowSceneDelegate};
4 |
5 | use cacao::color::Color;
6 | use cacao::image::{Image, ImageView};
7 | use cacao::layout::{Layout, LayoutConstraint};
8 | use cacao::view::{View, ViewController, ViewDelegate};
9 |
10 | #[derive(Default)]
11 | struct TestApp;
12 |
13 | impl AppDelegate for TestApp {
14 | fn config_for_scene_session(&self, session: SceneSession, _options: SceneConnectionOptions) -> SceneConfig {
15 | SceneConfig::new("Default Configuration", session.role())
16 | }
17 | }
18 |
19 | #[derive(Default)]
20 | pub struct RootView {
21 | pub red: View,
22 | pub green: View,
23 | pub blue: View,
24 | pub image: ImageView
25 | }
26 |
27 | impl ViewDelegate for RootView {
28 | const NAME: &'static str = "RootView";
29 |
30 | fn did_load(&mut self, view: View) {
31 | self.red.set_background_color(Color::SystemRed);
32 | self.red.layer.set_corner_radius(16.);
33 | view.add_subview(&self.red);
34 |
35 | self.green.set_background_color(Color::SystemGreen);
36 | view.add_subview(&self.green);
37 |
38 | self.blue.set_background_color(Color::SystemBlue);
39 | view.add_subview(&self.blue);
40 |
41 | let image_bytes = include_bytes!("../resources/favicon.ico");
42 | self.image = ImageView::new();
43 | self.image.set_image(&Image::with_data(image_bytes));
44 | view.add_subview(&self.image);
45 |
46 | LayoutConstraint::activate(&[
47 | self.red.top.constraint_equal_to(&view.top).offset(16.),
48 | self.red.leading.constraint_equal_to(&view.leading).offset(16.),
49 | self.red.trailing.constraint_equal_to(&view.trailing).offset(-16.),
50 | self.red.height.constraint_equal_to_constant(100.),
51 | self.green.top.constraint_equal_to(&self.red.bottom).offset(16.),
52 | self.green.leading.constraint_equal_to(&view.leading).offset(16.),
53 | self.green.trailing.constraint_equal_to(&view.trailing).offset(-16.),
54 | self.green.height.constraint_equal_to_constant(120.),
55 | self.blue.top.constraint_equal_to(&self.green.bottom).offset(16.),
56 | self.blue.leading.constraint_equal_to(&view.leading).offset(16.),
57 | self.blue.trailing.constraint_equal_to(&view.trailing).offset(-16.),
58 | self.blue.bottom.constraint_equal_to(&view.bottom).offset(-16.)
59 | ]);
60 | }
61 | }
62 |
63 | #[derive(Default)]
64 | pub struct WindowScene {
65 | pub window: RwLock