Hello there,

I am an experienced programmer. I can do C/C++/Rust/assembly/Ruby/Perl/Python/ etc… The language itself is not a barrier.

The barrier to me is that I have never coded a single web or android application. I guess it must be surprising but I am more of a low-level programmer in my job (I develop a compiler backend) and I never really had the opportunity or idea to work on an app.

What would be a good starting point for making an android application?

A quick search got me this: https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/unit-1-get-started/lesson-1-build-your-first-app/1-1-c-your-first-android-app/1-1-c-your-first-android-app.html

Would it be a good starting point?

Side note: my app will not have to interact with any service. If I were to code it as a command-line program, it would not take me more than a day or two. The actual app would involve (for now) no more than a text field, a button, some logic attached to it - the hard part for me being to choose a framework to build it, “upload it” to my phone and use it.

  • luciole (he/him)@beehaw.org
    link
    fedilink
    arrow-up
    18
    ·
    vuosi sitten

    I’m old ahem experienced too and I went from no app development to having a basic native app on my Android phone in a few days with Flutter/dart. The language is easy to pick up, there’s plenty of documentation and it’s pretty polyvalent since it can build for mobile, desktop or web.

  • Bipta@kbin.social
    link
    fedilink
    arrow-up
    11
    ·
    vuosi sitten

    First sit down and cry. Then pick yourself up and start following some of the advice here.

  • redacted_name@lemmy.ca
    link
    fedilink
    arrow-up
    9
    ·
    vuosi sitten

    Depending upon what you are trying to do, a Progressive Web App (PWA) might be a solution if you don’t mind JavaScript. Avoids a lot of platform learning curve. (But you do end up having to learn HTML and CSS too)

  • d3Xt3r@beehaw.org
    link
    fedilink
    arrow-up
    9
    ·
    vuosi sitten

    If it’s just for personal use, why not just use Tasker? Judging by what you’ve written, it could be easily done without needing any Android coding experience.

    • Rivalarrival@lemmy.today
      link
      fedilink
      arrow-up
      5
      ·
      vuosi sitten

      There’s also “Tasker App Factory” which allows you to export either an individual task or a complete Tasker project as a standalone app.

  • Tracteur Blindé@beehaw.org
    link
    fedilink
    English
    arrow-up
    8
    ·
    edit-2
    vuosi sitten

    Last android app I created for a personal project I did using Kivy which is a python application framework. I found it nice to be able to develop the app on the desktop and then run on Android. There were enough multi-platform python libraries for things like bluetooth that I was able to even develop that side of things on my desktop development environment as well. This would be the framework I recommend.

    Web Apps are also a good choice. I have a couple apps running off my homelab that are just webpages accessible from inside the network and they work well enough on mobile. If you really want to package it there are a couple ways. Not the best use case for you, but might be of interest to the others, I really love Tauri. It is an alternative to electron that focuses on binary size and security. Tauri 1.4 is great for desktop applications. The alpha version of 2.0 supports mobile, however I have yet to write anything for the 2.0 version that hasn’t involved creating a pull request to fix something so… you’ll be in for a treat if you go this route.

    As mentioned in thread, several game engines do mobile packaging fairly well. Godot’s android functionality works pretty well. Bevy has limited android support, but the web version functions well enough. I see this as more of a “If you already know a game engine, you might secretly know how to make a mobile app. Don’t learn a game engine just to make a mobile app.”

    • observing@beehaw.org
      link
      fedilink
      English
      arrow-up
      2
      ·
      vuosi sitten

      +1 for kivy (Actually, kivymd; love those widgets). I have also been developing a bluetooth based app on a (Windows) desktop and then packaging it for Android. It was a substantial learning curve for me, but I found the end result to be worth the effort.

  • HarkMahlberg@kbin.social
    link
    fedilink
    arrow-up
    7
    ·
    edit-2
    vuosi sitten

    Have you considered writing a responsive web app in JavaScript that can be hosted by GitHub Pages? Depending on what exactly you need to write and what you need the program to do, that may not be the best option, but it is simple, you don’t need to worry about hosting the site, and it allows you to rapidly deploy your application and make it accessible anywhere through a web browser. You just write the HTML, CSS (if you wanna be f a n c y), and JS. No shortage of tutorials on those 3 languages.

    Here’s a few examples I’ve written:

    https://github.com/mpm11011/hanafuda-react

    https://mpm11011.github.io/spirit-island-tracker/

  • Hawk@lemmynsfw.com
    link
    fedilink
    arrow-up
    7
    ·
    vuosi sitten

    Jetpack compose in Kotlin, Flutter using Dart or Fyne are all pretty easy to get started with.

  • saplyng@kbin.social
    link
    fedilink
    arrow-up
    6
    ·
    vuosi sitten

    If you want to use python, you could try Flet. I’ve been using it for some projects at work and it’s dead simple to create an acceptable UI and the docs are very easy to read through with frequent examples. In July they added support for Android and iOS via progressive web apps, I haven’t tried it out yet, but it seems interesting so I might start a project in it soon…

    I’ve been having fun with it, if that’s worth anything!

    Otherwise, depending on your phone I’d just do native code with Kotlin + jetpack compose for Android or Swift + swiftUI for Apple. I always greatly preferred android development in school but once jetpack compose and swiftUI came out I find them both to be about the same level of enjoyment.

    All three of those options are all declarative (describe how you want it to look in code) and I find it much easier to deal with than iOS storyboards or Android xmls.

    • fievel@lemm.ee
      link
      fedilink
      arrow-up
      1
      ·
      vuosi sitten

      Waow this seems like a great framework abstracting all the ui shitty stuff

  • grooving@lemmy.studio
    link
    fedilink
    arrow-up
    6
    ·
    vuosi sitten

    You can build it in Godot and export it to your android. Alternatively, you could build a webpage and access it via your phone browser.

    Godot is how I’d do it. I’ve done something similar before.

    • floofloof@lemmy.ca
      link
      fedilink
      English
      arrow-up
      3
      ·
      vuosi sitten

      Godot is great but probably overkill for what OP wants to do. I would choose something like Flutter instead for a basic app like this.

  • Skull giver@popplesburger.hilciferous.nl
    link
    fedilink
    arrow-up
    5
    ·
    vuosi sitten

    Flutter and Jetpack Compose are the modern way to start things. I haven’t been keeping up with Google’s Jetpack and I find their introduction rather lacking compared to how they have guided developers into Android development in the past.

    Flutter runs on Dart, which is like a mirror universe Javascript that only Google uses. It ignores all operating system UI controls and instead bundles a custom renderer that you control with a declarative UI.

    Compose is based on Jetbrain’s Compose system, which does the same thing but in Kotlin.

    Both Flutter and Compose can produce cross platform apps (Android, iOS, web pages, Linux, Windows, macOS). Because they render all of the UI themselves, you end up with a similar looking app on every platform by default, which is either great or terrible depending on what you want.

    If you want a full native Android experience, ignore Compose and Flutter and follow the guides on Google’s websites. Maybe read a book or two as well if you want to get the details down. My experience is that a classic activities/fragments based UI works a lot better once the app is done, but development takes significantly longer.

    The standard Android API runs on Java, though most apps these days seem to he written in Kotlin. The Android API is quite heavy on the handlers and callbacks, so Kotlin makes a lot of sense here. Plus, Android Java is a version of Java 7 with a bunch of Java 8 tricks, not exactly anything modern.

    If you need performance, the NDK will let you add C++ code to your Android app. I’m pretty sure there are also bindings for Go and Rust. It doesn’t make much sense to develop the app itself in those languages, though.

    Mobile apps have a whole lifecycle to keep track of and Android has the whole activities/fragments/services/intents system that’ll be very confusing if you’re coming from desktop development. You’ll also ask “why can’t I just do this” very often, and the answer is usually “because that drains the battery like crazy”.

    As for uploading the app to your phone, the process is as follows:

    • hit the build button in the IDE
    • transfer the APK file to your phone
    • open it

    You can short circuit this process by enabling developer mode in your phone’s settings and hooking it up to your computer with a USB cable. You’ll only need to hit the run button if you do that, plus you get an interactive debugger of course.

    If you wish to publish the app, you can either build a signed APK and upload that somewhere for others to find, or go through the Google Play registration process.

    If you want to go the web app route, be prepared to learn words like “react”, “svelte”, “eslint”, “babel”, “seebass”, “bun”, “webpack”, “tsconfig”, “cors”, “yarn”, and “npm”. Actually, one of those is a Pokemon, but I’m sure by the time I finish this comment someone will have written a new UI framework with that name. You don’t need all of that, a simple HTML template with some Javascript glue will do, but this is the stuff web app people commonly point at.

  • Lanthanae@lemmy.blahaj.zone
    link
    fedilink
    arrow-up
    4
    ·
    vuosi sitten

    Generally UI related stuff is opinionated framework-heavy, so the best place to start is see what technologies similar-ish apps use and then read their documentation.

  • HiDiddlyDoodlyHo@beehaw.org
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    vuosi sitten

    That doesn’t seem like a bad start to me, but I haven’t read it thoroughly. I also recommend checking out the official Android Studio beginner’s guide: https://developer.android.com/get-started/overview

    Alternatively, you can use wrappers like Flutter, React Native, or the Ionic framework if you think you might want cross-platform or web capability later, though that adds a lot of overhead that isn’t always the best choice.

  • String@beehaw.org
    link
    fedilink
    English
    arrow-up
    2
    ·
    vuosi sitten

    I’ve been using flutter + android studio and I’m enjoying it (as much as you can while making a mobile app). Android studio is a lot but it includes android emulators which is nice to test stuff on if you don’t feel like getting your phone.

    You’ll need to install flutter (works on windows, mac, and linux), android studio (I think vscode also works?), and you can download a sample project, open it, build it, and run it. It’s a great way to see how it works. Then you can create your own project and go from there. Flutter has a lot of packages which I would recommend at looking through (if your app is simple you might not need any of these though).

    Once you build and run the app on your android phone, it’s there and you can use it. You don’t need to upload it to google play or anything else (unless you want to share it).

  • confusedwiseman@beehaw.org
    link
    fedilink
    English
    arrow-up
    2
    ·
    vuosi sitten

    Not sure if it would meet your requirements, but if specific enough to your phones current control capabilities; would a shortcut or automation app meet your needs. I seem to remember them being able to prompt for input. It might be a more COTS approach for you depending on your needs.

  • mhredox@reddthat.com
    link
    fedilink
    English
    arrow-up
    2
    ·
    vuosi sitten

    React native is pretty simple to get started. I built my first android app with it a few months back. Also cool that you basically get both the android and iOS apps done at the same time.