Skip to content

Commit ee4c001

Browse files
authored
Merge pull request #311 from cowboydaniel/codex/investigate-app-crash-after-splash-screen
Clarify Android docs for Kotlin build
2 parents aa17217 + 3ccc6d3 commit ee4c001

5 files changed

Lines changed: 28 additions & 43 deletions

File tree

android/ANDROID_ROADMAP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ Full version control and team collaboration from your Android device.
369369
- Android plugin system architecture
370370
- Plugin discovery and loading
371371
- Plugin marketplace UI
372-
- Install plugins from APK or Python packages
372+
- Install plugins from APK-delivered extensions
373373
- 8 plugin types:
374374
- Editor extensions
375375
- Board packages
@@ -526,7 +526,7 @@ Some phases can run in parallel to reduce total timeline:
526526

527527
| Risk | Probability | Impact | Mitigation |
528528
|------|-------------|--------|------------|
529-
| PySide6 performance issues on Android | Medium | High | Use Kivy as fallback; optimize rendering; profile early |
529+
| Android API/Gradle regression risk | Medium | High | Track AGP releases early; pin known-good toolchains; run CI matrix |
530530
| Arduino CLI ARM64 compatibility | Low | High | Cross-compile early; test on real devices; maintain alternatives |
531531
| USB OTG reliability varies by device | High | Medium | Extensive device testing; clear compatibility list; Bluetooth fallback |
532532
| Battery drain from background services | Medium | Medium | Aggressive power management; foreground services only when needed |

android/README.md

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
## Overview
1717

18-
**Arduino IDE Modern for Android** brings the complete power of the desktop Arduino development environment to mobile devices. The mobile client is implemented natively in **Kotlin** with the standard Android toolchain so GitHub Actions (and your local Android Studio) can assemble installable APKs without any Python or Qt deployment steps.
18+
**Arduino IDE Modern for Android** brings the complete power of the desktop Arduino development environment to mobile devices. The mobile client is implemented natively in **Kotlin** with the standard Android toolchain so GitHub Actions (and your local Android Studio) can assemble installable APKs without any external Python runtimes or Qt deployment steps.
1919

2020
Whether you're prototyping on the go, teaching Arduino in classrooms without computers, or debugging projects in the field, Arduino IDE Modern for Android provides a professional-grade development experience optimized for touchscreen interfaces.
2121

@@ -112,7 +112,7 @@ All major desktop features adapted for mobile:
112112
- **Debugging**: GDB/MI support via USB or WiFi debugging
113113
- **Version Control**: Git integration with visual diff viewer
114114
- **Collaboration**: Real-time multi-user editing sessions
115-
- **Plugin System**: Installable extensions via APK or Python packages
115+
- **Plugin System**: Installable extensions distributed as APK-delivered plugins
116116
- **Code Quality**: Real-time analysis and suggestions
117117
- **Examples Library**: 100+ pre-loaded Arduino examples
118118

@@ -160,7 +160,7 @@ Coming Soon - Currently in Beta Testing
160160

161161
#### Prerequisites
162162

163-
The Android build is now driven by a committed Android Studio/Gradle project under `android/android-studio/`. **Everything is native Kotlin**—no Buildozer, `python-for-android`, or Qt deployment is required. Install the following:
163+
The Android build is driven by a committed Android Studio/Gradle project under `android/android-studio/`. **Everything is native Kotlin**—no Buildozer, `python-for-android`, or Qt deployment is required. Install the following:
164164

165165
- Java 11 or 17 (for the Gradle Android plugin)
166166
- Android SDK (API 34 recommended) and command-line tools
@@ -437,7 +437,7 @@ A: Depends on your device's USB OTG power output. Most phones provide 5V at 500m
437437
### App Questions
438438

439439
**Q: Why is the app size so large?**
440-
A: The app bundles Python runtime, Qt framework, and Arduino CLI. Total size ~150-200 MB to ensure offline functionality.
440+
A: The app bundles Kotlin resources, Arduino CLI assets, and offline-friendly example content. Expect a footprint sized for on-device compilation while keeping native dependencies minimal.
441441

442442
**Q: Does it drain battery quickly?**
443443
A: Normal editing uses minimal battery. Active serial monitoring or compilation increases usage. Enable battery saver mode in app settings.
@@ -491,30 +491,22 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md) for guidelines.
491491

492492
### Technology Stack
493493

