4 ms·
It's been a while since I jumped into Android dev, so I'm curious if you could elaborate more on the things you are finding annoying and/or confusing. Also, are
by king_jester 14y ago
It's been a while since I jumped into Android dev, so I'm curious if you could elaborate more on the things you are finding annoying and/or confusing. Also, are there things about Android development that you like more than iOS development?
- eropple 14y agoI never did iOS development in anger; I just really, really don't like Obj-C or Xcode from dealing with OS X programming. A few things that come to mind off the top of my head: -Again, the documentation isn't well-written. It almost all feels like it's written either by an engineer with little writing experience or a technical writer without engineering experience. There have been times when I've had to re-read passages over and over again because I genuinely couldn't parse what they were trying to say. -The insistence on weak typing everywhere is insane. Intents are sloppy, weakly-typed junk; Messages ditto. The R auto-generated class isn't bright either--even if you need an integer index, at least wrap it in a type-safe class to eliminate the possibility of passing the wrong thing around. I really do genuinely like working in Java, but I like working in well-designed Java. This is the same company that made Guava, which is perhaps the most elegantly designed API I know of in Java-land. But many of Android's APIs treat classes as an incidental hindrance. -Dalvik blows. There is nothing good about it and there's so much that's bad about it. The class limit is crippling, and the lack of hot-loading is prohibitive. (I write games in my spare time, I'd love to be able to use Groovy as a scripting layer, but that's not going to happen.) -This might sound crazy, but XML is a machine-readable format. People know that, right? Okay, great. So why are the tools for building layouts so much junk? Not on this list is fragmentation, because I don't find that to be a real problem for my purposes. My app for work is 4.0+ only, and I test on a Galaxy Nexus; if it works there it'll work on a SIII or an Atrix HD or whatever else somebody wants to try. (We're outsourcing wide device testing to uTest, but our app isn't done so I haven't had the opportunity to try their services.)
- levesque 14y ago>Dalvik blows. The single thing that almost got Google into big trouble with Oracle is a weak point ;)
- eropple 14y agoYup. Different is not always wrong, but different-and-worse is.
- TillE 14y agoFor games, I'd definitely recommend the NDK, which lets you write cross-platform code with OpenGL. Or just go with Unity and C#.
- eropple 14y agoI don't really have any interest in dealing with Unity (to me, it's not programming) or C++. I generally use libgdx for messing around/prototyping. I'd be more likely to go to Mono than the NDK, though that too is a lot of work.
- luke_s 14y agoI think many of your points are valid. In any large SDK there will be rough edges, and you have pointed out several of them. However I would like to post a contrary opinion, just because I know that many people who have never done Android development will read this and think 'yup, android development blows'. I've been working with the Android SDK for a few years now, and I haven't found any of the things you mentioned to be a major hindrance. Personally I think the documentation is just fine - Perhaps I haven't been poking around the same corners of it that you have, but the tutorials have always been helpful and the design guide is very good. The weak typing is again an annoyance. However in all my time I can say, that I have only run into one bug that was caused by weak typing and that was on the R auto-generated class. Typically your strings are a R.strings, colours are at R.colours, etc so it makes it pretty easy to spot if you are passing a string through where you should be passing a colour. I did java dev back in the 1.1 and 1.2 days - now that JVM sucked! Dalvik, again I have never had any problems with. As for the GUI design tools, they are probably some of the best I have seen. Definitely better than the tools that I was using to do Swing dev work back in the day. So yes, all those things you mentioned could do with some more polish. But I have found my Android dev experience to be good one and the android SDK is more than adequate to develop some pretty hefty apps!
- eropple 14y agoTypically your strings are a R.strings, colours are at R.colours, etc so it makes it pretty easy to spot if you are passing a string through where you should be passing a colour. Here's the problem. Say you need to pass around a specific resource (reusable code somewhere in your app): void doSomething(int stringResourceId) ^ THIS IS WRONG The problem is that the R bullshit essentially decontextualizes what that actually means. This is a statically typed language. It should be used as a statically typed language. And comparing the GUI design stuff to Swing is ignoring the ridiculous number of vastly better systems everywhere else. SWT is great. Microsoft, too, nailed it with WinForms and WPF/XAML kick an unreasonable amount of ass (though I won't use it because, derp, Windows). Swing sucked from day one. Your post disagrees with me, and that's fine, but I get a vibe of "good enough" out of most of it and we should, as a culture, be better than that. Android isn't. It is precisely "good enough," and that sucks because the Android people are obviously very smart people who could be doing vastly better.