Re: Recommendation for a good Android programming book?

Posted by ram a... on 21. May 2015

Knute Johnson writes:




Anybody got a recommendation for a good Android programming book based
on the current Android Studio?




Most Android books are alike, as if one author had copied the
structure from another author. For example, near the begining
you will learn that there are four types of components (activities,
broadcast receivers, and two others I now have forgotten) and
about the lifecycle of an activity (onCreate, onResume, onPause, ...).
You will learn about the structure of a file called IIRC
»AndroidManifest.XML«. There is not (yet) an outstanding work
that can be highly recommended (such as »Effective Java« by
Joshua Bloch or »Exceptional C++« by Herb Sutter).



Newer books will also teach new APIs, like fragments. But to
learn the fundamentals, this is not required.



Another type of Android programming book is the »Android
programming cookbook« kind of book, there you will find
»recipes«, for example, how to take a picture using the cam.
These books might assume that the fundamentals are already know.
If you happen to need a certain »recipe« and you find this
in a certain cookbook, then this book is good for you,
even if you do not need the other recipes right now.



I checked out Android Studio. If you have no problems with software
that will connect to the internet and does stuff there that you
don't know about, it might be ok for you!



The build system of Android Studio is Gradle. I checked out Gradle.
In 2013 or 2014, I found that the Gradle DSL does not seem to
be well documented. See the repost below.



I wasted some time trying to understand and use Gradle.
And what works best for me now, is to just call the SDK myself!
No Ant, no gradle, no Eclipse, no AndroidStudio.
I just call javac, dex, aapt and jarsigner from a batch script.
I know what is going on, it's fast, and I can even do this
natively on an Android device using Terminal IDE (which,
however, does not work on Android 5 yet).



Here is the repost of my explanantion why the Gradle
documentation was not perfect in 2013/2014. (I don't know
whether it has gotten better in 2015.)




Its DSL is not well-documented.



For example, this is a part of a text written in the
Gradle DSL:



task helloWorld { println "Hello World" }



. This corresponds (is translated) to the Groovy



task(helloWorld({println "Hello World"}))



. One can understand the syntax of the preceding line as
soon as one has learned the Groovy syntax. But it has a
special meaning in Gradle, because Gradle applies an AST
transformation to it, transforming it to:



taskDeclarations.add("helloWorld", {println "Hello World!"})



However,



************************************************
* you cannot find a documentation of this AST *
* transformation *
************************************************


(as of mid 2013, when I looked at it, at least). That is,
they do not tell you that they do such an AST
transformation. But you need to know about it, when you want
to know what the task "pseudokeyword" of the Gradle DSL
actually means and what one can use therein and what not. So
the Gradle DSL is



 ********************************
* not sufficiently documented. *
********************************




My own small German-language Android course is here:



www.purl.org/stefanram/pub/android-entwicklungde



. (In case of a 403, use a Google referrer.)


