Ask HN: Am I crazy or is Android development awful?

Overall sentiment on Android development

  • Many describe native Android dev as frustrating, bloated, and fragile, especially for beginners and for anything “off the happy path.”
  • Several long-time Android devs say it has improved since the Eclipse/Ant days, but still “sucks,” just slightly less.
  • Some argue it’s mainly a steep learning curve comparable to modern web or Python ecosystems; others insist Android is qualitatively worse.

Tooling: Android Studio, Gradle, build systems

  • Android Studio is widely called slow and resource‑hungry, even on modern machines; just creating projects can feel sluggish.
  • Gradle is labeled the “single worst thing” by several: complex, hard to debug, yet unavoidable. Kotlin DSL is seen as only a minor improvement and still “just Gradle.”
  • A minority prefer Bazel or custom setups; others reminisce about Ant/Maven while acknowledging those were also painful.

APIs, architecture, and technical debt

  • Android is framed as burdened with deep, “baked‑in” technical debt from early rushed design and backwards‑compat decisions.
  • Complaints about inconsistent APIs, hostile or missing events (e.g., soft keyboard appearance), and esoteric, version‑dependent edge cases.
  • Deprecation churn and OS fragmentation force conditional code paths and tricky support for older devices.

Languages and UI frameworks

  • Kotlin is praised as pleasant and powerful, especially with Jetpack Compose, but some find it feature‑heavy and hard to learn.
  • XML‑based UI and data binding are considered legacy and slow; Compose is seen as a big improvement and roughly on par with React‑style declarative UIs.
  • Some prefer Flutter or React Native/Expo for faster iteration and cross‑platform support, though there’s skepticism about Google’s long‑term commitment to Flutter.

Native code, hardware access, and niche use cases

  • Accessing USB devices (e.g., UVC webcams) via libusb/libuvc inside Android apps is described as possible but painful and poorly supported.
  • Using NDK and native libraries can work but has sharp edges: build complexity, ABI quirks, page-size changes (Android 15), dependency hell.
  • For specialized hardware projects, several suggest small Linux SBCs instead of phones.

Comparisons with other platforms

  • iOS dev is portrayed as more coherent and consistent at the API level but with its own tooling and SwiftUI rough edges.
  • Web development is seen as easier for prototyping, especially via the browser’s camera APIs.
  • Some use WebView wrappers, Ionic/Capacitor, or Termux to escape parts of the native stack or to get a more “Linux‑like” environment.