Commandline utility to not going insane when codesigning and notarizing application for Apple Devices.
This utility allows to:
- Codesign your applications
- Package as DMG
- Package as PKG
- Notarize the DMG and PKG
- Staple DMG and PKG artifact
To print all available commandline options
./mac-codesigner-1.0.0-SNAPSHOT-runner -h
Example:
./mac-codesigner-1.0.0-SNAPSHOT-runner --app-path=/path/to/my/Sample.app \
--developer-certificate-key=1111111111111111 \
--with-dmg \
--with-pkg \
--installer-certificate-key=1111111111 \
--pkg-identifier=my.application.identifier.pkg \
--entitlements=/path/to/entitlements.plist \
--with-notarization \
--notarization-primary-bundle-id=my.application.id \
[email protected] \
--notarization-password="johndoe-secret"
--with-staple
- Make sure you have xcode command line utilities installed
sudo xcode-select --install
- Create an "App-Specific password for altool" Apple Instructions - Use Safari - Firefox nor Chrome worked for me
- Name it
Developer-altool
- Save the password created we you need to pass it to as the
--notarization-password
- Name it
- Create 2 certificates at Apple Developer
Developer ID Application
Developer ID Installer
- Add them to your "KeyChain Access" Application
There are other utilities which helped me implement this or provided useful information. One could argue that I suffer from the NIH-Syndrom but I found it interesting to get something done with Quarkus and GraalVM to create a native binary so for me it was more of a research project teaching about this tech-stack.
Similar utilities:
Sites / Articles I found useful while implementing this:
The application can be packaged using:
./mvnw package
It produces the quarkus-run.jar
file in the target/quarkus-app/
directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/
directory.
You can create a native executable using:
./mvnw package -Pnative
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
./mvnw package -Pnative -Dquarkus.native.container-build=true
You can then execute your native executable with: ./target/mac-codesigner-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.html.