494-
- **Python 3.11**: Core application logic embedded via PySide6/Qt for Android
495-
- **PySide6 + Qt for Android**: Qt 6 framework with the Qt Android deploy + Gradle toolchain
494+
- **Kotlin + Jetpack**: Native Android application and UI layers
495+
- **Material 3**: Modern theming and components
496496
- **Gradle + Android SDK/NDK**: Packaging, signing, and APK generation
497-
- **Arduino CLI ARM64**: Native ARM compilation binary
498-
- **Kivy**: Alternative UI framework for some components
497+
- **Arduino CLI ARM64**: Native ARM compilation binary for verification and upload workflows
498+
- **View Binding**: Type-safe view access without synthetic imports
499499

500500
### App Structure
501501

502502
```
503503
android/
504504
├── README.md # This guide
505-
├── BUILD_ANDROID.md # Additional build notes
505+
├── BUILD_ANDROID.md # Android Studio build notes
506506
├── ANDROID_ROADMAP.md # Feature roadmap
507-
├── main.py # Android application entry point
508-
├── ui_mobile/ # Mobile-optimized UI components
509-
│ ├── touch_editor.py # Touch-friendly code editor
510-
│ ├── mobile_toolbar.py # Compact toolbar for phones
511-
│ └── gesture_handler.py # Touch gesture recognition
512-
├── services_mobile/ # Android-specific services
513-
│ ├── usb_service.py # USB OTG communication
514-
│ ├── bluetooth_service.py # BLE and Classic Bluetooth
515-
│ └── storage_service.py # Scoped storage handling
516-
├── p4a-recipes/ # Legacy p4a recipes (not used by the Qt/Gradle toolchain)
517-
└── android-studio/ # Committed Android Studio/Gradle project (open directly in IDE)
507+
├── APK/ # Legacy placeholder artifacts (not the current Kotlin build)
508+
├── android-studio/ # Committed Android Studio/Gradle project (open directly in IDE)
509+
└── runtime/ # Legacy runtime staging (Qt/PySide6 placeholders; unused by Kotlin build)
518510
```
519511

520512
---
@@ -544,9 +536,8 @@ This project is licensed under the MIT License, same as the desktop version. See
544536
## Acknowledgments
545537

546538
- **Arduino Team**: For the Arduino platform and Arduino CLI
547-
- **Qt for Android**: For excellent cross-platform mobile framework
548-
- **PySide6 + Qt for Android**: For enabling Python apps on Android with Qt
549-
- **Kivy Community**: For mobile UI components
539+
- **Jetpack + Android Studio teams**: For the Kotlin-first Android tooling
540+
- **Open-source library authors**: For the Android components that power the app
550541
- **Beta Testers**: Everyone testing on their Android devices
551542

552543
---
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
1-
# Keep PySide6 entry points and Qt bindings if minification is enabled.
2-
#-keep class org.qtproject.** { *; }
3-
#-keep class com.arduino.ide.** { *; }
1+
# No custom ProGuard rules are required for the Kotlin-only build.
2+
# Add keep rules here if future libraries require them.

android/runtime/pyside6/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Bundled PySide6 runtime (placeholder)
1+
# Legacy PySide6 runtime placeholders
22

3-
Phase 0 commits a ready-to-import Android Studio project. The PySide6 runtime
4-
assets are staged here so Gradle can package them without needing to rerun the
5-
Qt deployment tooling. Replace these placeholders with the actual PySide6
6-
Android deployment output when generating a production build.
3+
The Android app ships as a Kotlin/Jetpack project and no longer embeds a Python
4+
runtime or PySide6/Qt stack. This folder is left over from earlier prototypes
5+
and is **not** referenced by the Gradle build. No action is required for modern
6+
Kotlin builds.
Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
# Bundled Qt runtime
1+
# Legacy Qt runtime placeholders
22

3-
This folder is populated with the Qt for Android runtime expected by
4-
`org.qtproject.qt.android.bindings.QtActivity`. The binaries are organized by
5-
ABI (for example `arm64-v8a` and `armeabi-v7a`) so Gradle can pick them up as
6-
both assets and native libraries during the sync step.
7-
8-
The placeholder `.so` files mirror the names produced by Qt's Android
9-
deployment tooling. Replace them with the official Qt for Android runtime
10-
artifacts for your targeted Qt release when producing a build destined for end
11-
users.
3+
The Android app is now a native **Kotlin** project and does not load Qt or
4+
PySide6. This directory remains only as historical scaffolding from the prior
5+
experiments and is **not** consumed by the current Gradle build. You can ignore
6+
these placeholder `.so` files when building or debugging the Kotlin app.

0 commit comments

Comments
 (0)