Developing Debate - Windows Mobile Development and Hacking General

Hello there, I've already posted this into another forum but I've been told that this is the place to put this question so here we go
Okay, so I'm starting to develop apps for my XDA2 and having come from a standard PC development background I was always told that software should uphold the basic principles of software quality IE reliability, reusability, maintenance and so on
I thought it would be an idea to here from people that develop for the mobile platform weather they feel it is possible to develop apps with these software engineering fundamentals.
Do we have to abandon object orientated programming, and go back to the procedures in order to develop?
Sorry if this is a, a silly debate, or b, been talked about before
lets have ya
And here is an excert from a reply from on off the board members
Rudegar:
Some people use gcc some people use win stk
where you have to make oo from the buttom if you want being that both are c++ it's by far impossible
and some program mfc and .net where oo is very much a part of the way things are don of cause using these tech's you can still program without following the guidelines of oo
Click to expand...
Click to collapse

Why would you abandon OOP?
In my opinion, OO makes the development of any application easier, not to mention the inevitable maintenance/bug fixing/etc. It allows for reusable code, which is a good thing.
I believe one should develop applications in a way independent of the target platform. The main difference is the GUI design, but I believe the GUI is not to be designed by the person who wrote the code.
I.e., the programmer designs and develops the code and functionality, and someone with good understanding of (G)UI/man-machine-interfacing should design the UI (which the programmer subsequently translates into the application)

Related

Materials For Learning Android Development?

