DanTheMan827 / ios-app-signer

This is an app for OS X that can (re)sign apps and bundle them into ipa files that are ready to be installed on an iOS device.
https://dantheman827.github.io/ios-app-signer
GNU General Public License v3.0
5.49k stars 1.05k forks source link

Expected Identifier Prefix Error #259

Closed altounen closed 2 weeks ago

altounen commented 1 month ago

I'm trying to sign an app and install it on an iPad through Xcode. I get this error:

Error installing '/Users/localadmin/Desktop/xxx.ipa', ERROR: Error Domain=com.apple.dt.CoreDeviceError Code=3002 "Failed to install the app on the device." UserInfo={NSURL=file:///Users/localadmin/Desktop/xxx.ipa, NSUnderlyingError=0x60000d35a8b0 {Error Domain=IXUserPresentableErrorDomain Code=1 "Unable to Install “App”" UserInfo={NSUnderlyingError=0x60000d35aeb0 {Error Domain=MIInstallerErrorDomain Code=37 "Appex bundle at "/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.KDP4Ag/extracted/Payload/App.app/PlugIns/ShareServiceExtension.appex" with identifier "tld.domain.test.apptube.ShareExtension" does not have expected identifier prefix "tld.domain.test.app."" UserInfo={LegacyErrorString=AppexBundleIDNotPrefixed, FunctionName=-[MIAppExtensionBundle validateBundleMetadataWithError:], SourceFileLine=269, NSLocalizedDescription=Appex bundle at "/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.KDP4Ag/extracted/Payload/App.app/PlugIns/ShareServiceExtension.appex" with identifier "tld.domain.test.apptube.ShareExtension" does not have expected identifier prefix "tld.domain.test.app."}}, NSLocalizedDescription=Unable to Install “App”, NSLocalizedRecoverySuggestion=Appex bundle at "/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.KDP4Ag/extracted/Payload/App.app/PlugIns/ShareServiceExtension.appex" with identifier "tld.domain.test.apptube.ShareExtension" does not have expected identifier prefix "tld.domain.test.app.", NSLocalizedFailureReason=Please try again later.}}, NSLocalizedDescription=Failed to install the app on the device.}

Seems like a plugin isn't signed with the same identifier. Is there a workaround or am I doing something wrong? I've done this before, but it was a while back and I can't remember why it wasn't an issue then.

I tried with a wildcard profile as well, it gives the same error but with the identifier being "tld.domain.test.*tube.ShareExtension" so the asterisk is included. Maybe I'm not doing it correctly?

kambala-decapitator commented 1 month ago

if an app has bundle identifier X, then any extension/plugin (e.g. share extension) must have bundle identifier X.something.else, i.e. it must start with X followed by a dot

in your case app has bundle ID tld.domain.test.app, but app extension doesn't follow the aforementioned convention as it has tld.domain.test.apptube.ShareExtension. You must either fix bundle ID of the app or of the extension.

altounen commented 2 weeks ago

Seems I've misunderstood how wildcard provisioning profiles work and indeed the extensions must have their own unique ID. I'll have to find another tool or fix the IDs by hand before signing.