My app is damaged and can't be opened when porting to M1 ?

I have porting my existing application to support native M1, there a a lot of framework and library that I have already build for both platform.

The strange result is when I archive the app on Intel machine. The binary work on Intel platform well. When I archive my application on M1 machine, the app can work on M1 well.

But when I try to run app that build on M1 on Intel Machine, then I got the message said my app is damaged and can't be opened. The same situation got for build in Intel platform one.

I try "lipo -archs" command on my app and I did get "x86_64 arm64" as result, so my app should already a universal app I guess.

Does any body know are there some way to check what happened on my application?

Thanks, any opinion will be appreciated !

Eric

Replies

I found the solution. I can just using xattr -c on my app. Then this issue gone.

Then this issue gone.

No, trust me, it’s not )-: The xattr command is just removing quarantine on the app, which prevents Gatekeeper from checking it. That’s fine if you only distribute the app internally, but if you intend to ship the app to a wide range of users then you can’t expect them to remove quarantine because Gatekeeper is an important security feature.

The problem you’re seeing is likely caused by one of two issues:

  • The app was not notarised, or notarised incorrectly.

  • The app was signed incorrectly.

With regards notarisation, see Notarizing macOS Software Before Distribution and the related docs.

With regards signing, if you’re building your app with Xcode then it (usually :-) does the right thing. If you’re not building with Xcode, see my Signing a Mac Product For Distribution post.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Thanks, got it.