13
votes
Creating an Android app - Help refer a book or guide?
For most of my life, I've been a hobbyist programmer. From Qbasic to Python and JavaScript. I've always wanted to create an Android app, really just for me, just to do it. It's a bucket list thing.
Can you give me a book or a website guide that is up to date and complete but not 100,000 pages long that could help me get it done? A book would be preferred! I just want to cross this off my list!
The free courses from Google on Udacity got me started several years ago. They've been updated to use Kotlin since I took them so I can't really speak to the current version.
There are a lot of moving parts to an android app, so I don't think a relatively short guide would be that useful, especially if you don't have a lot of experience building larger software projects. I was in that situation when I started, with only some ruby/python/java hobbyist experience. I did buy a few books when I first started, but with my experience level, I found the Udacity course much easier to follow. Also, it's hard for books to be up to date since Android has evolved pretty quickly.
Awesome! I'll go check out udacity!
Edit: my spellcheck went nuts there
My job is literally Android developer and I have to ask, what's your experience with Java/Kotlin? That's the first thing you should probably learn/brush up on. Otherwise, Android's own developer guides is what I first referred to when I started off: https://developer.android.com/guide
Mobile development itself has some weird intricacies and architecture, some things that might pop up are things like MVP, MVVC, and Clean Architecture, which are definitely Googleable.
Finally, some helpful libraries I've used in my jobs are Dagger (now Hilt, I think, for dependency injection), Jetpack Compose (the new standard for UI/UX which I really love) and okhttp3 and retrofit for networking solutions. Good luck! I love mobile development and am always happy to answer any questions.
What are your thoughts on react native vs native development? Any recommended places to start for that? I'm already a web dev very familiar with js and react, and outdated (se8) basic syntax knowledge of Java.
I like React well enough, I don't have a LOT of experience in it, but my company recently has been transitioning over to webapps and mobile web for an easier experience. That being said, I still think native has it's place (I mightttt be a bit biased though). It's hard to get some hardware features that my company needs from a webapp, and App Store presence is definitely an underrated thing that I feel like people overlook too.
I'm not 100% sure where to start on react development though, sadly! I'm usually a "try it myself" and google the errors, or just follow youtube videos type of guy but it's been a couple of years since I touched React.
I'm a lead mobile dev, I currently actively work on a project that has both iOS and Android native apps and I've worked (in a limited fashion) on react native apps in the past. I've also personally tested out kotlin multiplatform.
In the past I held strongly that native apps provide a smoother and more consistent experience for users. However in the last couple years I've grown to think react native (and probably flutter) provide a very similar experience.
I think the true question is how much of a productivity gain do you see from having one react native app vs two native mobile apps. I think this is dependent on what works best for your team. In my personal experience I've found that I might see 20-30% productivity gain from using a cross platform solution because I still have the overhead of dealing with build issues, testing, app store submission on both platforms.
As a manager I wish we just had one react native app because it would make my life far easier.
Thank you. I really appreciate your time and reply! One thing that I am bad at is using libraries because I want to do it myself but I'm learning to be more into them so your tips on what to look at are helpful!
I just want to create an app that logs my spending vs my budget. Just to try and do it (6 years ago, I would have actually USED it but not anymore).
The best place is the start I suppose, so I will forge on!
For sure! I think the thing about libraries and dependencies is that they make development easier, so you can get to where you want faster. If you ever want to roll your own things, that's fine but maybe start off with some libraries first to get to where you want to be. Then you can replace them one by one afterwards!
For example, the first thing I do whenever I get into an app is to add the OkHttp3 library to do my networking, because figuring that out from scratch is pointless and painful. Maybe one day if I want to write my own networking code I will, but I'd rather get into the meat and potatoes of what I actually want to write!
Side note, if you ever want an app that does that already, I personally use Nerdwallet, but I've also heard good things about YNAB! But doing that kinda defeats the point of this project
When I was dabbling in native Android apps, I found the commonsware books to be the best-in-class resource on Android development.
https://commonsware.com/catalog
Don't be intimidated by the size of the books. All of the commonsware content is practically oriented and fun to follow along.