Development process and API levels - android

So, consider the common scenario where you want to build an app using the latest Android APIs (up to 18), but you must also provide support back to Android 2.x.
This is the case for my current app. I had set my minSdk and targetApi levels accordingly and started work.
During testing on various device I noticed some crashes due missing functions/apis on older devices. I had to visit each bug and provide a workarounds on a case by case basis. A real pain as all these were only discovered during test.
So, my question is what is your process for developing in Android with this in mind. I haven't really explored lint but could that help point out any possible issues.
Thanks.

I haven't really explored lint but could that help point out any possible issues.
It will. Lint will report to you anything that you use that is newer than your android:minSdkVersion but is acceptable to your build target.
Lint will generally report this automatically for Eclipse, though you may want to run Lint manually from time to time, as sometimes it seems to miss some stuff. Lint is also available for command-line builds, and I presume that it is (or will be) integrated into Android Studio.
You can read more about Lint in the developer documentation.

Related

How to determine versions of Android supported by my app

I am building an app using Android Studio version 2.1.
I am testing it on a Lollipop device and a marshmallow one.
I was suggested to use support libraries, and I would like to make sure that it runs smoothly on Jelly Bean devices too.
I have looked it up, but can't quite understand if using v4 o v7 guarantees Jelly Bean compatibility (I am assuming it does, but not sure).
This is the first app I am developing and I just realised that I mistakenly used support versions in some activities, and native in others. I am fixing that.
Is there any tool which analyses all the code and then determines the earliest Android version that can run my app? Possibly giving suggestions on changes to make the compatibility broader?
All the answers I found so far confused me, they possibly require knowledge I don't yet have. I am a Java developer quickly trying to put together an app for a start up.
The minVersion in your manifest or gradle file determines the minimum SDK version that can use it. If you lower that number, any API call that doesn't exist on that version will cause an error or warning. Fix them.
BTW, KitKat is 19. So to have KitKat as the minimum SDK you don't need to use any support versions most likely. The best reason to do so is that it will provide a more consistent interface going forward- fewer version specific oddities when using support versions.

