react-native-wgpu 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cpp/rnwgpu/api/GPUDevice.cpp +5 -3
- package/lib/commonjs/Canvas.js.map +1 -1
- package/lib/commonjs/Offscreen.js +121 -0
- package/lib/commonjs/Offscreen.js.map +1 -0
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/Canvas.js.map +1 -1
- package/lib/module/Offscreen.js +114 -0
- package/lib/module/Offscreen.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/lib/commonjs/Offscreen.d.ts +31 -0
- package/lib/typescript/lib/commonjs/Offscreen.d.ts.map +1 -0
- package/lib/typescript/lib/module/Offscreen.d.ts +30 -0
- package/lib/typescript/lib/module/Offscreen.d.ts.map +1 -0
- package/lib/typescript/lib/module/index.d.ts +1 -0
- package/lib/typescript/src/Canvas.d.ts +3 -3
- package/lib/typescript/src/Canvas.d.ts.map +1 -1
- package/lib/typescript/src/Offscreen.d.ts +26 -0
- package/lib/typescript/src/Offscreen.d.ts.map +1 -0
- package/lib/typescript/src/__tests__/setup.d.ts +5 -4
- package/lib/typescript/src/__tests__/setup.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/libs/android/arm64-v8a/libwebgpu_dawn.so +0 -0
- package/libs/android/armeabi-v7a/libwebgpu_dawn.so +0 -0
- package/libs/android/x86/libwebgpu_dawn.so +0 -0
- package/libs/android/x86_64/libwebgpu_dawn.so +0 -0
- package/libs/apple/arm64_iphoneos/libwebgpu_dawn.a +0 -0
- package/libs/apple/arm64_iphonesimulator/libwebgpu_dawn.a +0 -0
- package/libs/apple/arm64_xros/libwebgpu_dawn.a +0 -0
- package/libs/apple/arm64_xrsimulator/libwebgpu_dawn.a +0 -0
- package/libs/apple/{libwebgpu_dawn.a → iphonesimulator/libwebgpu_dawn.a} +0 -0
- package/libs/apple/libwebgpu_dawn.xcframework/Info.plist +45 -0
- package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64/libwebgpu_dawn.a +0 -0
- package/libs/apple/libwebgpu_dawn.xcframework/ios-arm64_x86_64-simulator/libwebgpu_dawn.a +0 -0
- package/libs/apple/{libwebgpu_dawn_macosx.xcframework → libwebgpu_dawn.xcframework}/macos-arm64_x86_64/libwebgpu_dawn.a +0 -0
- package/libs/apple/{libwebgpu_dawn_visionos.xcframework → libwebgpu_dawn.xcframework}/xros-arm64/libwebgpu_dawn.a +0 -0
- package/libs/apple/{x86_64_xrsimulator → libwebgpu_dawn.xcframework/xros-arm64-simulator}/libwebgpu_dawn.a +0 -0
- package/libs/apple/universal_macosx/libwebgpu_dawn.a +0 -0
- package/libs/apple/x86_64_iphonesimulator/libwebgpu_dawn.a +0 -0
- package/package.json +1 -1
- package/react-native-wgpu.podspec +2 -8
- package/src/Canvas.tsx +4 -4
- package/src/Offscreen.ts +160 -0
- package/src/__tests__/ExternalTexture.spec.ts +4 -4
- package/src/__tests__/Texture.spec.ts +8 -2
- package/src/__tests__/demos/ABuffer.spec.ts +17 -12
- package/src/__tests__/demos/Blur.spec.ts +2 -1
- package/src/__tests__/demos/Cube.spec.ts +16 -12
- package/src/__tests__/demos/FractalCube.spec.ts +6 -5
- package/src/__tests__/demos/OcclusionQuery.spec.ts +3 -3
- package/src/__tests__/demos/RenderBundles.spec.ts +4 -3
- package/src/__tests__/demos/Triangle.spec.ts +27 -9
- package/src/__tests__/setup.ts +25 -10
- package/src/index.tsx +1 -0
- package/lib/typescript/src/__tests__/components/DrawingContext.d.ts +0 -12
- package/lib/typescript/src/__tests__/components/DrawingContext.d.ts.map +0 -1
- package/libs/apple/libwebgpu_dawn_macosx.xcframework/Info.plist +0 -28
- package/libs/apple/libwebgpu_dawn_visionos.a +0 -0
- package/libs/apple/libwebgpu_dawn_visionos.xcframework/Info.plist +0 -44
- package/libs/apple/libwebgpu_dawn_visionos.xcframework/xros-arm64_x86_64-simulator/libwebgpu_dawn_visionos.a +0 -0
- package/src/__tests__/components/DrawingContext.ts +0 -11
|
@@ -56,7 +56,7 @@ export type TypedArrayConstructor =
|
|
|
56
56
|
describe("OcclusionQuery", () => {
|
|
57
57
|
it("occlusionQuery", async () => {
|
|
58
58
|
const result = await client.eval(
|
|
59
|
-
({ device, ctx, gpu, solidColorLitWGSL, mat4 }) => {
|
|
59
|
+
({ device, ctx, gpu, solidColorLitWGSL, mat4, canvas }) => {
|
|
60
60
|
const depthFormat = "depth24plus";
|
|
61
61
|
const presentationFormat = gpu.getPreferredCanvasFormat();
|
|
62
62
|
const animate = true;
|
|
@@ -262,7 +262,7 @@ describe("OcclusionQuery", () => {
|
|
|
262
262
|
|
|
263
263
|
const projection = mat4.perspective(
|
|
264
264
|
(30 * Math.PI) / 180,
|
|
265
|
-
ctx.width / ctx.height,
|
|
265
|
+
ctx.canvas.width / ctx.canvas.height,
|
|
266
266
|
0.5,
|
|
267
267
|
100,
|
|
268
268
|
);
|
|
@@ -365,7 +365,7 @@ describe("OcclusionQuery", () => {
|
|
|
365
365
|
}
|
|
366
366
|
}
|
|
367
367
|
render(1721766068905 + 150 * 16);
|
|
368
|
-
return
|
|
368
|
+
return canvas.getImageData().then((image) => ({ image, visible }));
|
|
369
369
|
},
|
|
370
370
|
{ solidColorLitWGSL: solidColorLit },
|
|
371
371
|
);
|
|
@@ -75,6 +75,7 @@ describe("Render Bundles", () => {
|
|
|
75
75
|
vec3,
|
|
76
76
|
assets: { saturn, moon },
|
|
77
77
|
vals,
|
|
78
|
+
canvas,
|
|
78
79
|
}) => {
|
|
79
80
|
interface SphereMesh {
|
|
80
81
|
vertices: Float32Array;
|
|
@@ -255,7 +256,7 @@ describe("Render Bundles", () => {
|
|
|
255
256
|
});
|
|
256
257
|
|
|
257
258
|
const depthTexture = device.createTexture({
|
|
258
|
-
size: [ctx.width, ctx.height],
|
|
259
|
+
size: [ctx.canvas.width, ctx.canvas.height],
|
|
259
260
|
format: "depth24plus",
|
|
260
261
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
261
262
|
});
|
|
@@ -447,7 +448,7 @@ describe("Render Bundles", () => {
|
|
|
447
448
|
},
|
|
448
449
|
};
|
|
449
450
|
|
|
450
|
-
const aspect = ctx.width / ctx.height;
|
|
451
|
+
const aspect = ctx.canvas.width / ctx.canvas.height;
|
|
451
452
|
const projectionMatrix = mat4.perspective(
|
|
452
453
|
(2 * Math.PI) / 5,
|
|
453
454
|
aspect,
|
|
@@ -569,7 +570,7 @@ describe("Render Bundles", () => {
|
|
|
569
570
|
device.queue.submit([commandEncoder.finish()]);
|
|
570
571
|
}
|
|
571
572
|
frame();
|
|
572
|
-
return
|
|
573
|
+
return canvas.getImageData();
|
|
573
574
|
},
|
|
574
575
|
{ meshWGSL: mesh, vals: randomValues },
|
|
575
576
|
);
|
|
@@ -3,7 +3,13 @@ import { checkImage, client, encodeImage } from "../setup";
|
|
|
3
3
|
describe("Triangle", () => {
|
|
4
4
|
it("Simple Triangle", async () => {
|
|
5
5
|
const result = await client.eval(
|
|
6
|
-
({
|
|
6
|
+
({
|
|
7
|
+
device,
|
|
8
|
+
shaders: { triangleVertWGSL, redFragWGSL },
|
|
9
|
+
gpu,
|
|
10
|
+
ctx,
|
|
11
|
+
canvas,
|
|
12
|
+
}) => {
|
|
7
13
|
const pipeline = device.createRenderPipeline({
|
|
8
14
|
layout: "auto",
|
|
9
15
|
vertex: {
|
|
@@ -46,7 +52,7 @@ describe("Triangle", () => {
|
|
|
46
52
|
passEncoder.draw(3);
|
|
47
53
|
passEncoder.end();
|
|
48
54
|
device.queue.submit([commandEncoder.finish()]);
|
|
49
|
-
return
|
|
55
|
+
return canvas.getImageData();
|
|
50
56
|
},
|
|
51
57
|
);
|
|
52
58
|
const image = encodeImage(result);
|
|
@@ -54,7 +60,13 @@ describe("Triangle", () => {
|
|
|
54
60
|
});
|
|
55
61
|
it("Async Simple Triangle", async () => {
|
|
56
62
|
const result = await client.eval(
|
|
57
|
-
({
|
|
63
|
+
({
|
|
64
|
+
device,
|
|
65
|
+
shaders: { triangleVertWGSL, redFragWGSL },
|
|
66
|
+
gpu,
|
|
67
|
+
ctx,
|
|
68
|
+
canvas,
|
|
69
|
+
}) => {
|
|
58
70
|
return device
|
|
59
71
|
.createRenderPipelineAsync({
|
|
60
72
|
layout: "auto",
|
|
@@ -98,7 +110,7 @@ describe("Triangle", () => {
|
|
|
98
110
|
passEncoder.draw(3);
|
|
99
111
|
passEncoder.end();
|
|
100
112
|
device.queue.submit([commandEncoder.finish()]);
|
|
101
|
-
return
|
|
113
|
+
return canvas.getImageData();
|
|
102
114
|
});
|
|
103
115
|
},
|
|
104
116
|
);
|
|
@@ -107,7 +119,13 @@ describe("Triangle", () => {
|
|
|
107
119
|
});
|
|
108
120
|
it("Triangle MSAA", async () => {
|
|
109
121
|
const result = await client.eval(
|
|
110
|
-
({
|
|
122
|
+
({
|
|
123
|
+
device,
|
|
124
|
+
shaders: { triangleVertWGSL, redFragWGSL },
|
|
125
|
+
gpu,
|
|
126
|
+
ctx,
|
|
127
|
+
canvas,
|
|
128
|
+
}) => {
|
|
111
129
|
const sampleCount = 4;
|
|
112
130
|
const presentationFormat = gpu.getPreferredCanvasFormat();
|
|
113
131
|
const pipeline = device.createRenderPipeline({
|
|
@@ -136,7 +154,7 @@ describe("Triangle", () => {
|
|
|
136
154
|
});
|
|
137
155
|
|
|
138
156
|
const texture = device.createTexture({
|
|
139
|
-
size: [ctx.width, ctx.height],
|
|
157
|
+
size: [ctx.canvas.width, ctx.canvas.height],
|
|
140
158
|
sampleCount,
|
|
141
159
|
format: presentationFormat,
|
|
142
160
|
usage: GPUTextureUsage.RENDER_ATTACHMENT,
|
|
@@ -163,7 +181,7 @@ describe("Triangle", () => {
|
|
|
163
181
|
passEncoder.draw(3);
|
|
164
182
|
passEncoder.end();
|
|
165
183
|
device.queue.submit([commandEncoder.finish()]);
|
|
166
|
-
return
|
|
184
|
+
return canvas.getImageData();
|
|
167
185
|
},
|
|
168
186
|
);
|
|
169
187
|
const image = encodeImage(result);
|
|
@@ -171,7 +189,7 @@ describe("Triangle", () => {
|
|
|
171
189
|
});
|
|
172
190
|
it("Triangle with constants", async () => {
|
|
173
191
|
const result = await client.eval(
|
|
174
|
-
({ device, shaders: { triangleVertWGSL }, gpu, ctx }) => {
|
|
192
|
+
({ device, shaders: { triangleVertWGSL }, gpu, ctx, canvas }) => {
|
|
175
193
|
const pipeline = device.createRenderPipeline({
|
|
176
194
|
layout: "auto",
|
|
177
195
|
vertex: {
|
|
@@ -239,7 +257,7 @@ describe("Triangle", () => {
|
|
|
239
257
|
passEncoder.draw(3);
|
|
240
258
|
passEncoder.end();
|
|
241
259
|
device.queue.submit([commandEncoder.finish()]);
|
|
242
|
-
return
|
|
260
|
+
return canvas.getImageData();
|
|
243
261
|
},
|
|
244
262
|
);
|
|
245
263
|
const image = encodeImage(result);
|
package/src/__tests__/setup.ts
CHANGED
|
@@ -11,7 +11,8 @@ import type { mat4, vec3, mat3 } from "wgpu-matrix";
|
|
|
11
11
|
import type { Server, WebSocket } from "ws";
|
|
12
12
|
import type { Browser, Page } from "puppeteer";
|
|
13
13
|
|
|
14
|
-
import type {
|
|
14
|
+
import type { GPUOffscreenCanvas } from "../Offscreen";
|
|
15
|
+
|
|
15
16
|
import { cubeVertexArray } from "./components/cube";
|
|
16
17
|
import { redFragWGSL, triangleVertWGSL } from "./components/triangle";
|
|
17
18
|
import { DEBUG, REFERENCE } from "./config";
|
|
@@ -26,7 +27,7 @@ declare global {
|
|
|
26
27
|
var testOS: TestOS;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
interface
|
|
30
|
+
interface GPUTestingContext {
|
|
30
31
|
gpu: GPU;
|
|
31
32
|
adapter: GPUAdapter;
|
|
32
33
|
device: GPUDevice;
|
|
@@ -43,7 +44,8 @@ interface GPUContext {
|
|
|
43
44
|
moon: ImageData;
|
|
44
45
|
saturn: ImageData;
|
|
45
46
|
};
|
|
46
|
-
ctx:
|
|
47
|
+
ctx: GPUCanvasContext;
|
|
48
|
+
canvas: GPUOffscreenCanvas;
|
|
47
49
|
mat4: typeof mat4;
|
|
48
50
|
vec3: typeof vec3;
|
|
49
51
|
mat3: typeof mat3;
|
|
@@ -61,7 +63,7 @@ type JSONValue =
|
|
|
61
63
|
|
|
62
64
|
interface TestingClient {
|
|
63
65
|
eval<C = Ctx, R = JSONValue>(
|
|
64
|
-
fn: (ctx:
|
|
66
|
+
fn: (ctx: GPUTestingContext & C) => R | Promise<R>,
|
|
65
67
|
ctx?: C,
|
|
66
68
|
): Promise<R>;
|
|
67
69
|
OS: TestOS;
|
|
@@ -86,7 +88,7 @@ class RemoteTestingClient implements TestingClient {
|
|
|
86
88
|
readonly arch = global.testArch;
|
|
87
89
|
|
|
88
90
|
eval<C = Ctx, R = JSONValue>(
|
|
89
|
-
fn: (ctx:
|
|
91
|
+
fn: (ctx: GPUTestingContext & C) => R | Promise<R>,
|
|
90
92
|
context?: C,
|
|
91
93
|
): Promise<R> {
|
|
92
94
|
const ctx = this.prepareContext(context ?? {});
|
|
@@ -131,7 +133,7 @@ class ReferenceTestingClient implements TestingClient {
|
|
|
131
133
|
private page: Page | null = null;
|
|
132
134
|
|
|
133
135
|
async eval<C = Ctx, R = JSONValue>(
|
|
134
|
-
fn: (ctx:
|
|
136
|
+
fn: (ctx: GPUTestingContext & C) => R | Promise<R>,
|
|
135
137
|
ctx?: C,
|
|
136
138
|
): Promise<R> {
|
|
137
139
|
if (!this.page) {
|
|
@@ -139,7 +141,7 @@ class ReferenceTestingClient implements TestingClient {
|
|
|
139
141
|
}
|
|
140
142
|
const fTexturePath = path.join(
|
|
141
143
|
__dirname,
|
|
142
|
-
"../../../../apps/
|
|
144
|
+
"../../../../apps/example/src/assets/f.png",
|
|
143
145
|
);
|
|
144
146
|
const fTextureData = fs.readFileSync(fTexturePath);
|
|
145
147
|
const fTextureBase64 = `data:image/png;base64,${fTextureData.toString("base64")}`;
|
|
@@ -168,6 +170,14 @@ class ReferenceTestingClient implements TestingClient {
|
|
|
168
170
|
getCurrentTexture() {
|
|
169
171
|
return this.texture;
|
|
170
172
|
}
|
|
173
|
+
|
|
174
|
+
get canvas() {
|
|
175
|
+
return {
|
|
176
|
+
width: this.width,
|
|
177
|
+
height: this.height,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
|
|
171
181
|
getImageData() {
|
|
172
182
|
const commandEncoder = this.device.createCommandEncoder();
|
|
173
183
|
const bytesPerRow = this.width * 4;
|
|
@@ -206,6 +216,11 @@ class ReferenceTestingClient implements TestingClient {
|
|
|
206
216
|
redFragWGSL,
|
|
207
217
|
},
|
|
208
218
|
ctx,
|
|
219
|
+
canvas: {
|
|
220
|
+
getImageData: ctx.getImageData.bind(ctx),
|
|
221
|
+
width: ctx.width,
|
|
222
|
+
height: ctx.height,
|
|
223
|
+
},
|
|
209
224
|
mat4,
|
|
210
225
|
vec3,
|
|
211
226
|
mat3,
|
|
@@ -234,13 +249,13 @@ class ReferenceTestingClient implements TestingClient {
|
|
|
234
249
|
.catch((e) => console.log(e));
|
|
235
250
|
await page.waitForNetworkIdle();
|
|
236
251
|
const di3D = decodeImage(
|
|
237
|
-
path.join(__dirname, "../../../../apps/
|
|
252
|
+
path.join(__dirname, "../../../../apps/example/src/assets/Di-3d.png"),
|
|
238
253
|
);
|
|
239
254
|
const moon = decodeImage(
|
|
240
|
-
path.join(__dirname, "../../../../apps/
|
|
255
|
+
path.join(__dirname, "../../../../apps/example/src/assets/moon.png"),
|
|
241
256
|
);
|
|
242
257
|
const saturn = decodeImage(
|
|
243
|
-
path.join(__dirname, "../../../../apps/
|
|
258
|
+
path.join(__dirname, "../../../../apps/example/src/assets/saturn.png"),
|
|
244
259
|
);
|
|
245
260
|
await page.evaluate(
|
|
246
261
|
`
|
package/src/index.tsx
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface DrawingContext {
|
|
2
|
-
width: number;
|
|
3
|
-
height: number;
|
|
4
|
-
getCurrentTexture(): GPUTexture;
|
|
5
|
-
getImageData(): Promise<{
|
|
6
|
-
data: number[];
|
|
7
|
-
width: number;
|
|
8
|
-
height: number;
|
|
9
|
-
format: string;
|
|
10
|
-
}>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=DrawingContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DrawingContext.d.ts","sourceRoot":"","sources":["../../../../../src/__tests__/components/DrawingContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,IAAI,UAAU,CAAC;IAChC,YAAY,IAAI,OAAO,CAAC;QACtB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>AvailableLibraries</key>
|
|
6
|
-
<array>
|
|
7
|
-
<dict>
|
|
8
|
-
<key>BinaryPath</key>
|
|
9
|
-
<string>libwebgpu_dawn.a</string>
|
|
10
|
-
<key>LibraryIdentifier</key>
|
|
11
|
-
<string>macos-arm64_x86_64</string>
|
|
12
|
-
<key>LibraryPath</key>
|
|
13
|
-
<string>libwebgpu_dawn.a</string>
|
|
14
|
-
<key>SupportedArchitectures</key>
|
|
15
|
-
<array>
|
|
16
|
-
<string>arm64</string>
|
|
17
|
-
<string>x86_64</string>
|
|
18
|
-
</array>
|
|
19
|
-
<key>SupportedPlatform</key>
|
|
20
|
-
<string>macos</string>
|
|
21
|
-
</dict>
|
|
22
|
-
</array>
|
|
23
|
-
<key>CFBundlePackageType</key>
|
|
24
|
-
<string>XFWK</string>
|
|
25
|
-
<key>XCFrameworkFormatVersion</key>
|
|
26
|
-
<string>1.0</string>
|
|
27
|
-
</dict>
|
|
28
|
-
</plist>
|
|
Binary file
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>AvailableLibraries</key>
|
|
6
|
-
<array>
|
|
7
|
-
<dict>
|
|
8
|
-
<key>BinaryPath</key>
|
|
9
|
-
<string>libwebgpu_dawn.a</string>
|
|
10
|
-
<key>LibraryIdentifier</key>
|
|
11
|
-
<string>xros-arm64</string>
|
|
12
|
-
<key>LibraryPath</key>
|
|
13
|
-
<string>libwebgpu_dawn.a</string>
|
|
14
|
-
<key>SupportedArchitectures</key>
|
|
15
|
-
<array>
|
|
16
|
-
<string>arm64</string>
|
|
17
|
-
</array>
|
|
18
|
-
<key>SupportedPlatform</key>
|
|
19
|
-
<string>xros</string>
|
|
20
|
-
</dict>
|
|
21
|
-
<dict>
|
|
22
|
-
<key>BinaryPath</key>
|
|
23
|
-
<string>libwebgpu_dawn_visionos.a</string>
|
|
24
|
-
<key>LibraryIdentifier</key>
|
|
25
|
-
<string>xros-arm64_x86_64-simulator</string>
|
|
26
|
-
<key>LibraryPath</key>
|
|
27
|
-
<string>libwebgpu_dawn_visionos.a</string>
|
|
28
|
-
<key>SupportedArchitectures</key>
|
|
29
|
-
<array>
|
|
30
|
-
<string>arm64</string>
|
|
31
|
-
<string>x86_64</string>
|
|
32
|
-
</array>
|
|
33
|
-
<key>SupportedPlatform</key>
|
|
34
|
-
<string>xros</string>
|
|
35
|
-
<key>SupportedPlatformVariant</key>
|
|
36
|
-
<string>simulator</string>
|
|
37
|
-
</dict>
|
|
38
|
-
</array>
|
|
39
|
-
<key>CFBundlePackageType</key>
|
|
40
|
-
<string>XFWK</string>
|
|
41
|
-
<key>XCFrameworkFormatVersion</key>
|
|
42
|
-
<string>1.0</string>
|
|
43
|
-
</dict>
|
|
44
|
-
</plist>
|
|
Binary file
|