Skip to content

ahsanu123/labor

Repository files navigation

npm version npm npm licence


App For Iwaki

🐑 Labor - App For Iwaki

TODO

πŸ“± Android Development with Kotlin + Neovim (No Android Studio)

Arch Linux / Linux General Setup - Kotlin Multiplatform Compatible


πŸ”§ Environment Setup

1. Install Android SDK (Command Line Tools Only)

You don't need Android Studio! Download Command Line Tools directly from Google:

  • Download link:
    πŸ‘‰ Android SDK Command-Line Tools

  • Extract and move to /opt (optional):

    sudo mkdir -p /opt/android-sdk/cmdline-tools/latest
    sudo unzip commandlinetools-linux-*.zip -d /opt/android-sdk/cmdline-tools/latest
  • Set environment variables (add these to your .bashrc / .zshrc):

    export ANDROID_SDK_ROOT=/opt/android-sdk
    export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH
    export PATH=$ANDROID_SDK_ROOT/platform-tools:$PATH
    export PATH=$ANDROID_SDK_ROOT/build-tools/33.0.2:$PATH
    ` 
    
    

2. Install Required SDK Packages

Make sure you have sdkmanager (inside cmdline-tools/latest/bin).

sdkmanager --update

sdkmanager "platform-tools" \
           "build-tools;33.0.2" \
           "platforms;android-33" \
           "system-images;android-33;google_apis;x86_64"

Accept Licenses:

sdkmanager --licenses


3. Kotlin Multiplatform Project Setup

Option 1: Use Kotlin Wizard (Optional)

Use JetBrains Kotlin Wizard to generate the project (if you want a template): πŸ‘‰ Kotlin Multiplatform Wizard

curl -s https://get.sdkman.io | bash
sdk install kotlin

Extract or move the generated project to your working folder.

Option 2: Manual Gradle Init

Or start a minimal Kotlin project manually and add Android targets in Gradle.


4. Connect Your Android Device (Wireless ADB)

  • Enable Developer Options β†’ Wireless Debugging on your Android phone.

  • Pair device:

    adb pair <ip:port> <pairing-code>

    Example:
    adb pair 192.168.0.107:38303 408434

  • Connect: adb connect 192.168.0.107:43847

Confirm connection:

adb devices


5. Building and Installing the App

Run Gradle tasks to build and install the app:

./gradlew tasks   # View available tasks
./gradlew assembleDebug
./gradlew installDebug

Wireless-connected devices will receive the app directly.

Hot Reload (Optional Continuous Build):

./gradlew installDebug --continuous

It will automatically install new builds when files change.


6. Fix License Issues (If Gradle Complains)

If you get license errors like:

You have not accepted the license agreements of the following SDK components

Fix 1: Accept licenses manually:

sdkmanager --licenses

Fix 2: Manually copy licenses (sometimes required by Gradle):

cp -r $ANDROID_SDK_ROOT/licenses ./licenses

Put it in the project root where Gradle can find it.


πŸ“ Notes & Resources


βœ… Recommended Tools (Optional)

  • Emulators (Optional)

    sdkmanager "emulator"
    avdmanager create avd -n test -k "system-images;android-33;google_apis;x86_64"
    emulator -avd test

πŸ”₯ TL;DR Step-by-Step

# Download & extract command-line tools
sudo mkdir -p /opt/android-sdk/cmdline-tools/latest
sudo unzip commandlinetools-linux-*.zip -d /opt/android-sdk/cmdline-tools/latest

# Set environment variables
export ANDROID_SDK_ROOT=/opt/android-sdk
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH
export PATH=$ANDROID_SDK_ROOT/platform-tools:$PATH

# Install SDK components
sdkmanager --update
sdkmanager "platform-tools" "build-tools;33.0.2" "platforms;android-33"
sdkmanager --licenses

# Wireless debugging
adb pair <ip:port> <pairing-code>
adb connect <ip:port>

# Build & install app
./gradlew installDebug --continuous

πŸš€ Jetpack Visual Hierarchy Overview

β”œβ”€β”€ Architecture
β”‚   β”œβ”€β”€ Lifecycle (Manages activity/fragment lifecycle)
β”‚   β”œβ”€β”€ LiveData (Observable data holder)
β”‚   β”œβ”€β”€ ViewModel (Holds UI-related data)
β”‚   β”œβ”€β”€ Room (SQLite object mapping)
β”‚   └── WorkManager (Background work)
β”‚
β”œβ”€β”€ UI
β”‚   β”œβ”€β”€ Jetpack Compose (Declarative UI)
β”‚   β”‚   β”œβ”€β”€ UI Toolkit (Layout, Material components)
β”‚   β”‚   β”œβ”€β”€ Animation (Motion and transitions)
β”‚   β”‚   └── Tooling (Preview, Debugging)
β”‚   β”œβ”€β”€ AppCompat (Backward compatibility)
β”‚   └── Fragment (UI modularity)
β”‚
β”œβ”€β”€ Behavior
β”‚   β”œβ”€β”€ Notifications (Alerts and messaging)
β”‚   β”œβ”€β”€ Permissions (Runtime permissions)
β”‚   └── Sharing (Content sharing between apps)
β”‚
└── Foundation
    β”œβ”€β”€ Android KTX (Kotlin extensions for Android APIs)
    β”œβ”€β”€ App Startup (Initialize components quickly)
    └── Test (JUnit extensions, Espresso, etc.)

About

🐟 App For Iwaki

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published