Android Studio vs Eclipse with ADT (2015) [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
As of 2015, I see that Android studio is an official IDE for developing android applications according to information on their official site and on each page of their site, there is a note suggesting to go for Android studio rather than Eclipse with ADT.
Note: If you have been using Eclipse with ADT, be aware that Android Studio is now the official IDE for Android, so you should migrate to Android Studio to receive all the latest IDE updates.
But I haven't found any latest article about the pros and cons in choosing the IDE or eclipse with ADT. If some one can throw some light on it then it would help other beginners like me in choosing the right app for android development
IMO everything you can do with Android Studio (gradle, maven, etc) you can do it with Eclipse faster and easier and i mean "faster, easier" because in Eclipse if any problems arises like "error XX" you do a quick search on yahoo/google/whatever and thousands of results appears of guys who had the same problem and how to fix it.
I've been programming with Eclipse for C/C++ and Java over 8 years already switching to IntelliJ for me is a total waste of time with translates in a huge loss of money, all my clients wants their apps for yesterday and i can't have the luxury of "playing" and wasting time tweaking a really different IDE while i have bills to pay. So in my case i will 100% stay with Eclipse.
Indexing. Causes AStudio to load up in a matter of years. Afterwards, same a Eclipse. +E
Language support. +A
Perspectives. One has to actually start fumbling for the different
windows in AStudio once they need to switch between design / debug /
code. This hassle was completely taken care of by the use of
Perspectives. +E
Debugger. Incredibly slow to launch in AStudio. Even Running an app
takes ages to complete in AStudio. And on the rare occasions it
doesn't, one ends up with all sorts of exceptions in his app under
development or plainly app won't install any longer. +E
Support. StackOverflow is the main resource in both cases. Just that
with Eclipse there is not much need for it. +E
UI: AStudio is just eye cancer. Eclipse is such a breeze. +E
Building: gradle > ant; but Eclipse also offers mvn. Also, this is
the main reason of slow run/debug -ing in AStudio and there is no way
around it. You just have to swallow the pill and wait 15-20 seconds
every time you change a line of code. +E
Auto-save: just makes me think Google felt I was retarded and this feature would save my life. +E
Final score:
A : E
1 : 7
Which begs the question of why in the world did they switch to AStudio. That being said, we naturally have no say in this, we just blindly follow the Man.
First, Android Studio is created and maintained by Google toolkit development team. That means that seemingly every latest update of Android Development will be pushed to AS at the first time. Second, AS is an integration of different Android Development Tools, including ADT, IntelliJ, Gradle, Maven, Ant...You know, ADT could be pluggin in many different open-source development tools, like Eclipse, IntelliJ, NetBeans...When you migrate projects from one to another, some problems could be caused because they have different programming rules and formats which pains not only developers but also Google's and Android's. That is a question. So Android Studio may be a solution for this.
I am a seasoned developer in eclipse adt and recently switched to AS ( Dec 2015) . I should say eclipse is definitely better than AS! True eclipse crashes but so does AS and even more! Eclipse know how a Java developer thinks and thus is very very intuitive. AS crashes blatantly throwing NPEs which is embarrassing! As of now AS is definitely over-hyped. I am sure intellij has done some evil deals with google to push its IDE. People who are voting for AS have definitely not worked in eclipse for long. This debate is becoming more of "Who knows what!" rather than "Which is better!"
Here is an article that I am currently writing. Its high somebody raise his voice:
http://pissedoff-techie.blogspot.in/2016/01/why-android-studio-sucks-over-eclipse.html
Android Studio's primary problems:
Very slow compilation for debugging. For some of my project Eclipse - 11 sec AS 5 min!
String completion is unusable. For example, completion without parameters. No completion for some operators, for example if, else, for etc.
AS dramatically slows the PC down: mouse and keyboard are periodically freezing.
Project structure is intricated.
So, how to continue using Eclipse if new version of Google Play Services (V30 and higher) is not available for Eclipse but only for AS? This is info how to prepare AS libs (Analytic, ADS, etc) for Eclipse.
Eclipse is far more superior to AS. It is much easier to use, more intuitive, much less buggy (even though alot buggier than VISUAL Studio, but we're comparing to AS), and will probably make your work more productive. It's 2016 now and I'm planning to keep using Eclipse as long as it's possible.
I am new and I started with AS, but soon grew frustrated when it came down to using other developers repositories in my project. The whole aggrevating process and guesswork of migrating them over to the gradle and configuring manually just became over bearing to me, so I went retroactive and downloaded Mars1 and gave it a try. I found it to be a little unintuitive at first, but once it I learned the navigation I fell in love with the openness of it.. I still intend to use Android Studio for all or my releases, but eclipse is now my goto ide right now unless Google tries making some API that is only used in Studio. I like options and hate it when companies try to streamline they lose great experienced developers that way. Also #mistersmith...you probably cannot afford to be that naive. You are going to go the way of the dodo thinking their is only one solution and feeding into corporate garbage. You may not know it, but google is grooming people like you into believing AS is the only practical solution. Just wait until you are forced to migrate to something differnent in the future after buying into AS for all of your mobile application needs.
In my opinion:
Android Studio is official IDE for Android developer which was provided by Google. So, we can have latest support for updating or any official change from google.
Using Android Studio is better than Eclipse for layout. You can code the layout and see the preview [at least, when I answer this question, Android Studio is better than Eclipse]
With build.gradle we can easily access share library of others on github.
We also can avoid some silly bugs with code analyzer tool of Android Studio (without add any plug-in). And we also can have many other help from it to improve coding style or logic, ...
I feel mad with the problem of generate R.java on Eclipse. Sometimes, my Eclipse does not generate this file, so I have to find many solutions to solve it. On Android Studio, we can easily deal with this problem (this problem almost occurs due to define resource).
If you familiar with Shortcuts (combination key) on Eclipse (Mac OS or Windows,...) you can configure to get this on Android Studio: Go to File -> Settings -> KeyMap -> Keymaps dropdown Option. Select from them.
But, Android Studio is not always good. Specially, when you work on a big project, which includes many projects (each project will generate a apk file). Android Studio is not possible to open two projects in a single window. New projects can only either be opened in a new window or replace the project in the existing window. Someone talks that Module in Android Studio is same as project on Eclipse and Project in Android Studio is same as workspace on Eclipse. But, I think it is not equivalent.
gradle and indexing process on Android Studio is so heavy for wooden PC (just like laptop core-i5 + RAM 4GB + HDD sata), it will result in showing Android Studio is not responding
There's a question already here which answer this perfectly.
To add my bits, Android Studio is the one which is getting the latest update and is going to be the only official IDE for the future, so I think everyone should move to Android Studio.
Android Studio is far better, stable and lightweight IDE. Eclipse has been crashing on me since I started Android Development, while Android Studio had a lot less crashing. On top of that we have a very good integration of Maven for libraries in Android Studio.
The future is here with Gradle, ANT is a thing of past.
Here are some thoughts about how Android Studio team has not been able to become a product of a lot better than Eclipse and why, in my opinion, Google Android Studio will close the project in the near future due to some chronic problems: http://turbocolour.blogspot.com/p/eclipse-adt-vs-android-studio.html
Interesting topic for me:
I used to think that Eclipse was a hell of IDE for building Android apps... ironically, now that I am using AS things got worst.
For sure AS is much more integrated with the android platform but that is why I would have expected something smoother and hassle free: Eclipse had the excuse of being a general purpose IDE after all.
I think the problem lies in the android architecture itself and the related dev tools that makes coding awkward, unpleasant with much lower throughput compared to other more stable platforms.
Google seems not to care too much about changing API and forcing project/code upgrades to make possible to update projects written for previous versions.
They seem to not care at all about backward compatibility.
They introduce changes their libs, even stripping away entire APIs from the core (apache for instance in Android 6), think about play services (that is becoming now bigger than the OS itself), admob, analytics....they keep on changing and changing forcing to upgrade / change source / re deploy.
Every time I see a popup in the dev console about a new feature I feel shivers down my spine.
What about the fact they discontinued eclipse while their studio was still unstable and most important not giving decent reliable tools for porting projects ? Have you guys tried to port a big old project into AS ? It’s a kind of hell...
I just think they don't care that much about coders cause we ARE A LOT, We do not pay them and want it or not you will have to conform if you want to stay in.
I cannot even think about for example Microsoft or Apple doing the same with their dev tools, but it is also true that in such cases you pay them.
My opinion of course.
#Eugene
The reason you say this is the same reason aged developers end up without jobs.
Hey kid, RESPECT.
Have a look to what the previous generations of coders did for the IT and what your one is doing and then think about what you write.
Just give you some names to start your homework: Stallman Knuth Torvalds Berners Lee Wozniak Ritchie Codd Thomson Engelbart and I could continue ....
I tried android studio(AS) and it makes your computer very very slow. I have a intel I5 core processor but it takes a lifetime to open AS. I tried to code a little and i see that auto-completion is great in AS. I tried to search the internet how to make AS fast so try it a little more. There are bunch of tutorials that say it can make the AS fast including disabling other programs. With all the hardwork you have to input just to make AS fast, i switched back to Eclipse. Eclipse is a lot lot lot faster than AS. Installing AS just wasted one day of my life.
As of May 2015, Android Studio support for NDK has significantly improved. You can choose between automatic native lib generation, or using your own Android.mk in more complex cases. But AS still does not provide a way to debug native parts of an app (if you are using JNI). This may be the last reason to keep Eclipse on one's desktop.
Update, a year later: Android Studio 2.2.1 provides decent NDK support, and is almost fully compatible with the old Android.mk - based configuration. And it does support C++ debug, much easier than Eclipse ever did.
The main Pro now is one has to use it for Android dev. The main con is many other tools still use Eclipse. Even Appium automated test framework for Android.
Nowadays one must use Android Studio. It has great features such as code search: one can context click on
Find Usages
when a class is highlighted and find uses in the code. (nevermind the word "usages" is incorrect English. :-) It's the Google way. Swim with it.
It has some tighter integration than was accomplished with Eclipsed such as the nice feature to context menu on an xml layout file and find where in code it is used. Useful.
Also, it uses Gradle so people can write their own build processes rather than having an IDE do it automatically. I think this frees Google from having to waste time figuring out how to make the IDE handle all the configuration mess.
While our build went from 2+ minutes with AS 1.x to 17 minutes with AS 2.x, this could be attributable to how we have our Gradle files laid out. We need a build programmer to make sure our build configuration is correct.
As you can see, the main Pro is one has to use it and the putative Pros are it has better support for Android code navigation and screen designers. The main Con is it moves from the standard IDE used for most all other Java development and it doesn't provide drastic improvements in performance. Another Con is it arguably introduces the need for a new role of build engineer; but many projects already were bogged down into manual build definitions with Maven; so, that may not be a Con depending on your team's speed.
For Android development definitely Android Studio is better than Eclipse. I have worked on Eclipse for almost 4 years but when I switched to Android Studio, I felt the difference. Below are few points I have noticed:
Performance:
Android Studio's performance is better than Eclipse and improving with each new release.
Intelligent:
Android Studio is more intelligent than Eclipse. It gives you suggestions more accurate and fast
More options:
You can build multi flavor APKs at once in build.gradle
Summary:
After working on Android Studio if you will work on Eclipse you will feel the same as driving a entry level car of Toyota after driving Lamborghini Aventador :)
I felt this difference
Update:
Android Studio 2.0 is coming. Its very very fast than current Android Studio. http://android-developers.blogspot.jp/2015/11/android-studio-20-preview.html
Update:
Android Studio 3.0 is released. As I mentioned 2 years ago about the difference, Android Studio is getting better day by day. Have a look into AS 3.0 : https://android-developers.googleblog.com/2017/10/android-studio-30.html
Update:
Android Studio 3.3 has been released last month. Please check here for more details: https://android-developers.googleblog.com/2019/01/android-studio-33.html

Compatibility of Android applications among different versions of Android

I created an Application about 1 year back on Android version 2.1 and made available to all the other versions of Android. At that time Android mobiles with versions 2.1, 2.2 and 2.3 were very common.
So I tested my application on all available versions and there was no issue.
Now Android with versions 4 has become the hottest mobile in the market. When I test my application on the versions of 4 it started crashing.
My question is how to ensure that the application that we develop now should be compatible with the later versions which are not available now ?
How to write applications [OR] what are the things that I need to consider so that with minimal code changes it should work on all the versions ?
By testing your applications on the new versions. I'm sorry that is really the only half fool proof solution. The versions get out in plenty of time to test on the emulator so there really isn't any excuse.
My guess is that you've done some nono like downloading data on the main thread. That isn't allowed any longer. Your application then don't get the data and you get a bunch of null pointer exceptions (which you'd also have gotten if data access had been missing).
There is no perfect answer. Android will forever be evolving and changing. Hopefully it will continue to do so for the better like it has been. Google forsaw this issue, which is a small part of the reason they made it so easy to update an app. you will just have to update as it comes. it is its greatest strength, that it can always change, grow, and get better.

