Files
RSSuper/native-route
Michael Freno fdd4fd8a46 feat: implement Android data models in Kotlin
- Add FeedItem, Feed, FeedSubscription models with Moshi JSON support
- Add SearchResult, SearchFilters models with sealed classes for enums
- Add NotificationPreferences, ReadingPreferences models
- Add Room Entity annotations for database readiness
- Add TypeConverters for Date and List<String> serialization
- Add Parcelize for passing models between Activities/Fragments
- Write comprehensive unit tests for serialization/deserialization
- Write tests for copy(), equals/hashCode, and toString functionality
2026-03-29 15:40:38 -04:00
..
2026-03-29 14:12:17 -04:00

RSSuper - Multi-Platform Native Build System

This directory contains the build infrastructure for building RSSuper natively across multiple platforms.

Architecture

native-route/
├── ios/          - iOS/macOS app (Swift/SwiftUI)
│   └── RSSuper/
│       ├── RSSuper.xcodeproj/
│       ├── RSSuper/
│       ├── RSSuperTests/
│       └── RSSuperUITests/
├── android/      - Android app (Kotlin/Jetpack Compose)
│   └── (auto-generated on first build)
├── linux/        - Linux app (C/Vala + GTK4)
│   └── (auto-generated on first build)
└── windows/      - Windows app (TODO)

Quick Start

Build All Platforms

# From project root
./scripts/build.sh

Build Specific Platform

# iOS/macOS only
./scripts/build.sh -p ios

# Android only
./scripts/build.sh -p android

# Linux only
./scripts/build.sh -p linux

# Multiple platforms
./scripts/build.sh -p ios,android

Build Types

# Debug build (default)
./scripts/build.sh -t debug

# Release build
./scripts/build.sh -t release

Run Tests

# Build and test all platforms
./scripts/build.sh --test

# Test specific platform
./scripts/build.sh -p ios --test

Clean Build

# Clean all platforms
./scripts/build.sh -a clean

# Clean specific platform
./scripts/build-ios.sh clean
./scripts/build-android.sh clean
./scripts/build-linux.sh clean

Individual Platform Scripts

iOS/macOS

# Build
./scripts/build-ios.sh [Debug|Release] [iOS|macOS] [destination] [action]

# Examples
./scripts/build-ios.sh                          # Debug iOS
./scripts/build-ios.sh Release                  # Release iOS
./scripts/build-ios.sh Debug iOS "platform=iOS Simulator,name=iPhone 15"
./scripts/build-ios.sh clean
./scripts/build-ios.sh Debug iOS "generic/platform=iOS" test

Android

# Build
./scripts/build-android.sh [debug|release] [assemble|build|test|clean]

# Examples
./scripts/build-android.sh                    # Assemble debug
./scripts/build-android.sh release            # Assemble release
./scripts/build-android.sh debug test         # Run tests
./scripts/build-android.sh clean              # Clean

Linux

# Build
./scripts/build-linux.sh [debug|release] [build|install|test|clean|setup]

# Examples
./scripts/build-linux.sh                     # Build debug
./scripts/build-linux.sh release             # Build release
./scripts/build-linux.sh debug setup         # Setup build environment
./scripts/build-linux.sh debug install-deps  # Install dependencies
./scripts/build-linux.sh debug run           # Build and run
./scripts/build-linux.sh clean               # Clean

Platform-Specific Details

iOS/macOS

  • Language: Swift
  • UI Framework: SwiftUI
  • Build System: Xcode/xcodebuild
  • Minimum Deployment: iOS 16.0+
  • Features:
    • SwiftUI for declarative UI
    • Combine for reactive programming
    • Core Data for persistence
    • Background fetch for feed updates

Android

  • Language: Kotlin
  • UI Framework: Jetpack Compose
  • Build System: Gradle
  • Minimum SDK: 24 (Android 7.0)
  • Features:
    • Jetpack Compose for modern UI
    • ViewModel + LiveData for state management
    • Room for local database
    • Retrofit for networking

Linux

  • Language: C + Vala
  • UI Framework: GTK4 + Libadwaita
  • Build System: Meson + Ninja
  • Dependencies:
    • GTK4
    • Libadwaita
    • SQLite3
    • libxml2
    • libsoup-3.0
  • Features:
    • Native Linux look and feel
    • GNOME integration
    • System tray support
    • Desktop notifications

CI/CD

GitHub Actions workflow is configured in .github/workflows/ci.yml:

  • iOS: Builds on macos-15 runner
  • Android: Builds on ubuntu-24.04 runner
  • Linux: Builds on ubuntu-24.04 runner

Workflow Features

  • Automatic builds on push/PR
  • Manual trigger with configurable options
  • Build artifacts uploaded for download
  • Build reports generated
  • Test execution (configurable)

Project Structure Template

When you add shared code, use this structure:

RSSuper/
├── native-route/
│   ├── common/           # Shared code (if using a shared language)
│   ├── ios/
│   │   └── RSSuper/
│   ├── android/
│   ├── linux/
│   └── windows/
├── scripts/
│   ├── build.sh          # Main build orchestrator
│   ├── build-ios.sh      # iOS/macOS builder
│   ├── build-android.sh  # Android builder
│   ├── build-linux.sh    # Linux builder
│   └── common.sh         # Shared utilities
└── .github/
    └── workflows/
        └── ci.yml        # CI configuration

Migration Notes

Build scripts adapted from Nessa project:

  • Xcode version selection logic
  • Build report generation
  • Error extraction and display
  • CI workflow structure

Troubleshooting

iOS Build Fails

# Check Xcode installation
xcodebuild -version

# Select Xcode manually
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

# Clean DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/RSSuper-*

Android Build Fails

# Check Java installation
java -version

# Check Android SDK
echo $ANDROID_HOME

# Run with more verbose output
./scripts/build-android.sh debug assemble --info

Linux Build Fails

# Install dependencies (Ubuntu/Debian)
sudo apt install meson ninja-build pkg-config libgtk-4-dev libadwaita-1-dev

# Check meson installation
meson --version

# Setup build manually
cd native-route/linux
meson setup build --buildtype=debug

Future Enhancements

  • Windows support (Win32 + DirectUI or WebView2)
  • Shared business logic layer
  • Cross-platform test suite
  • Automated code signing
  • App store deployment scripts
  • Performance benchmarking