Crystal-Web-Archiver icon indicating copy to clipboard operation
Crystal-Web-Archiver copied to clipboard

Submit .app to Mac App Store

Open davidfstr opened this issue 4 years ago • 1 comments

Questions:

  • [x] How do I build an app for the Mac App Store in general?
    • Submitting a Python App to the Mac App Store
      • My old article for submitting Python 2.7 apps to the Mac App Store.
      • Requires revision & testing for submitting a Python 3.x app, and for building the .app package with Universal support.
    • Building a Universal macOS Binary
      • $(CC) main.c -o arm_app -target arm64-apple-macos11

      • To create a universal binary for your project, merge the resulting executable files into a single executable binary using the lipo tool.

      • To see the architectures present in a built executable file, run the lipo or file command-line tools.

        • When running the lipo tool, include the -archs parameter to see the architectures.

        • $ lipo -archs /System/Applications/Mail.app/Contents/MacOS/Mail
      • If you never want users to run your app under Rosetta translation, add the LSRequiresNativeExecution key to your app’s Info.plist file.

    • Porting Your macOS Apps to Apple Silicon
      • To build a universal binary, you need Xcode 12 or a later version

      • To start your investigation, make a note of any code that does the following:

        • Interacts with third-party libraries you don’t own.

          • If your project depends on any third-party libraries, contact the original vendors and ask them to provide you with universal versions of those libraries. [...] If one or more libraries is not universal, the linker reports errors.

      • Migrate Away from Specific Technologies

        • Carbon APIs—Migrate to AppKit, Foundation, and other modern APIs.

          • Apple silicon still provides support for the preceding technologies, and you may continue to use them in macOS 11. However, this support may be removed in a future version of macOS, so migration to newer technologies is recommended.

          • [ ] Does wxPython rely on Carbon APIs? (If so, then should file issues on wxPython to starting rewriting usage of those APIs.)
  • –––
  • [x] Does py2app (the tool used by Crystal for building .app binaries) support Apple M1?
  • [x] Does Python support Apple M1?
    • Presumably yes, since py2app does.
    • py2app's example uses Python 3.8, which is the same as used by Crystal.
  • [x] Does wxPython support Apple M1?
  • –––
  • [x] Is Apple M1 support required when submitting an app to the Mac App Store
    • 🤷‍♂️ Not finding a direct answer, so: No?
  • –––
  • [x] Do I need to pay Apple money to get a developer signing certificate that is good for the Mac App Store?
    • Yes 😞, $99 per year
    • https://developer.apple.com/developer-id/
      • You can generate your Developer ID certificate in Xcode or in the Certificates, Identifiers & Profiles section of your developer account. Please note that you must be the Account Holder of your development team in the Apple Developer Program.

Tasks:

  • [ ] Revise/retest my old .app packaging article and get it to work with packaging Crystal on Apple M1 ⏳
    • [ ] Get a developer signing certificate
  • –––
  • [ ] Create listing for app on Mac App Store, with marketing copy, videos (≤ 3), and screenshots (≤ 10) ⏳
  • [ ] Submit app, and wait for approval. (~2 weeks)
  • [ ] Consider contacting Apple's App Store editorial team RE the story behind Crystal, to give it a chance to be featured
    • https://developer.apple.com/macos/submit/
      • If your app has a unique story that our editorial team should know about, let us know.

davidfstr avatar Apr 18 '21 00:04 davidfstr

It appears necessary to retain an Apple Developer subscription to keep the app in the Mac App Store: Screen Shot 2021-04-17 at 6 04 55 PM

It is unclear whether a maintained subscription would be required to keep existing apps launching. If a subscription is required, then that's a no-go from a Digital Preservation standpoint.

davidfstr avatar Apr 18 '21 17:04 davidfstr