Skip to content

Navigation Menu

Sign in
Sign up
This repository was archived by the owner on Jul 15, 2026. It is now read-only.

Building

github-actions[bot] edited this page Mar 1, 2026 · 2 revisions

Building & Distribution

This guide covers building for development and creating distribution builds.

Development Builds

Generate Xcode Project

Always regenerate after modifying project.yml:

xcodegen generate

Mac App (Debug)

# Build
just build-mac
# Build and run
just run-mac

iOS App (Debug)

# Simulator
just build-sim
# Physical device (set XCODE_DEVICE_ID and DEVICECTL_ID in .env)
just build-ios
just run-ios

Distribution Builds

iOS App Store

The iOS app is distributed via App Store Connect:

# Archive and upload to App Store Connect
just release-ios

This creates an archive and uploads to App Store Connect. Then:

  1. Go to App Store Connect
  2. Select the build for TestFlight or App Review

Mac DMG (GitHub Releases)

The Mac app is distributed as a signed and notarized DMG.

One-time Setup

  1. Create Developer ID Certificate

  2. Create App-Specific Password

  3. Store Notarization Credentials

    just setup-notary
    # Enter your Apple ID and app-specific password

Release Workflow

# Verify signing setup
just check-signing
# Full release: build, sign, notarize, create DMG
just release-mac

The pipeline:

  1. Build Release configuration with Hardened Runtime
  2. Create DMG with app
  3. Sign DMG with Developer ID
  4. Submit to Apple for notarization
  5. Staple notarization ticket to DMG

Output: ./build/ClickerRemoteReceiver-{version}.dmg

Individual Commands

just dmg # Create unsigned DMG
just sign-dmg # Sign DMG
just notarize # Submit for notarization
just verify-signing # Verify app signature
just verify-notarization # Verify DMG is notarized
just notary-log # Show notarization history

Create GitHub Release

gh release create v1.0 \
 ./build/ClickerRemoteReceiver-1.0.dmg \
 --title 'Clicker v1.0' \
 --notes 'Release notes here'

Homebrew Distribution

The Homebrew cask is hosted in the douinc/homebrew-tap repository.

Update Cask for New Release

After creating a GitHub release, trigger the automated tap update:

just update-tap

This triggers a GitHub Action in douinc/homebrew-tap that automatically downloads the DMG, calculates SHA256, updates the Cask formula, and pushes.

Install from Tap

brew tap douinc/tap
brew install --cask clicker-remote-receiver

Build Configuration

project.yml Key Settings

targets:
 ClickerMac:
 settings:
 base:
 ENABLE_HARDENED_RUNTIME: YES
 configs:
 Release:
 CODE_SIGN_STYLE: Manual
 CODE_SIGN_IDENTITY: "Developer ID Application"
 CODE_SIGN_INJECT_BASE_ENTITLEMENTS: NO
 OTHER_CODE_SIGN_FLAGS: "--timestamp"

Why These Settings?

Setting Purpose
ENABLE_HARDENED_RUNTIME Required for notarization
CODE_SIGN_IDENTITY Use Developer ID (not Apple Distribution)
CODE_SIGN_INJECT_BASE_ENTITLEMENTS Prevent debug entitlements
--timestamp Required for notarization verification

justfile Reference

just # Show all commands
# Development
just generate # Generate Xcode project
just build-mac # Build Mac (debug)
just build-ios # Build iOS for device
just build-sim # Build iOS for simulator
just run-mac # Build and run Mac
just run-ios # Build, install, launch iOS on device
just deploy # Deploy iPhone + Watch to device
# Mac Distribution
just check-signing # Verify Developer ID cert
just setup-notary # Store notarization creds
just release-mac # Full release pipeline
just dmg # Create DMG only
just sign-dmg # Sign DMG
just notarize # Notarize DMG
just verify-signing # Verify signature
just verify-notarization # Verify notarization
# iOS Distribution
just release-ios # Archive and upload to ASC

📖 ClickerRemote Wiki

Home

Getting Started

Development

Roadmap

Help


Links

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /