expo-arcgis 0.3.2 → 0.3.3
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-arcgis",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "ArcGIS Maps SDK for React Native — native Android (Kotlin) & iOS (Swift) map rendering as an Expo module",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -59,7 +59,8 @@
|
|
|
59
59
|
"prettier": "^3.0.0",
|
|
60
60
|
"publint": "^0.3.21",
|
|
61
61
|
"react-native": "0.82.1",
|
|
62
|
-
"typescript": "^5.9.2"
|
|
62
|
+
"typescript": "^5.9.2",
|
|
63
|
+
"xcode": "^3.0.1"
|
|
63
64
|
},
|
|
64
65
|
"jest": {
|
|
65
66
|
"preset": "jest-expo",
|
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import { ConfigPlugin } from 'expo/config-plugins';
|
|
1
|
+
import { ConfigPlugin, XcodeProject } from 'expo/config-plugins';
|
|
2
2
|
import { ArcGISPluginProps } from './types';
|
|
3
3
|
export declare const withArcGISIos: ConfigPlugin<ArcGISPluginProps>;
|
|
4
|
+
/** Mutates the parsed Xcode project in place. Exported for tests. */
|
|
5
|
+
export declare function embedArcGISFramework(project: XcodeProject): void;
|
|
6
|
+
/**
|
|
7
|
+
* Both the app target and the ExpoArcgis pod target run SignatureCollection for the signed
|
|
8
|
+
* ArcGIS xcframework, and archive-time signature aggregation copies both results into
|
|
9
|
+
* Signatures/ — failing with `"ArcGIS.xcframework-ios.signature" couldn't be copied to
|
|
10
|
+
* "Signatures" because an item with the same name already exists` (same Xcode bug as
|
|
11
|
+
* maplibre-react-native#1489). Delete the app-level copy during the build so aggregation
|
|
12
|
+
* only sees the pod target's. Mutates the parsed Xcode project in place; exported for tests.
|
|
13
|
+
*/
|
|
14
|
+
export declare function addSignatureCleanupPhase(project: XcodeProject): void;
|
|
4
15
|
//# sourceMappingURL=withArcGISIos.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withArcGISIos.d.ts","sourceRoot":"","sources":["../src/withArcGISIos.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,
|
|
1
|
+
{"version":3,"file":"withArcGISIos.d.ts","sourceRoot":"","sources":["../src/withArcGISIos.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAIZ,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAK5C,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,iBAAiB,CAoBzD,CAAC;AAyCF,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CA8DhE;AAUD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAqBpE"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.withArcGISIos = void 0;
|
|
4
|
+
exports.embedArcGISFramework = embedArcGISFramework;
|
|
5
|
+
exports.addSignatureCleanupPhase = addSignatureCleanupPhase;
|
|
4
6
|
const config_plugins_1 = require("expo/config-plugins");
|
|
5
7
|
/** ArcGIS Maps SDK for Swift 300.0 requires iOS 17.0+. */
|
|
6
8
|
const REQUIRED_IOS_DEPLOYMENT_TARGET = '17.0';
|
|
@@ -14,6 +16,7 @@ const withArcGISIos = (config, props) => {
|
|
|
14
16
|
config = withArcGISPodfileDeploymentTarget(config, target);
|
|
15
17
|
config = withArcGISAppDeploymentTarget(config, target);
|
|
16
18
|
config = withArcGISEmbedFramework(config);
|
|
19
|
+
config = withArcGISSignatureCleanup(config);
|
|
17
20
|
if (props.apiKey) {
|
|
18
21
|
config = withArcGISApiKeyInfoPlist(config, props.apiKey);
|
|
19
22
|
}
|
|
@@ -54,7 +57,11 @@ const withArcGISAppDeploymentTarget = (config, target) => (0, config_plugins_1.w
|
|
|
54
57
|
* (CodeSignOnCopy) on the app target referencing the built product — Xcode's "Embed & Sign".
|
|
55
58
|
*/
|
|
56
59
|
const withArcGISEmbedFramework = (config) => (0, config_plugins_1.withXcodeProject)(config, (cfg) => {
|
|
57
|
-
|
|
60
|
+
embedArcGISFramework(cfg.modResults);
|
|
61
|
+
return cfg;
|
|
62
|
+
});
|
|
63
|
+
/** Mutates the parsed Xcode project in place. Exported for tests. */
|
|
64
|
+
function embedArcGISFramework(project) {
|
|
58
65
|
const FRAMEWORK = 'ArcGIS.framework';
|
|
59
66
|
const COMMENT = `${FRAMEWORK} in Embed Frameworks`;
|
|
60
67
|
const objects = project.hash.project.objects;
|
|
@@ -62,24 +69,11 @@ const withArcGISEmbedFramework = (config) => (0, config_plugins_1.withXcodeProje
|
|
|
62
69
|
const buildFiles = objects.PBXBuildFile || {};
|
|
63
70
|
for (const key of Object.keys(buildFiles)) {
|
|
64
71
|
if (buildFiles[key] === COMMENT) {
|
|
65
|
-
return
|
|
72
|
+
return;
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
|
-
// Find the application target (fall back to the first target).
|
|
69
75
|
const nativeTargets = objects.PBXNativeTarget || {};
|
|
70
|
-
|
|
71
|
-
for (const key of Object.keys(nativeTargets)) {
|
|
72
|
-
if (key.endsWith('_comment'))
|
|
73
|
-
continue;
|
|
74
|
-
const productType = String(nativeTargets[key].productType || '').replace(/"/g, '');
|
|
75
|
-
if (productType === 'com.apple.product-type.application') {
|
|
76
|
-
targetUuid = key;
|
|
77
|
-
break;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
if (!targetUuid) {
|
|
81
|
-
targetUuid = project.getFirstTarget().uuid;
|
|
82
|
-
}
|
|
76
|
+
const targetUuid = findApplicationTargetUuid(project);
|
|
83
77
|
// Create an "Embed Frameworks" copy-files phase (dstSubfolderSpec 10 = Frameworks).
|
|
84
78
|
const phase = project.addBuildPhase([], 'PBXCopyFilesBuildPhase', 'Embed Frameworks', targetUuid, 'frameworks');
|
|
85
79
|
// Reference the framework as a build product and embed it with code signing.
|
|
@@ -101,8 +95,62 @@ const withArcGISEmbedFramework = (config) => (0, config_plugins_1.withXcodeProje
|
|
|
101
95
|
};
|
|
102
96
|
objects.PBXBuildFile[`${buildFileUuid}_comment`] = COMMENT;
|
|
103
97
|
phase.buildPhase.files.push({ value: buildFileUuid, comment: COMMENT });
|
|
98
|
+
// addBuildPhase appends, which can land this copy phase after script phases other
|
|
99
|
+
// plugins added earlier (e.g. expo-datadog's dSYM upload) — Xcode then reports a
|
|
100
|
+
// dependency cycle: the copy is gated on the script phase, whose dSYM input needs
|
|
101
|
+
// the finished .app, which needs the copy. Move it to the slot after Resources,
|
|
102
|
+
// where Xcode itself puts Embed Frameworks, ahead of any tail script phases.
|
|
103
|
+
const buildPhases = (nativeTargets[targetUuid] || {}).buildPhases || [];
|
|
104
|
+
const embedIndex = buildPhases.findIndex((entry) => entry.value === phase.uuid);
|
|
105
|
+
const resourcesIndex = buildPhases.findIndex((entry) => entry.comment === 'Resources');
|
|
106
|
+
if (embedIndex !== -1 && resourcesIndex !== -1 && embedIndex > resourcesIndex + 1) {
|
|
107
|
+
const [entry] = buildPhases.splice(embedIndex, 1);
|
|
108
|
+
buildPhases.splice(resourcesIndex + 1, 0, entry);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const withArcGISSignatureCleanup = (config) => (0, config_plugins_1.withXcodeProject)(config, (cfg) => {
|
|
112
|
+
addSignatureCleanupPhase(cfg.modResults);
|
|
104
113
|
return cfg;
|
|
105
114
|
});
|
|
115
|
+
const SIGNATURE_CLEANUP_PHASE_NAME = '[expo-arcgis] Remove duplicate ArcGIS.xcframework signature';
|
|
116
|
+
/**
|
|
117
|
+
* Both the app target and the ExpoArcgis pod target run SignatureCollection for the signed
|
|
118
|
+
* ArcGIS xcframework, and archive-time signature aggregation copies both results into
|
|
119
|
+
* Signatures/ — failing with `"ArcGIS.xcframework-ios.signature" couldn't be copied to
|
|
120
|
+
* "Signatures" because an item with the same name already exists` (same Xcode bug as
|
|
121
|
+
* maplibre-react-native#1489). Delete the app-level copy during the build so aggregation
|
|
122
|
+
* only sees the pod target's. Mutates the parsed Xcode project in place; exported for tests.
|
|
123
|
+
*/
|
|
124
|
+
function addSignatureCleanupPhase(project) {
|
|
125
|
+
var _a;
|
|
126
|
+
const scriptPhases = project.hash.project.objects.PBXShellScriptBuildPhase || {};
|
|
127
|
+
// Idempotent: skip if already added (prebuild may run plugins more than once).
|
|
128
|
+
for (const key of Object.keys(scriptPhases)) {
|
|
129
|
+
if (key.endsWith('_comment'))
|
|
130
|
+
continue;
|
|
131
|
+
if (String(((_a = scriptPhases[key]) === null || _a === void 0 ? void 0 : _a.name) || '').includes(SIGNATURE_CLEANUP_PHASE_NAME)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const phase = project.addBuildPhase([], 'PBXShellScriptBuildPhase', SIGNATURE_CLEANUP_PHASE_NAME, findApplicationTargetUuid(project), {
|
|
136
|
+
shellPath: '/bin/sh',
|
|
137
|
+
shellScript: 'rm -rf "$CONFIGURATION_BUILD_DIR/ArcGIS.xcframework-ios.signature"',
|
|
138
|
+
});
|
|
139
|
+
phase.buildPhase.alwaysOutOfDate = 1;
|
|
140
|
+
}
|
|
141
|
+
/** Finds the application target (falls back to the first target). */
|
|
142
|
+
function findApplicationTargetUuid(project) {
|
|
143
|
+
const nativeTargets = project.hash.project.objects.PBXNativeTarget || {};
|
|
144
|
+
for (const key of Object.keys(nativeTargets)) {
|
|
145
|
+
if (key.endsWith('_comment'))
|
|
146
|
+
continue;
|
|
147
|
+
const productType = String(nativeTargets[key].productType || '').replace(/"/g, '');
|
|
148
|
+
if (productType === 'com.apple.product-type.application') {
|
|
149
|
+
return key;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return project.getFirstTarget().uuid;
|
|
153
|
+
}
|
|
106
154
|
/** Stores the API key in Info.plist as `ArcGISAPIKey` for the native runtime to read. */
|
|
107
155
|
const withArcGISApiKeyInfoPlist = (config, apiKey) => (0, config_plugins_1.withInfoPlist)(config, (cfg) => {
|
|
108
156
|
cfg.modResults.ArcGISAPIKey = apiKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withArcGISIos.js","sourceRoot":"","sources":["../src/withArcGISIos.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"withArcGISIos.js","sourceRoot":"","sources":["../src/withArcGISIos.ts"],"names":[],"mappings":"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"}
|