08. Jun 2015: PEDOFILOMOSESSUALE SODOMIZZANTE BAMBINI: PAOLO BARRAI DI WMO E BSI ITALIA SRL (SOCIETA' MALAVITOSE, RICICLA CASH MAFIOSO E POLITI-CRIMINALE)! STALKA A MORTE CHI LO FOTOGRAFA E SE "1 INSISTE" IL MANDANTE DI OMICIDI PAOLO BARRAI FA "SUICIDARE" DAVVERO! by CHE S...

08. Jun 2015: Re: Recommendation for a good Android programming book? by e d p...

08. Jun 2015: Re: Use URL for HTTPS request using Proxy by Silvi...

07. Jun 2015: Re: Use URL for HTTPS request using Proxy by Silvi...

07. Jun 2015: Re: Use URL for HTTPS request using Proxy by Arne ...

06. Jun 2015: Re: Recommendation for a good Android programming book? by Arne ...

06. Jun 2015: Re: Recommendation for a good Android programming book? by Arne ...

06. Jun 2015: Re: Use URL for HTTPS request using Proxy by Arne ...

06. Jun 2015: Broadcast packet received on MulticastSocket? by Knute...

05. Jun 2015: Re: Recommendation for a good Android programming book? by Marti...

05. Jun 2015: Re: Recommendation for a good Android programming book? by Marti...

05. Jun 2015: Re: Recommendation for a good Android programming book? by Eric ...

05. Jun 2015: Re: Use URL for HTTPS request using Proxy by Silvi...

05. Jun 2015: Re: Recommendation for a good Android programming book? by Eric ...

05. Jun 2015: Re: Recommendation for a good Android programming book? by e d p...

04. Jun 2015: Re: Recommendation for a good Android programming book? by Marti...

03. Jun 2015: Re: best and worst sorting algorithm for 1 to 10, 000 and then 10, 000 + elements by Arne ...

03. Jun 2015: Re: Use URL for HTTPS request using Proxy by Arne ...

03. Jun 2015: Re: How to programatically limit the number of threads in a java by Arne ...

03. Jun 2015: Re: How to programatically limit the number of threads in a java by Arne ...

03. Jun 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Arne ...

03. Jun 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Arne ...

03. Jun 2015: Re: Recommendation for a good Android programming book? by Arne ...

03. Jun 2015: Re: Wiring: A topic underrepresented in teaching? by Arne ...

03. Jun 2015: Re: Why do we need to "@Override Object clone" if all classes are subclasses of Object, why can not directly involke the functin? by Arne ...

02. Jun 2015: Re: Design pattern used to mask account number in an ATM or POS transaction by Arne ...

02. Jun 2015: Design pattern used to mask account number in an ATM or POS transaction by Ajay ...

01. Jun 2015: Re: Wiring: A topic underrepresented in teaching? by Silvi...

01. Jun 2015: Wiring: A topic underrepresented in teaching? by ram a...

01. Jun 2015: Re: Wiring: A topic underrepresented in teaching? by Eric ...

30. May 2015: I 2 BASTARDI LAVA CASH MAFIOSO DAVIDE SERRA DI ALGEBRIS E PAOLO BARRAI (AVANZO DI GALERA: 3 VOLTE IN CARCERE IN VITA SUA) FAN STALKING ASSASSINO A GENIO BORSISTICO ED EROE CIVILE MICHELE NISTA, SU ORDINE DI NAZIMAFIOSO PEDOFILO SILVIO BERLUSCONI E.. by CHE S...

29. May 2015: Re: Why do we need to "@Override Object clone" if all classes are subclasses of Object, why can not directly involke the functin? by Eric ...

28. May 2015: Re: Why do we need to "@Override Object clone" if all classes are subclasses of Object, why can not directly involke the functin? by HU Ti...

28. May 2015: Re: Why do we need to "@Override Object clone" if all classes are subclasses of Object, why can not directly involke the functin? by HU Ti...

28. May 2015: Re: Why do we need to "@Override Object clone" if all classes are subclasses of Object, why can not directly involke the functin? by Arne ...

28. May 2015: Why do we need to "@Override Object clone" if all classes are subclasses of Object, why can not directly involke the functin? by pigeo...

26. May 2015: Re: Recommendation for a good Android programming book? by Marti...

26. May 2015: Re: Recommendation for a good Android programming book? by Marti...

26. May 2015: Re: Java DatePicker popup calendar by Nigel...

26. May 2015: Re: Recommendation for a good Android programming book? by Eric ...

26. May 2015: Re: Recommendation for a good Android programming book? by Joerg...

26. May 2015: Re: Recommendation for a good Android programming book? by Marti...

26. May 2015: Re: Java DatePicker popup calendar by e d p...

26. May 2015: Re: Recommendation for a good Android programming book? by Knute...

24. May 2015: Re: How to read the Java tutorial offline? by David...

23. May 2015: SQLite database by Ram V...

23. May 2015: Java DatePicker popup calendar by Danie...

23. May 2015: Human Rights and Justice in Islam by bv4bv...

22. May 2015: Re: Can we convert a Java ResultSet/SqlRowSet from Database query directly to JSON array without Mapping it to a List<Type>? by Arne ...

22. May 2015: Re: Recommendation for a good Android programming book? by e d p...

22. May 2015: Can we convert a Java ResultSet/SqlRowSet from Database query directly to JSON array without Mapping it to a List<Type>? by kaush...

21. May 2015: Re: Recommendation for a good Android programming book? by ram a...

21. May 2015: Re: Recommendation for a good Android programming book? by Arne ...

20. May 2015: Java and C# and Threadpool by Ramin...

20. May 2015: Re: JScrollPane not scrolling smoothly on fast computer by Jim H...

20. May 2015: Recommendation for a good Android programming book? by Knute...

20. May 2015: Re: JScrollPane not scrolling smoothly on fast computer by Knute...

18. May 2015: Re: Main Loop porblm by Silvi...

18. May 2015: Re: Main Loop porblm by Eric ...

18. May 2015: Re: Main Loop porblm by Micha...

18. May 2015: Main Loop porblm by Micha...

18. May 2015: Re: Puzzler: Fun with Streams. by scatt...

18. May 2015: Re: Puzzler: Fun with Streams. by scatt...

17. May 2015: Re: get a list of classes at runtime by Arne ...

17. May 2015: Re: get a list of classes at runtime by Arne ...

16. May 2015: C*C*C: CIUCCIA CAZZI DI CAVALLO PAOLO BARRAI DI WMO E BSI ITALIA SRL, UNA VOLTA CACCIATO (E FATTO CONDANNARE A GALERA) DA CITIBANK, PRIMA DI SPENNARE POLLI VIA WEB, FECE FILM PEDOPORNOMOSESSUALI! E CON CAVALLI! CIUCCIANDO E PRENDENDO FALLI EQUINI E.. by CARME...

15. May 2015: Need Oracle DBA Resumes for the position in Chicago,IL by srini...

14. May 2015: About Java... by Ramin...

14. May 2015: Re: JNI Wrapper for Delphi and FreePascal version 2.82 is here.. by Ramin...

14. May 2015: JNI Wrapper for Delphi and FreePascal version 2.82 is here.. by Ramin...

14. May 2015: Re: [Javascript] Uncaught ReferenceError: Invalid left-hand side in assignment by ram a...

14. May 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Rober...

13. May 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Jeff ...

13. May 2015: Re: get a list of classes at runtime by Marti...

13. May 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Jeff ...

13. May 2015: Re: get a list of classes at runtime by Joshu...

13. May 2015: Re: [Javascript] Uncaught ReferenceError: Invalid left-hand side in assignment by Joshu...

13. May 2015: [Javascript] Uncaught ReferenceError: Invalid left-hand side in assignment by garlo...

13. May 2015: [Javascript] How do I find out what this bug means and how to fix it? Uncaught ReferenceError: Invalid left-hand side in assignment by garlo...

13. May 2015: Re: get a list of classes at runtime by j4n b...

13. May 2015: Re: get a list of classes at runtime by Joerg...

13. May 2015: Re: get a list of classes at runtime by Phili...

13. May 2015: Re: get a list of classes at runtime by Eric ...

13. May 2015: Re: Puzzler: Fun with Streams. by Danie...

13. May 2015: Re: get a list of classes at runtime by Eric ...

13. May 2015: Re: get a list of classes at runtime by Eric ...

13. May 2015: Re: How to programatically limit the number of threads in a java by Joerg...

13. May 2015: Re: get a list of classes at runtime by e d p...

13. May 2015: Re: Puzzler: Fun with Streams. by Jeff ...

13. May 2015: Call for Papers: World Congress on Engineering and Computer Science WCECS 2015 by iaeng...

12. May 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Jeff ...

12. May 2015: Re: How to programatically limit the number of threads in a java by Marce...

12. May 2015: Re: JScrollPane not scrolling smoothly on fast computer by Knute...

12. May 2015: Re: how does a marker interface give specific instruction to jvm(java internals) by Jeff ...