Platform compatibility issue

Android platform sample codes and reference from the Android developer site is based on platform 1.5 I understand that newer platforms can support applications developed on older platforms but the reciprocal is not applicable which makes sense but is the coding different? Are codes that were used for developing 1.5 apps still useful in newer platforms or have newer classes and methods replaced them? It seems that eclipse is producing a lot of coding errors in its samples in relation to classes and methods also if a app that was developd by a IME is unable to be viewed on the emulator or how can it be tested or retrieved on the device? Any advice is welcome...sorry it's so long
If you look in the SDK folders, on windows it will be c:\<SDK location>\samples\android-x the samples are located according to api level so they will definitely be compatible there so I would look at these.
To answer your other questions, yes there are api changes as you go up an api level so they should cause warnings or compilation errors and some classes may even be completely removed. Generally the lower level stuff shouldn't change too much but the most important thing is that the semantics change rarely unless there was a design flaw in the original implementations.
The release notes for each version usually points out what has changed and the online documentation is generally superb in my opinion in informing you what exactly is deprecated. If you are just targeting old devices then your emulator is just set to target those api levels but if you are concerned about functionality then you could code using api 1.5 say, and run an ICS api level 15 emulator and check everything works OK, if not then you decide what the best strategy should be. Generally I would advise to target Android 2.2 and above for mobile devices and 3.0 for tablets but really it is up to you.
three are classes that are deprecated and can't be used anymore, like Contacts.People. There are also classes that are deprecated, they can still be used but they should be avoided in new projects. And there are new classes that were not available before. In some cases like for Fragment there are compatibility support libs to use the new features on the old platform but this is not true for classes like for example PreferenceFragment that are not supported on old platforms.

Is there a way to check the API compatibility of my app for lower levels?

I'm developing an Android app which will target 2.1/2.2 devices, so I have my project set up to use the 2.2 SDK (API level 8), but allow for installation on devices with at least API level 7.
The problem is that during my daily development, I'm not always paying close attention to which API level of the methods/classes/constants that I'm using, which makes it very easy to break code on older devices. I have got dynamic classloading working, and as much as I dislike having a ton of extra factory classes and interfaces in my project, I'm willing to deal with that solution. Currently, the only way I have to check an older API level is to set my project's settings to the given level, rebuild, see what breaks, and then refactor. It's quite a pain.
What I would really like is the ability to scan my code and check compatibility for a given API level without changing my global project build settings. Is there some easy way to do this?
Android API Analysis Plug-In for Eclipse:
http://adt-addons.googlecode.com/svn/trunk/apianalysis/
Ok, so based on my research and the comment by #CommonsWare, there's no static analysis tool or some other easy way to do this. Shucks.

Categories

Resources