Skip to content

Conversation

@mym0404
Copy link
Collaborator

@mym0404 mym0404 commented Jul 9, 2025

In a meanwhile, I'd failed to sort my works separately. Sorry to the reviewers or I in the future.

This PR has been testing my cognitive load performance and I had to remember and forgot what have I done and what should I do.

Anyway, I think codes are going well.


Todos

  • Scheme Based native build/run configuration
  • Android Build
  • Android Emulator/Device selection
  • Android Run
  • ⚠️ iOS Archive(xcodebuild archive) & Export(xcodebuild --export...) (almost done)
  • iOS Simulator/Device selection
  • iOS Run with xcodebuild ... build
  • iOS minBundleId Injection
  • Investigate possible xcodebuild usage pattern from the run:ios from the my all time magic reference rock.
  • Refactor/Organize apple helper codes.
  • Test real device/a variety of settings.
  • Add documentations
  • iOS xcodebuild log piping to a file
  • Android gradle log piping to a file
  • select prebuilt binary on run
  • prettify xcodebuild/gradle log
  • accurate progress logging in building

Test Scenarios

  • Android Debug Build
  • Android Release Build
  • Android Debug Run
  • Android Release Run
  • Android run with -d options (boolean, string, none)
  • ...

mym0404 and others added 30 commits June 23, 2025 18:40
mym0404 and others added 16 commits September 29, 2025 08:59
- Add portCommandOption for specifying port number
- Add appIdSuffixCommandOption for app ID suffix configuration
- Update command type definitions for better type safety
- Rename getDevices to getConnectedDevices for clarity
- Make appIdSuffix and port optional in AndroidNativeRunOptions
- Improve device selection logic for interactive mode
- Clean up unused imports and improve code organization
- Add AAB build validation with error handling
- Improve device launching and app installation flow
- Enable automatic emulator launch when no devices found
- Restore app launching functionality with proper error handling
- Update Android and iOS fingerprint hashes
- Sync autolinking configuration across platforms
- Update hot-updater version references to 0.20.11
…in runAndroid

Removed duplicate installAndLaunchAppOnDevice calls by unifying the control flow for both specific device and all-devices scenarios.
…tions

- Add applicationId field to NativeBuildAndroidScheme with packageName fallback
- Pass launch options (port, mainActivity) through runOption parameter
- Set default port value (8081) in tryRunAdbReverse
- Remove unused appIdSuffix from AndroidNativeRunOptions
- Add JSDoc comment for applicationId field
Add additional native dependencies to onlyBuiltDependencies to ensure proper installation order.
Change tryRunAdbReverse to use object parameter with named fields for better clarity and consistency.
- Remove installAndLaunchAndroid function and related files
- Remove unused AndroidUser type and User type export
- Change RunGradleArgs from exported to internal type
- Clean up unused imports in adb.ts
Add complete iOS run implementation with device selection and build support:
- Add runIos main function with device selection flow
- Implement selectIosTargetDevice with UX matching android-helper
- Complete buildXcodeProject implementation (build without archive)
- Integrate runIos into runNative command

The implementation follows the same UX patterns as android-helper for consistency.
Introduce AppleDeviceType for better type safety:
- Add AppleDeviceType = "device" | "simulator" to types
- Update deviceMatcher, deviceRunner, simulatorRunner to use new type
- Fix deviceManager imports for DeviceState and AppleDeviceType
- Update destination.ts to use AppleDeviceType
- Export AppleDeviceType from index.ts

This change improves type consistency across the apple-helper package.
@mym0404 mym0404 changed the title iOS Build & scheme-based native build & Launch, Install App Scheme-based native build & Launch, Install App Oct 11, 2025
…ld isolation

- Convert simctl parsing from regex to JSON (-j flag)
- Consolidate device functions: listDevicesAndSimulators/listDevices/listSimulators/listBootedDevices → listDevices with options
- Move deviceMatcher functions into utils/device.ts
- Add DevicectlOutput and SimctlOutput types to types.ts
- Implement -derivedDataPath for predictable build output
- Add explicit "build" action to xcodebuild args
- Update all usage sites to use new consolidated API
- Reorder device selection conditions to match iOS pattern
- Check string deviceOption before interactive mode
- Allow custom configuration strings in NativeBuildIosScheme
Extract common logic from buildAndroidNative/buildIosNative and runAndroidNative/runIosNative into shared internal functions to eliminate code duplication
- Rename getEmulators to getEmulatorNames for clarity
- Remove redundant isEmulatorBooted export (use Adb directly)
- Improve comments and documentation
- Fix default emulator port to 5554
- Use array.push() instead of spread operator for better performance
- Refactor apple-helper device utilities to export via Device namespace
- Update all import statements to use Device.list, Device.matching, Device.formatName
- Apply consistent API pattern across android and apple helper packages
- Rename listAndroidDevices → listDevices, selectAndroidTargetDevice → selectTargetDevice for naming consistency
- Change selectTargetDevice to return device directly instead of wrapped object
- Merge selectIosTargetDevice.ts into device.ts for better organization
- Remove unused exports (matchingDevice, formatDeviceName from Apple Device)
- Align function signatures and error messages between platforms
- Remove unused log statement in Android runner
- Remove credit comment from tryInstallAppOnDevice
- Remove redundant device type check in simulator runner
- Inline bundleId variable for better readability
Update autolinking configuration with version info and regenerate
fingerprint hashes for iOS and Android platforms
The archive option was defined in types but never actually used in the
build logic - builds always create xcarchive regardless of this setting.
Removed the option to align types with actual behavior.

Also enabled installPods for example config.
…directories

Restructure iOS build output to separate archive and export artifacts into dedicated subdirectories under a base build directory. This improves organization and makes it clearer which artifacts are available at each build stage.

Changes:
- Create base build directory with archive/ and export/ subdirectories
- Move xcarchive files to archive/ directory
- Move IPA files to export/ directory when export is performed
- Always return base buildDirectory regardless of export status
- buildArtifactPath points to IPA (if exported) or xcarchive (if not)
- Improve error handling with prettifyXcodebuildError utility
- Add exportOptionsPlist path resolution and validation
- Simplify exportXcodeArchive parameters to accept explicit options
…ilds

Add export configuration for both debug and release schemes in the v0.77.0 example project. Update Xcode project settings for automatic code signing and add separate ExportOptions.plist files for different build configurations.

Changes:
- Add debug scheme configuration with debugging export method
- Update release scheme to use app-store-connect export method
- Configure automatic code signing in Xcode project
- Add ExportOptions.debug.plist for debug builds
- Update Gemfile.lock platform support
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants