I am an experienced professional programmer who wants to delve into Android programming. I also wish to investigate cross-platform programming using tools like PhoneGap or Titanium.
However, I am a bit in doubt of which learning strategy is best.
One approach is to get a good feeling of the Android environment and later on explore the possibilities of the cross-platform tools.
Another approach is to jump start using say Titanium (which to me looks like the better option of the two mentioned) and then after a while look into the underlying Android building blocks. The reason why this approach seems worth considering is that although I have earned my living on programming for 20 years, I have no experience whatsoever with Java. And the feeling of getting something done has always been encouraging to me.
What do you think? Does option 2 make sense, or would it be more sensible to get an understanding of the Android environment first?
Thanks in advance,
Martin
I think that all depends on what will you develop:
If you want to develop simple interfaces (parsing XML/Json/...) with some forms and nice transitional effects, then Titanium is yours.
However, the most advanced functionalities aim the iOS platform. For example, the augmented reality module or the push notification are not supported for Android.
On the other hand, if you want to develop advanced interfaces (Games for example), then you have no choice: Android SDK is the best way (you can use Flash for Android but it doesn't support very first Android OS versions).
In all cases, you have to understand how the Android platform works.
I had a similar decision to make, although I am not an experienced programmer like you with vast experience , I had no java knowledge and I needed to write an android app for a project in grad school ,and i'd tend to agree with you on which is the better option , although reading the dev guide and grasping the basics will be a must. And like Zakaria says , it also depends on what you plan to develop.
in my case I learnt basic java first , then used the SDK for my project. Its not that big a learning curve actually , I did not find too many problems with the API.
Related
Sorry if the title wording is not clear enough. I need to deploy a very simple app on Android and iOS for a partner company (app does not need to be in App Store or Google Play) to control some machinery via bluetooth. Interface needs to be very basic and only contain a couple of buttons and some text labels that display some information (and be able to read a QR code).
We are not a mobile development company, thus I don't have any experience building apps like this, but the required functionality seems simple enough to at least look into what needs to be done.
Now, the problem is that I only know C/C++ and Python (moderate experience with the Qt framework) and am not really willing to learn both Java and Swift. I might consider learning Swift specifically for a simple project like this, seeing as iOS development is very much tied to their platform, but Java is out of the question. I've looked around and there seems to be a way to write both of them in Python and deploy to each platform, but something tells me it's not really worth the incredible amount of problems that could arise. I need your help with some advice on how to handle this project:
Can a cross-platform app be developed with python(or C/C++) and deployed to iOS and Android (thus halving the overall development time) whilst keeping a sufficiently tidy aspect and bluetooth communication?
If not, can I develop an Android app using C/C++ or Python without immense hurdles? I'd prefer Qt as i'm already familiar with the framework, but i suppose anything does it.
When developing an Android app under point 2, is it possible to see how the app looks like without installing it on the phone for every change in code?
Sorry if the post is too long, am really curios how difficult would a task like this be. I dont want to waste my time learning 2 new languages for just this project nor do i want to end up delaying the partner company with beginner problems caused by my scarce knowledge of a new language.
I really wouldn't suggest cross platform for this kind of project. The bluetooth stacks and APIs are going to be tremendously different, minimizing ability to code share. The UI stacks are completely different. Really using anything but the native tools on iOS can be particularly tricky. Python in particular is hard, because its not meant to interact with either platform. C would be easier, as both Java (via JNI) and Swift (via objective C to C bridges) can call C code. However the UI layers of the two are so different that it would only be useful for business logic, I would still recommend writing the UI in the native platforms.
If you were going to try and do cross platform, I'd suggest react native and javascript, merely because it's the most mature of the cross platform products. That said, their bluetooth stack is likely non-existant or poorly developed because its not the type of thing used by many of the type of apps that choose react native, so you'll likely have to dive into the deep end and learn how to make modules.
Given that this is going to be a company specific app not on an app store- do you actually need to support both OSes? Or can it be done on company devices of a single type? Pushing back on that product requirement might be your best bet.
maybe someone can help me. In near future i'm going to develop a business processes application like this :
https://play.google.com/store/apps/details?id=de.semture.cubetto
https://play.google.com/store/apps/details?id=com.showgen.processcraft
Now i would like to know if there are some already existing Frameworks or projects for that. I just want play arount with that subject to get a feeling how it works and what i have to do. I'm planing to make it available for Android (highest priority) and Web (Ios and windows arent so important right now).
So my first question is. Are there any Frameworks, libs, project availbe for something like that?
I've already searched for some frameworks but without no success...
And the other question would be what Tool or language should i use ?
Currently i'm working with Visual Studios 2015 Xamarin (xml & C# based language). We all know that i can make crossplattform apps with xamarin. But some minutes ago i've heard that there is a language/Framework named React.JS, that is also for android ios and web apps.
Now my second question:
which one should i work with ? Xamarin or React.Js ? Which one would better fit to my project and what are the main differences ?
I hope someone could answer that :)
Thanks in advance
This really comes down to personal preference and what you are trying to accomplish. If you are a C# developer, then Xamarin might be your best bet for android. With using ReactNative, it will be a little easier to create your web app from since it uses React. If you are trying to have a native feel for the android app, you will still have to know some core android development for both platforms. If you aren't super worried about the look, feel, and performance of it being native, then you can look into ionic which is built on top of Angular, and this you can use as a web application as well as build it for android.
I'm quite new to Android programming, I'm mainly a .NET guy =)
I've done several projects in Windows Phone, and I feel pretty comfortable with the MVVM pattern, C# and so on
However, I want to get into Android development, because it's an important platform
I wanted to know what's the best free approach where I can reuse some of my skills to reduce the learning curve
I've been investigating and I saw several options..
Xamarin seems like the best of everything, were you can use cross platform code using visual studio. This is great, but you have to pay to use it (even if I use the free version, I may want to publish some apps later, but don't want to spend that amount of money just to do a couple of apps on my own). So I'd say it's out of the queestion
I've seen something called MVVM Cross, however I don't know if that requires Xamarin or something else to work?
If I use pure android development frameworks, what's recommended? I've tried Android Studio, which is not that bad as eclipse, but compared to visual studio it has a long way to go. However it seems that the only way to use visual studio and android is to use xamarin..
Also, is there any approach to android programming that's the best? (as MVVM is the best for windows phone apps and the pattern embraced my microsoft)
Thanks!
I'm not sure it's a suitable question for SO...
Anyway, here is my opinion regarding the IDE.
Eclipse + ADT-plugin was the "official" IDE supported by Google. But Google decide to develop an other solution based on IntelliJ : Android-Studio.
So Eclipse is the legacy IDE and not the best choice if you are new to Android development.
On the other hand, Android-Studio is still in early development stage. I tried it a few weeks ago and in my opinion and for my use case (quite huge multi-module project) there was too many issues to work efficiently with it in it's current state.
Third option: IntelliJ-12 (free edition) is my current choice. It offers a smooth integration with android tools. It is stable. The UI is very similar to Android-Studio (and so switching to Android-Studio when it will be ready will be an easy step).
This is an other alternative for crossplatform app making:
www.phonegap.com
I don't know how relevant this is to your Question,
Would writing an Android stock portfolio display app in Clojure be a good learning exercise? I'm totally new to Clojure. My impression is that the functional programming style of Clojure might be better suited for other applications and platforms. For example, I can't find a Clojure based open source project to start from. It looks like I should call a Java charting library such as GraphView and look to port a Java open source stock graphing project?
It will certainly be a good learning experience, though it may not be a pleasant experience.
Clojure On android is not the most common learning path, though everyone makes their own way,
so I don't mean to discourage you :)
If your Totally new to Clojure a webapp is a very popular choice of first real project (and can be made to work nicely from android). Also check out 4clojure.com
Writing android apps in clojure isn't straightforward, although there are some people working on fixing that (GSOC I think), so you'd learn how hard it is :)
If you want to learn clojure, you better start with something which does not involve android.
If you want to learn android, you better start doing so in java.
I know C# rather well and just love Visual Studio as IDE. :) Yet now I want to start developing for android...
I found out about MonoDroid and wanted to ask if it has any downsides to it that would make Java more preferable, or should I uninstall Eclipse and dive straight into MonoDroid?
If I understand right, MonoDroid deploys/compiles native android applications and does not need any additional .net-like framework or anything?
Are there any significant limitations to what I can do with MonoDroid? For example, having the app run in the background or using some external .net libraries for image editing, etc. ?
I've been worrying about the same thing - productivity in C# instead of playing with an unfamiliar language, vs developing how the OS developers intended it to be.
Its easy to list pros vs cons -
pros (of monodroid, for C# developers)
familiar dev environment, can develop using Visual Studio
C# instead of Java
Reusable code assets - you can use a lot of code in your iphone project or Windows phone 7 project using monotouch and the WP7 SDK.
cons -
debugging could be difficult, due to lack of api documentation from Google. Will have to depend solely on monodroid documentation.
there could be a lag when it comes to latest cutting edge features - safe to assume that the monodroid team will require some time to wrap around the latest android features every time there is a new OS release
availability of libraries - I am not sure how you can use the open source libraries that would have evolved around the android platform, that could cut down on development time
Much of the documentation available is in Java: so if you run into difficulties with phone behavior when using MonoDroid you won't really find that much help or debugging information so you may want to stick with Eclipse.
There's a lot more than just a set of wrappers running under davlick, truth to be told, there is much more of a horizontal relationship between MonoDroid and Android;
When did using the same language as the OS developers become a big issue? There's lots of C++ programmers wondering how to use BSD or SVR5 and many C programmers who want to know what the heck to do on Windows++...
If you will write in c# anyway you will be have to wrap it into a Java code, so what's the point ? Also you may head with a very difficult issues while trying to understand the APIs who written for Java programming...
Here are some points that you can mull over:
Android applications are predominately written with Java. The Android SDK itself is natively written in Java.
Working in Mono may not provide all the functionality available in the Java SDK.
If you are a C# Developer you wont be able to find, in Java, some of the (cool) features available in C# (like Property Delegates etc).
Code written in .NET can be re-used for other environments - this may save a lot time that would have been spent learning a new language/environment (like Objective C), and coding in it.
.NET extends the Android development stack with it's existing libraries and API's.
I think both are good for certain reason. It will be very hard to say which one is preferable for Android development - in the end that is up to you too decide.
Also note that any release build using monodroid adds an additional 4mb to the apk filesize and increases app startup time with a few seconds.
For simple apps this can mean a 500-800% increase in filesize - whic is pretty bad in my book.