Recommended language/framework for a first time android project? - eviltoast

cross-posted from: https://programming.dev/post/11357795

I’ve been thinking about writing my own workout logger that better fits my use and I’d like to hear some recommendations on what language or framework to use.

I don’t have any prior experience with mobile development nor with Java or Kotlin, and C++ I suspect would be needlessly low level for the features I’d like to include.

Features is like to include in the app is capability of recording video, playing video/audio, creating graphs and opening up in-app tabs. Fancy ui and animations is not of much importance.

Any recommendations on what languages to use and what libraries might be of interest to get going?

  • Deckweiss@lemmy.world
    link
    fedilink
    arrow-up
    17
    ·
    edit-2
    9 months ago

    In general I’d recommend the modern standard android. So just go by the official docs and guides with Kotlin and Android Studio. Thats is not only the most straightforward option in my opinion, but it is easier to ask for help in a discord or search the web. (contrary to what @aluminium suggested by going with older UI and java)

    But tbh. it depends what you’re prior dev exp is like. You said you have no mobile dev exp, but what about desktop or web? If you feel at home with web frameworks, react native might be way easier for you. Heck, if you have experience with c# and windows gui dev, then blazor or microsoft maui etc.

    I agree with @aluminium on the point of multiplatform frameworks being way more complex than native android. Only chose those if you get an advantage out of it like if you are either already familiar with the base concepts/languages or if you want to target multiple platforms.

    • UndercoverUlrikHD@programming.devOP
      link
      fedilink
      arrow-up
      1
      ·
      9 months ago

      Kotlin certainly was the language I was mostly expecting to get recommended, but is there anything specific about it that makes it more suitable for simple mobile projects?

      My web experience is limited to some basic javascript for a documentation tool I’ve made. Other than that my experience is mostly lower level C and python. No direct GUI work.

      Multiplatform isn’t much of a concern as it will be a cold day in hell before I ever consider buying an apple product.

      • owenfromcanada@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        9 months ago

        If you’re already really comfortable with C, you could consider Java instead of Kotlin. The syntax is more similar, but Java doesn’t have as many features built into the language (and I imagine it’ll eventually be phased out anyways). You could try a sample project in each and see which one you prefer.

  • aluminium@lemmy.world
    link
    fedilink
    arrow-up
    5
    arrow-down
    1
    ·
    edit-2
    9 months ago

    I’d personally go for a native App in Java with the older android.view and android.widget UI library which I not only find more intuitive for beginners but which also have a neat drag and drop UI designer built into Android Studio. Also once you are comfortable in Java you can easily add Kotlin into your existing project but for the start I’d start with Java since Kotlin throws lots of new stuff and rules at you in the beginning.

    These are just my opinions but I’d generally stay away from multiplatform frameworks like flutter, react native, maui, … if you don’t need the multiplatform aspect. They generally make it more difficult to work with lots of low level APIs (like the step counter, fitness data, …). Also all of them suffer from my experience from being harder to debug and “cryptic error messages syndrome” (especially Maui).

    Also the new Jetpack and Compose stuff in Android I personally find quite hard to get going with. But thats maybe just me being more used to the old stuff.

    • UndercoverUlrikHD@programming.devOP
      link
      fedilink
      arrow-up
      2
      ·
      9 months ago

      Kotlin throws lots of new stuff and rules at you in the beginning.

      Out of curiosity, what sort of new stuff are we talking about? I’d assume it’s a more robust language than java based on its origin.

      • aluminium@lemmy.world
        link
        fedilink
        arrow-up
        4
        ·
        edit-2
        9 months ago

        for me the biggest thing was the whole strict enforment of nullability - doesn’t always play nice with existing java code, builders (essentiay abusing the anonymous function syntax) and delegations.

        Its just very odd when you see some code from someone else who really goes to town with these things.

        Also just in general its very different approach from Java where you have to do everything with very basic but easy to understand tools while Kotlin gives you a giant toolbox to play with, but where many tools have a certain learning curve.

        But in that toolbox there are some gems. My favorites being extension methods null safe calls and pattern matching with when.

  • ___@lemm.ee
    link
    fedilink
    arrow-up
    2
    ·
    9 months ago

    Have you considered starting small with a PWA? It will help you get an understanding of the front end design, then you can grown from there.

    • UndercoverUlrikHD@programming.devOP
      link
      fedilink
      arrow-up
      2
      ·
      9 months ago

      I’ve thought about it, but I’m personally not a fan of javascript. My last side project included some JS and it was the aspect I enjoyed the least of it.

      • ___@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        9 months ago

        The interesting thing about the web is the push to WASM. You don’t need to use JavaScript anymore. You can prep normal Java/Python/Rust to run on the WASM base with no JS.

        Look into Rust if you haven’t. A lot of focus is pushing it for web apps. If you use it like a dumb Java at first it’s not difficult to start up. It’s also very marketable due to the security and concurrency problems rust gets closer to solving.