Hey guys, I'd like to learn how to develop for the Android OS.
What materials would to recommend that start from a beginner level that fully explain every step? Examples and learning tasks would be excellent too.
Was shown Professional Android 2 Application Development by Reto Meier which I'm considering buying, but will it be too advanced to start with?
Thanks for any help.
Im looking for exactly the same thing, although i do know a bit of java, it would be nice too have some comprehensive guides.
video learnings
xtensivearts.com have posted 11 series on how to do development on android
and
follow this link for an hour tutorial on android development http://www.youtube.com/watch?v=j8XseabG5j0&feature=player_embedded
and u can find many more videos on related section
First you need to learn java
Here:
http://java.sun.com/docs/books/tutorial/getStarted/index.html
http://java.sun.com/docs/books/tutorial/java/index.html
http://java.sun.com/docs/books/tutorial/essential/index.html
http://java.sun.com/docs/books/tutorial/collections/index.html
http://java.sun.com/docs/books/tutorial/ui/index.html
http://java.sun.com/docs/books/tutorial/deployment/index.html
Depends on how beginner you are
What sort of programming experience do you have? Are you familiar with Java?
It's probably worth taking a look at some of the examples at the Dev Guide section of the Android Developer site (developer dot android dot com). If you're comfortable with that you should be fine to use Professional Android 2.
The book assumes you're a fairly experienced developer who is comfortable with Java (or at least experienced with similar OO languages), but that you have little to know knowledge of Android or mobile development.
houseonfire said:
First you need to learn java
Here:
http://java.sun.com/docs/books/tutorial/getStarted/index.html
http://java.sun.com/docs/books/tutorial/java/index.html
http://java.sun.com/docs/books/tutorial/essential/index.html
http://java.sun.com/docs/books/tutorial/collections/index.html
http://java.sun.com/docs/books/tutorial/ui/index.html
http://java.sun.com/docs/books/tutorial/deployment/index.html
Click to expand...
Click to collapse
You shouldn't include that first link in my opinion
About the Java Technology
Java technology is both a programming language and a platform.
The Java Programming Language
The Java programming language is a high-level language that can be characterized by all of the following buzzwords:
# Simple
# Architecture neutral
# Object oriented
# Portable
# Distributed
# High performance
# Multithreaded
# Robust
# Dynamic
# Secure
Click to expand...
Click to collapse
It's just sounds like marketing and someone stroking themselves.
[Second link]
http://java.sun.com/docs/books/tutorial/java/concepts/object.htm
I'm so ****ed... does anyone any where ever teach things in a manner that shows how things work, besides the bull****???
I'm never going to learn at this rate. Seems like their are peices of the puzzle people don't understand, which i fully understand and have no patience for.. and the stuff every one grabs onto easily is that stuff i can't find taught
[Next page]
http://java.sun.com/docs/books/tutorial/java/concepts/class.html
For some reason I doubt if I plug that code in its just going to flat out work...
Any tutorials that teach in a fashion that says... hey this is what you need to know..
There are variables, classes and this is what needs to go into place for them to work.
In the real world, you'll often find many individual objects all of the same kind. There may be thousands of other bicycles in existence, all of the same make and model. Each bicycle was built from the same set of blueprints and therefore contains the same components. In object-oriented terms, we say that your bicycle is an instance of the class of objects known as bicycles. A class is the blueprint from which individual objects are created.
Click to expand...
Click to collapse
Who CARES??
I want to see the tools and see what needs to be in place for them to work and how to work them.
This turtorial isn't for me
I need a no bull**** tutorial for newbies that flat out says these are the things you needto know how to utilize and this is how you utilize them, in explainable code that works, that isn't missing code someone assumes ill know to put there.
I'm coming to the conclusio that the most difficult part about developing is finding out where you need tolearn from and a good resource to teach you in your own learning style.
I'm a genius in an area everyone is retarded in and a retard in an area that makes the rest of the world seem to have genius about something im missing..
I'd recommend the book called Hello, Android.
I was thinking the same thing... i just can't afford to spend any more money on something that isn't going to teach me in my style...
I'm afraid something might be wrong with the area of my brain that handles communication, language and the english language because there seems to be something about specific things that i just can never grasp unless shown piece by piece a couple of times.
nobody seems serious about showing me anything eer.. they just want to tell me :/
[edit\
Starting here.. ill just tough through what I can but im certain ill be asking some basic stupid questions because there will be something ill be having trouble wraping my head around
2.1 The Big Picture
Let’s start by taking a look at the overall system architecture—the key
layers and components that make up the Android open source software
stack. In Figure 2.1, on the next page, you can see the “20,000-foot”
view of Android. Study it closely—there will be a test tomorrow.
Each layer uses the services provided by the layers below it. Starting
from the bottom, the following sections highlight the layers provided by
Android.
Click to expand...
Click to collapse
**** it, i just skipped to the creating menus section.... who in the world has time for people wanting to jolly themselves by talking a bunch of bull****?
I need to know "how" not "why"...damn it,
Bunnnyman said:
I'd recommend the book called Hello, Android.
Click to expand...
Click to collapse
The example code for enabling the menu button to pop up a menu appears to be incomplete.
I might be stupid but im not that stupid...

I want to be an Android developer when I grow up.

I want to focus on developing GUIs but I'm not sure where to start. I just read through a few pages of http://source.android.com/ to get more information and it was helpful but I'm still not sure what my skill set should be. I also went through Google's new App inventor and finished all the tutorials but it still seems like a toy.
I can: design interfaces, code javascript, implement XML (weak on C and Java but I get it), create anything using photoshop or any graphic application, color-coordinate, test and implement and write--I can write technical instructions fairly well.
So... that said, what's a typical Android designer's skill-set?
Thanks.
Patience, mellowness and a strong constitution!
The Android development platforms so far available are pretty poor if you're used to something like Visual Studio. The best option seems to be Eclipse running the Android ADT plugin. There is plenty of documentation about how to get it all up and running and it is quite easy to install and configure. The app inventor is a toy for non-developers to create simple applications and it works well for what it is but as soon as you want more complex UIs or more complex code, especially when it comes to using external libraries, you will need to get into Eclipse.
You have the right skills, in fact I would say UI and graphics design is the weakest area for many developers. It is for me. I can write beautiful functional code that does amazing things but my UIs suck unless they are simple. I always need to find someone who can help me with that. In my experience, and I have a lot of commercial code development experience, good UI design is a widely missing skill. It therefore pays well and is highly sought after. You might consider specialising in it?
Be careful going from C to Java. Java is still a pig of a language, do a little googling for "problems with Java" and be especially careful of the fact that Java passes everything by reference unless you use cloning. If you don't always write very loosely coupled methods and are good with encapsulation, this will bite you and often in very difficult to understand ways. I recommend running through each method with only this in mind before you consider the first version of the method complete.
My advice to you is to get Visual Studio Express (they're free), either VB or C#, it really doesn't matter, and become proficient with object oriented programming, proper error handling and scope of objects and variables. Do these things, and assuming that you have the right mindset to create good code, and you'll protect yourself from all the usual bugs that amateur developers introduce.
Then move back to Java. Java is a lot easier to be proficient in when moving from something like VB or C# because whilst frustrating, due to the things you'll miss, you will at least know rather than "not know what you don't know", if that makes sense.
If you are serious about doing this for a living, buy some books by Steve MacGuire.
"Writing Solid Code"
"Debugging the development process"
If every develope could do what these books teach, we would have a much more capable software world.
Good luck!
I have the same question? What do you think will be future programming? Developing web apps like Facebook or Android apps?
How is with work today?
I did banchelors from computer science, and want to try masters now, but I need to choose developing Androids apps or Webapps. I am pretty good at C#, JavaScript, XML.
There's a lot of milage in mobile apps, will be good for many years but there is no doubt that the future is web apps.
Excellent! What a great response. Source.android has a lot of information on what a developer should know but I still can't find information on Android GUI design--specifically. Any advice on this?
Thanks.
I think everyone should learn some c/c++ or other native language. Most will say im crazy for saying this but to appreciate what comes with the languages u mentioned above(which are all managed code) I think you should learn power and use behind native code.
c#, java, .net are all good places to start, i would not go with vb. If you choose to start with c/c++ you will be able to do any of the above easily. Tho others think its harder to learn...I say others bc i have always preferred c/c++ to the above.
Simonta... You rock!
Many Thanks.

Learning Android embedded development

Hi all,
I have a BSIT with emphasis in software engineering, and I'd like to break into the mobile devices embedded development field (specifically Android). I've never done anything with embedded engineering before. From what I can gather, it's best to learn first Linux embedded engineering and then apply that to Eclipse with a C/C++ CDT understanding, am I correct? As a new grad, I obviously feel that my education hasn't trained me for the real world, but that's not unheard of. The important thing is that I'm a quick learner with a knack for software and I.T.
What would you recommend I start with to self learn embedded engineering for Android mobile devices?
Huge thanks in advance.
Head first is probably the best way to learn. Go to android.com click on the developers link and read the step by step on setting up eclipse/sdk. Start writing apps and improve. anddev.org is a great place for tutorials and general help getting you started. Best of luck!
Sent from my Nexus S using Tapatalk
k4str0 said:
Head first is probably the best way to learn. Go to android.com click on the developers link and read the step by step on setting up eclipse/sdk. Start writing apps and improve. anddev.org is a great place for tutorials and general help getting you started. Best of luck!
Sent from my Nexus S using Tapatalk
Click to expand...
Click to collapse
Thanks for the tip, however it's not "regular" apps that I want to create. My goal is to equip myself with the knowledge needed to gain an entry or higher type position developing embedded software for microchips at a local company (who happens to be one of the largest developers of mobile processors, etc). I'm currently reading O'Reily's Building Embedded Linux Systems to gain a better understanding of the kernel, etc, but wanted to know if anybody knew of a book or resource that was more catered for Android.
howetechnical said:
Thanks for the tip, however it's not "regular" apps that I want to create. My goal is to equip myself with the knowledge needed to gain an entry or higher type position developing embedded software for microchips at a local company (who happens to be one of the largest developers of mobile processors, etc). I'm currently reading O'Reily's Building Embedded Linux Systems to gain a better understanding of the kernel, etc, but wanted to know if anybody knew of a book or resource that was more catered for Android.
Click to expand...
Click to collapse
You are talking about embedded software development. What is your definition of 'embedded software'? If it is about small microcontrollers learning android might not useful. You should be able to read and interpret printed circuit board drawings and hardware datasheets to be able to understand how to access the hardware from software. You must also be able to write device drivers to interface with that hardware. If you want to create applications for embedded system you must be able to program using relatively sparse resources. Learning all this from scratch is not easy.
doctormetal said:
You are talking about embedded software development. What is your definition of 'embedded software'? If it is about small microcontrollers learning android might not useful. You should be able to read and interpret printed circuit board drawings and hardware datasheets to be able to understand how to access the hardware from software. You must also be able to write device drivers to interface with that hardware. If you want to create applications for embedded system you must be able to program using relatively sparse resources. Learning all this from scratch is not easy.
Click to expand...
Click to collapse
I believe that is what I'm trying to do. The position(s) I'm going for are developing software for mobile chipsets (CDMA, etc) to improve power performance, add functionality, etc. I do understand that it will not be an easy task, which is part of the reason I want to do it. There won't be a dime a dozen going for the position, like there are in typical software engineering jobs. Plus, I could really see myself enjoying it since I'm passionate about mobile technology and am an extremely quick learner.
I think I'm on the right track at least with reading a couple of books, one being the highest recommended embedded linux systems book out there (by O'Reily), and the other being catered for embedded linux engineering using Eclipse and the C/C++CDT.

C# programming - anyone use Xamarin?

Has anyone used Xamarin to build their android apps? I have been programming using C# for sometime now but have never used it to build anything for android.
They have tons of free libraries, but as for licensing, I am skeptical in purchasing. Anyone like or dislike Xamarin? If you do or do not, can you explain why? Thanks a bundle!
Haven't used it but you have to think whether it's worth the price. The advantage is you can write in C# and share code between Android/iOS. However the UI is still platform-specific, so it has to be implemented twice. A free alternative is to use C++ for shared code (Android: via NDK, iOS: compiles directly), but that definitely needs more initial setup effort than buying Xamarin's product.
Here is an informed opinion
There is a gaming studio that used Xamarin to port their WP stuff to Android and iOS, and they're quite happy with how it turned out.
Do a search for "FourBros Studios, Cross-Platform Game Development with Xamarin and MonoGame". I can't post a direct link because of forum rules here.
Of course games are entirely different beasts than regular apps (for example, UI-wise), so not everything may apply to your situation.
I've plaid with Xamarin... and its a good system.. but Is it worth $300 to not learn java?
Cross platform development tools have their place, but IMHO unless you have a large project and NEED a cross platform development tool you are hurting yourself by not going native.
Just my .000002c
Java is so similar to C# I would think you'd be fine just going native - in terms of syntax they're virtually identical. I do kind of miss the var keyword though lol
I agree with LostByte - there's no real point to going cross platform unless you really need it. Don't stay with C# just because it's what you know! Use what's most appropriate for the app

[Q] Which platform and what implementation method to choose

Hi,
New here and generally new to the mobile application development scene. I just begun my thesis for my last year and one of its components is to develop a mobile version of the "program" that we're working on. Since I have no idea where to start and what platform/tools/method to use I'm asking here for advice. The teacher gave me some papers to study on and I must say I'm quite confused.
First let me give you a fast explanation of what I'm trying to achieve. What I'm making is an application for online voting on the decisions the student council takes. What this means is that instead of having to meet up every other week the members of the council will be able to post their ideas and proposals online, people will be able to ask questions and then they will be able to vote for whomever they want. This will be accessible from both a PC and a mobile device. One of the most important factors here is the security of the application/program since it is paramount that no votes are lost, counterfeited, deleted, changed or w/e. After that we're also gonna need database support since everyone will have their personal account and other than that it's gonna be somewhat like a small forum.
So the idea at first was to develop this in applet form (not sure if my terminology is correct on some stuff please correct me if i'm wrong) and embed it into a web site, accessible by everyone. However the professor that's overviewing the project also asked to make it so that people can use this from their mobile devices, so here we are. I've read on the different implementation methods (like native and web based) etc. and I also read up on cross platform development tools like phonegap and titanium and that's where the confusion starts.
First of all we want this to be accessible by almost everyone regardless if they're using iOS, Android, Symbian etc. If that's impossible at least iOS and Android is mandatory. Starting from there, native development tools are probably a no go since they require different versions of the program for each OS and possible device type. On the other hand the cross platform approach apparently doesn't offer good security (not exactly sure where that weakness comes from) and that is something we're trying to avoid. However I'm not sure if I've understood this correctly and I might be misinterpreting. Anyway, concluding it seemed to me that developing this as a web-application seems to be the best decision. If I go that route what exactly am I looking to do? Where do I start? Do i just make stuff in java and make a webpage via HTML 5 and add stuff in? I'll look online for tutorials on this but I'm not exactly sure where to start so I'm asking here.
Thanks in advance!
Unless there's a specific reason for wanting mobile apps then I'd recommend doing this as a website, making it responsive so that it's mobile friendly. That way it will play with all the mobile platforms, and all PC based OSs, with just 1 code base. Then the only choice you have to make is the server side code, which is what would handle all the database access and security etc.. The most obvious choices for that are PHP or C#/VB.Net. Both the platform and your own preference are what should make that decision.
Either way, whether you make a mobile app or a responsive website, you'll still need a server to do the data access and security for you. There's tons of good resources and I couldn't recommend Stack Overflow any higher than I do. Just make sure, if you ask any questions on there, that you know how to ask a good question, or you'll get downvoted and the question closed!
I hope this helps - good luck
If you want security in your mobile app as the most prominent feature, you'd have to rely on Native codes(Java/Objective-C). Cross-platform tools are no good when security does matters. Also it normally takes much less time to create some app in Native code than to create it in cross-platform tools, since most of the UI are at your disposal. Acc. to my personal experience cross-platform thing is good if you already have a previous source code available and are trying to port it on mobile.(Such as having a HTML website and trying to port it on phonegap will make sense)
That's just my opinion, other people may disagree with this.
Making a mobile friendly website is another choice as explained in previous post.
Archer said:
Unless there's a specific .... or C#/VB.Net. Both the platform and your own preference are what should make that decision.
Click to expand...
Click to collapse
Might elaborating a bit on why use C#? Is it better when it comes to coding server side stuff? We were discussing what language to use with my professor and since he teaches OOP via Java he favors it a lot. However if it has drawbacks compared to the .NET stuff I'd like to know so that I can discuss it with him.
Also this project is part of a thesis and I'm pretty sure the professor wants to add the mobile application part just for the research and development process. It seemed to me that it was redundant too but I'm gonna guess he won't take no as an answer... Gonna have to discuss it more
Thanks for the replies so far!
jokeaccount said:
Might elaborating a bit on why use C#? Is it better when it comes to coding server side stuff? We were discussing what language to use with my professor and since he teaches OOP via Java he favors it a lot. However if it has drawbacks compared to the .NET stuff I'd like to know so that I can discuss it with him.
Also this project is part of a thesis and I'm pretty sure the professor wants to add the mobile application part just for the research and development process. It seemed to me that it was redundant too but I'm gonna guess he won't take no as an answer... Gonna have to discuss it more
Thanks for the replies so far!
Click to expand...
Click to collapse
I did think it may be a case of him wanting you to do some mobile work, as well as web work. It does make sense if it's meant to be for the purpose of learning and experience.
I mentioned C# purely as an example of a server-side language, like PHP. You should really look at using whatever you're most comfortable and/or familiar with. I do use C# on a daily basis as a server-side language and it's very simple to write methods that take post data and return whatever is required (usually a JSON response), whether it be a web service with exposed public functions, or a generic handler. There's tons and tons of ways of doing it so you need to really decide what suits you and the environment you'll be working in.
I'm not familiar with using Java as a server language so I can't comment on that.

Categories

Resources