Forthcoming Native Development Kit - G1 Android Development

A week ago Brian Swetland (of the Android team) posted to the g1-hackers mailing list this juicy little nugget:
It is possible to bundle native shared libs in apks, and specific details
about how to do this in a least-likely-to-break-later way will be documented
in the forthcoming Native Development Kit (NDK).
Work is on-going to improve the platform APIs and provide more and better
access to the OS and hardware (bluetooth, improved audio, etc, etc). Future
updates will increase the surface area of the APIs.
Click to expand...
Click to collapse
Trying to get some confirmation and additional details, I checked in with android-framework and received this reply from Dave Sparks:
Yes, we're planning a native SDK. There is no official release date
yet. The initial release will probably be very limited in scope, just
enough to add some JNI helpers. As we lock down native API's, more
functionality will be added.
Click to expand...
Click to collapse
"JNI helpers" sounds a bit underwhelming, like .so libraries for optimizing inner-loops. However, this looks like a good first step toward getting applications with performance-bound modules to shine on Android. Personally I'm crossing my fingers for this to be what the Mozilla Fennec team to invest the time in porting for Android.

I'd rather see C#/.NET bindings for Android. Java blows. When I have time, I'm going to look into cross compiling mono for ARM (it's been done for ARM PCs, but not for Android yet).

Koush said:
I'd rather see C#/.NET bindings for Android. Java blows. When I have time, I'm going to look into cross compiling mono for ARM (it's been done for ARM PCs, but not for Android yet).
Click to expand...
Click to collapse
At first I thought you meant to cross-compile C# to Java bytecode to run in Dalvik. Didn't seem to make much sense since you wouldn't benefit from the .NET framework itself at all.
As for getting Mono natively on ARM, would that work for a non-root G1? If not it would be of little help for developing applications for the general non-rooted public.

Related

Advice on a new hobbyist phone?

Hello XDA-dev community
For the past couple of months i've been thinking about getting a Pocket PC for a new phone instead of a Symbian Nokia [ah my old 6630, may she rest in pieces...]. Anywho, I think i've decided on the HTC Touch Pro / Raphael. At ~AU$600 it's the highest I was trying not to pay (i'm not rich), however it seems to be a pretty powerful and full featured device.
I do have a few questions I hope some of the kind experts/veterans here might be able to answer for me though
1) I written a few things in Java and PHP and other even-more-basic languages, but am interested in learning a new language with hopes to create software for both Windows PC and Windows Mobile. What choices do we as end-users have here? .NET is an obvious one [I own a copy of Visual Studio 2008 Pro], but are there any other languages of note?
2) From the Raphael specs on the Wiki here, it lists it as an ARMv6 architecture-based processor. This comes from the ARM11 family, which is the successor (I think) to the XScale family (ARMv5TE). Are these ARMv6 processors backwards compatible with 'XScale accelerated' binary builds of software? I.E., a PPC application has two versions for download/purchase - a 'Generic ARM Release' and an 'XScale optimized release' - would the Raphael ARMv6-based device be compatible with these XScale-optimized binaries? Or do ARM do things differently and ARMv6 is not backwards compatible?
3) Has anybody ever heard any rumors or made any talks about porting Android to the Raphael? Just curious. I'd prefer a Windows Mobile device (not a Linux user) but I can see all this OpenSource stuff does have a future... EDIT: Nevermind, I found the page at http://wiki.xda-developers.com/index.php?pagename=RaphaelLinux
4) How does the device perform with 3D-heavy applications? Does it make use of any sort of acceleration (I assume no, not like the iPhone for example).
OK thats all... thanks a lot for your replies, if there's anything else you think is worth mentioning to a soon-to-be-first-time owner of a Windows Mobile device, please do say so Cheers.
In reply to 2) VS 2005 Pro onwards targets code at ARMv4I, basically generic ARM processors also capable of running the Thumb (16 bit) instruction set. Thumb represents a limited set of ARM 32 bit instructions coded as 16 bit instructions. It allows much smaller code sections, but with megabytes of memory available these days who cares? If you code in .NET none of this matters anyway, as the code is created as IL byte code, the .NET runtime sorts it out.
If you code in Embedded Visual C++ 3 or 4 the target chipset is ARMv4. When you use the IDE to create the code on a WinMo 5/6 machine it complains that the target machine cannot run the code. It's lying, what it really means is it does not recognize the processor class. As it is ARM 32bit code only it will work.
It is not worth targetting the code for a specific, (read non generic), ARM chipset. You are just making a rod for your own back when it won't work on something else.
Thanks for the reply stephj. There will indeed be a bit of research for me to do as to which language and/or IDE I decide to choose to train myself in then it seems. Specifically though...
stephj said:
It is not worth targetting the code for a specific, (read non generic), ARM chipset. You are just making a rod for your own back when it won't work on something else.
Click to expand...
Click to collapse
...what I was referring to is - I've seen some freeware PPC software, mainly emulators, that have two versions - a 'generic ARM' one and an 'XScale Compatible' alternative version. On the ARMv6 based phones, assuming the software was released back when XScale was the newest ARM family, would both work on the Raphael? If so, which would be faster?
Obviously though, for a developer, creating the most compatible/generic code to work on the widest range of devices is the main focus - later possibly implementing optimiziations or hacks that are specific to a certain platform - but I'm just wondering if these already built, older 'specifically optimized' builds are compatible with the succeeded chipsets.
P.S. Do you know where I could find some resources on choosing between Visual C++ or .NET? I.e. pros and cons of each?
Thanks a lot!
jonusc said:
Hello XDA-dev community
...
1) I written a few things in Java and PHP and other even-more-basic languages, but am interested in learning a new language with hopes to create software for both Windows PC and Windows Mobile. What choices do we as end-users have here? .NET is an obvious one [I own a copy of Visual Studio 2008 Pro], but are there any other languages of note?
...
Click to expand...
Click to collapse
Since you have VS2008Pro, C++/win32 if you want fast and lightweight applications
"P.S. Do you know where I could find some resources on choosing between Visual C++ or .NET? I.e. pros and cons of each?"
.net pros
easy to get something running fast even if one is a n00b
got a lot of components meaning less time to develop
can be programmed with c# and c++ and even eeeeewww basic
.net con
slow as in sloooooowww
require one to install the framework if the app
require a newer version then what ones phone came with and the framework is pretty big
and people don't seem to have success with installing it on sd cards
compact framework is also limited in features vs. .net on pc so apps don't just port always
limited in features unless one do unmanaged code
c++ pro
fast
require no extre stuff
small in size and again fast
have access to every feature in the phone
c++ con
one have to do everything and that mean msg loop
and a lot of leg work just to get a dialog with a button
steaper learning curve
more risks of mem leaking
harder to debug as stacktrace is not just there
like on .net
Very nice, thanks for the replies guys
So from what I can gather, a basic .NET application would be ideal for RAD (quick and dirty), particularly GUI-centric applications, but tend to be bulky; whereas C(++) is a more native / low-level language and is thus faster, but very hardcore as most functions need to be done from scratch.
I should have assumed it's pretty much the same as a Windows PC
What about C++ versus C#? And does VS2008 have a decent API/IDE set for mobile development i.e. does it have many libraries for C(++/#) already included or are more easily available?
Thanks again for the answers guys... it's obvious i'm keen to learn about it, but i'm a little worried that someone like me going from stuff like PHP and VB to C might be biting off more than I could chew....? Ah well if .NET is gonna cause problems down the line, then I guess I have no choice
Don't bother with the C++ version of .NET, the casts that you have to make, to get it to work makes the code very hard to read, and besides it only compiles to the IL level anyway, it's just not worth the effort.
So, under .NET use C#, or VB if you prefer, there is not much difference between them, but in my opinion, C# is a bit more elegant.
Under C++ you have the choices of WIN32, ATL (Active Template Library), or MFC (Microsoft Foundation Classes), programming models.
WIN32 is the simplist but the hardest to code, the other two add progressively more objects to make things easier, but you need to distribute the run time libraries with them. A simple WIN32 app can be distributed as a single .EXE if the DLLs it already uses are part of the CE/PPC operating system.
PS When it comes to running code compiled for a specific ARM class on your device, just give it a go. If the CPU hits an instruction it can't run, it will throw an exception and stop anyway.
stephj said:
Don't bother with the C++ version of .NET, the casts that you have to make, to get it to work makes the code very hard to read, and besides it only compiles to the IL level anyway, it's just not worth the effort.
Click to expand...
Click to collapse
Fair enough. So C++ in VS2008 is a bad idea
stephj said:
So, under .NET use C#, or VB if you prefer, there is not much difference between them, but in my opinion, C# is a bit more elegant.
Click to expand...
Click to collapse
I thought VB was dead? Wasn't VB6 the last one they made? Or is VB just what they call generic/common .NET Framework apps? Anyway, yeah i've read good things about C#, especially compared to .NET in general. EDIT: Oh, .NET is not the program language but VB is *facepalm* I get it, nevermind
stephj said:
Under C++ you have the choices of WIN32, ATL (Active Template Library), or MFC (Microsoft Foundation Classes), programming models.
WIN32 is the simplist but the hardest to code, the other two add progressively more objects to make things easier, but you need to distribute the run time libraries with them. A simple WIN32 app can be distributed as a single .EXE if the DLLs it already uses are part of the CE/PPC operating system.
Click to expand...
Click to collapse
Ah, same as a Windows PC. That makes sense.
Thanks for the answers I think I might take a look at C sharp.
C++ in VS2008 is fine, use the smart device WIN32 ,ATL, or MFC models take your pick.
Sorry my mistake, the C++ .NET version is not available for smart devices. Its the three models above only.
After additional research, I don't really want to be tied down with the proprietary C# system. So is VS2008 a decent IDE for WIN32 C++ development on Windows Mobile? Or are there better alternatives?
VS 2005/2008 Pro takes some beating. After you have installed about 3 CD's worth of MSDN libraries all the help is on tap. The IDE also looks at MSDN online if you have an internet connection to see if there are any forums on the same topic you are inquiring about.
The code is generated as ARMv4I and can be tested/debugged on the images provided by the WinMo 5 or 6 SDK. The emulators are that good you only put it on your phone when you have tested it to death on the emulator.
EVC 3 and 4 use a previous method where the emulators run a x86 version of the code. I still use EVC 4 for code that has to run on anything, Windows Mobile 2003 for example.
It's all pretty proprietory, when it comes down to it, but I guess we're stuck with it.

Android Native Development Kit RELEASED

Check it out here:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Yes, I heard they were making this actually happen...
As for building Apps in C/C++ Native..
Pros:
-More Stable
-More Unique (no Android UI features unless integrated)
-More Sophisticated
-Will open to a more known (learned) framework, by this I mean if you know C/C++ and already have apps built for other mobile devices it should be much easier to port it over to Android (look out for the flood Android Market)
-Other open sourced / commercial apps will be more easily ported...some ideas?...START A THREAD!!!...but just for the record...Apache...FireFox...just about anything that has an open source that relies on C programming...crap you can even extend this by adding Ruby, Perl...etc.
-Remember, this is a Development Kit...it just adds tools to the 1.5 SDK that allow you to create C based applications and build them in the android environment. All your apps should still work going back to RC-30 or even further back...depends on the kernel support I would guess.
Cons:
Much Larger Apps (file size)
Need to learn how the Linux Kernel works (for developers)
Other:
Load times? Ok, so for example if you have one app...say...TuneWiki...just an example of a popular resource hog...if it were to be redeveloped under C++ and optimized for the Android Modified Linux Kernel...your resources could easily be cut in half since you are not relying on the Dalvik VM.
SO...outcome?
Better for all, as long as you know what you are doing.
We should also see a huge upswing in crapware on the market from student programmers doing C++ projects on an easy open-sourced mobile platform (that has a public SDK).
So you'll see a lot of "Hello World" type apps that will have next to no function...have fun with those...................
From the Official NDK User Forum: Link
acidnine
Very nice post. Thanks for the insight.
acidnine said:
Pros:
-More Stable
Click to expand...
Click to collapse
The opposite actually. Poorly written interpreted code breaks elegantly in a vm. Poorly written compiled code can take a whole system down.
-More Unique (no Android UI features unless integrated)
Click to expand...
Click to collapse
You can't integrate any Android frameworks (UIs, etc) period.
-More Sophisticated
Click to expand...
Click to collapse
I've seen some very sophisticated Java and some **** C/C++. Don't assume that higher level programming languages are necessarily less sophisticated than lower level ones.
-Will open to a more known (learned) framework, by this I mean if you know C/C++ and already have apps built for other mobile devices it should be much easier to port it over to Android (look out for the flood Android Market)
Click to expand...
Click to collapse
The NDK will enable some applications that couldn't previously have been done in the Dalvik vm for performance issues, but it isn't going to be a "flood". Fact of the matter is a lot of developers who have needed native performance or didn't want to rewrite a C/C++ codebase have deployed native code already.
but just for the record...Apache...FireFox...just about anything that has an open source that relies on C programming...crap you can even extend this by adding Ruby, Perl...etc.
Click to expand...
Click to collapse
FF is written in C++... [edit: I should also point out that the NDK provides for native code support in the form of libraries (mainly as a helper for computation-intensive functions). Nothing in the way of window managers or other UI is addressed, meaning for the majority of "visible" C/C++ apps the developer would have to rewrite a significant portion in Java still.]
Cons:
Much Larger Apps (file size)
Need to learn how the Linux Kernel works (for developers)
Click to expand...
Click to collapse
I don't know what to say other than these two statements are generally incorrect. There are two main cons to using NDK as opposed to the standard SDK, and they are 1) Reduced (or no) compatibility on future Android devices 2) Significantly reduced ease of debugging.
very interesting...subscribed
jashsu said:
You can't integrate any Android frameworks (UIs, etc) period.
Click to expand...
Click to collapse
Not true. This isn't full native code apps, this is the ability to call native libraries in a davlik app.
From the actual NDK page ...
The NDK provides:
A set of tools and build files used to generate native code libraries from C and C++ sources
A way to embed the corresponding native libraries into application package files (.apks) that can be deployed on Android devices
A set of native system headers and libraries that will be supported in all future versions of the Android platform, starting from Android 1.5
Documentation, samples, and tutorials
Please note that the NDK does not enable you to develop native-only applications. Android's primary runtime remains the Dalvik virtual machine.
Click to expand...
Click to collapse
.milFox said:
Not true. This isn't full native code apps, this is the ability to call native libraries in a davlik app.
From the actual NDK page ...
Click to expand...
Click to collapse
Correct. As I pointed out above, the NDK actually is just a framework for building native libraries that standard dalvik apps then call. However, my point was that the libraries themselves (the products of the NDK) cannot access or invoke the Android framework. There is a pointed distinction.
At least this could mean the beginning of some video codec porting to the G1's hardware. Be nice to be able to actually make use of my video collection without having to reencode everything.
neonrush said:
At least this could mean the beginning of some video codec porting to the G1's hardware. Be nice to be able to actually make use of my video collection without having to reencode everything.
Click to expand...
Click to collapse
That is probably what the NDK is perfect for. It's CPU intensive stuff, already written in platform independent C/C++ that can then be called from within a nice Androidy UI.
So they basically added JNI to the SDK...
http://en.wikipedia.org/wiki/Java_Native_Interface

Mono for Android

Are there any developers using Mono for development? Looking for some feedback on it...
Galaxy Red - DJ05 - Voodoo5 using XDA app
Mono with JIT enabled won't work on the Fascinate (or any Galaxy S device) until 2.2 is rolled out. Of particular note, this causes many problems with games authored in Unity3D. Cite: h t t p :// forum.unity3d.com/threads/62410-Galuxy-S-support#post409742
If I was drinking something I would have spit it out when I read the title of this post.
Sent from my SCH-I500 using XDA App
I wonder if some of the new Kernels that are being created are having the same issue ... but Unity isn't using Mono from my quick skim of the site. And from my reading, mono has its own JIT runtime. It would be interesting to know if anyone has used it yet.
http://monodroid.net
Uhhh...no
Lol...the CORRECT answer is why the f*ck would you want to? C# is M$ lame attempt to make a proprietary language. Why did the world need C# when Java is a perfectly good language? It didn't. .Net is garbage unless you want to write windows software, but that's lame....just sayin .
jfelectron said:
.Net is garbage unless you want to write windows software
Click to expand...
Click to collapse
Wait, you mean it's only useful for the exact thing it's ****ing intended for? Shocking.
jfelectron said:
Lol...the CORRECT answer is why the f*ck would you want to? C# is M$ lame attempt to make a proprietary language. Why did the world need C# when Java is a perfectly good language? It didn't. .Net is garbage unless you want to write windows software, but that's lame....just sayin .
Click to expand...
Click to collapse
There is just so much that can be gleaned from this post...
1) Obviously you've never actually tried developing in C#, because it's a complete pleasure to work with. Once you've used Visual Studio, it literally pains you to use anything else, because no other IDE comes close. I've used them all.
2) The entire point of this post is that .NET is not useless; The specification for .NET is completely open. And .NET is apparently good enough that people devoted their free time to develop Mono, thus enabling .NET development for Linux platforms. There's also Silverlight and ASP.NET which enable development of Web applications.
3) M$? Seriously? I remember back when the internet was invented and people thought that was funny. Now it's just kind of ignorant.
4) Refusing to open yourself up to multiple development technologies is a great way to find yourself irrelevant in a short amount of time.
5) Obvious troll is obvious. Sorry for feeding him.
bmxdad said:
I wonder if some of the new Kernels that are being created are having the same issue ... but Unity isn't using Mono from my quick skim of the site. And from my reading, mono has its own JIT runtime. It would be interesting to know if anyone has used it yet.
Click to expand...
Click to collapse
As a Unity3D dev, I can assure you that Unity3D is indeed powered by Mono. (With all the C# code I write every day it better be! )
That said: the 2.1-based kernels that are rolling out for the Fascinate do indeed suffer from this effect. In fact, Kaoscinate is unable to use Android's built in JIT interpreter due to this very effect. I was trying briefly to help him trace down the problem, but didn't have enough time to contribute. Maybe after our next game ships.
konistehrad , thanks for the reply.
I'm one of those stupid C# / Asp.Net developers, so its nice to know I'm not alone.
To jfelectron ... I wonder what the new windows phone is using .. O yea ... .Net and C# .... Go figure ...
bmxdad said:
I wonder if some of the new Kernels that are being created are having the same issue ... but Unity isn't using Mono from my quick skim of the site. And from my reading, mono has its own JIT runtime. It would be interesting to know if anyone has used it yet.
http://monodroid.net
Click to expand...
Click to collapse
In addition to Monodroid(which will require you pay a fairly hefty license fee for an independent developer) there is also Koush working on his own free open source port. This can be found here: http://www.koushikdutta.com/search/label/Mono
I'm not sure what all works in either implementation but I don't think either of them is ready for prime time yet.
I'll be in heaven when it is as I currently develop in VB.Net and swapping to eclipse is a nightmare, not having the .net framework is horrible as well because now I have to reinvent the wheel for dozens of objects.
Haha, I see the C# harpies have descended to inform us how wonderful their language is. It's not a question of how nice it is or isn't to use, it's a question of why fragment the development landscape with ANOTHER systems programming language that is a pretty blatant copy of Java. I don't think C# is fundamentally better than Java, so it just fragments minds away from common development goals and creates two independent efforts. This hurts everyone. It's fine to take an existing Mono/C# codebase and want to run it on Android. I just don't see why you would want to use something like MonoDroid to develop from scratch. The best apps will ALWAYS use the native APIs, there is just no reasonable way a secondary set of APIs that wrap native APIs will provide the same experience. The Evernote people were just talking about this, they have development teams for each platform, they don't look for write once run everywhere solutions because at the end of the day these deliver subpar experiences. If you don't know Java and Android APIs then learn them. Same for iOS. I'd do the same for WP7...that is if I wanted to work for a I decide the UI for you overlord.
I'm pretty sure that everyone participating constructively in this thread has mentioned that they're currently a .NET developer who has code written in VB/C#. It surprises me how much flak this thread is attracting when we're discussing tools and libraries that allow us to effectively and comfortably develop more software for the Android platform.
I develop mostly in Java, but language wise C# is way better. Java 7 still isn't getting lambdas, an when it does it's going to be really kludgy. Java language development has kind of died. Scala is pretty cool though. And Visual Studio is significantly better than eclipse, although IDEA is quite good too. I do like eclipse but it's just not as nice to work with and slower.
Yes ... C# is a redo of Java, kinda, but they moved it beyond what the Java was ... ***** about about MS all you want, they do have some good stuff. As for the API's, they're doors for us to use ... it all gets crunched down to 1's and 0's, so who cares how it gets there. Simplistic I know, but I'm sure you get what I'm saying.
They're already porting .net to the iPhone, so I was just wondering if anyone was interested ... didn't know I would touch a few nerves
jfelectron said:
Haha, I see the C# harpies have descended to inform us how wonderful their language is. It's not a question of how nice it is or isn't to use, it's a question of why fragment the development landscape with ANOTHER systems programming language that is a pretty blatant copy of Java. I don't think C# is fundamentally better than Java, so it just fragments minds away from common development goals and creates two independent efforts. This hurts everyone. It's fine to take an existing Mono/C# codebase and want to run it on Android. I just don't see why you would want to use something like MonoDroid to develop from scratch. The best apps will ALWAYS use the native APIs, there is just no reasonable way a secondary set of APIs that wrap native APIs will provide the same experience. The Evernote people were just talking about this, they have development teams for each platform, they don't look for write once run everywhere solutions because at the end of the day these deliver subpar experiences. If you don't know Java and Android APIs then learn them. Same for iOS. I'd do the same for WP7...that is if I wanted to work for a I decide the UI for you overlord.
Click to expand...
Click to collapse
By your logic why did anyone ever move away from programming in machine code? It was the purest and fastest executing code ever!
jfelectron said:
Haha, I see the C# harpies have descended to inform us how wonderful their language is. It's not a question of how nice it is or isn't to use, it's a question of why fragment the development landscape with ANOTHER systems programming language that is a pretty blatant copy of Java. I don't think C# is fundamentally better than Java, so it just fragments minds
Click to expand...
Click to collapse
Well, I didn't like J++. I felt the same way about C# until I did a test project with SharpDevelop. It really is a pleasure to use, most especially when coming from Java. Both languages also read very similarly and are easy to bounce between. In terms of fragmentation, it tends to come with the territory and might as well be accepted.
Learning something new isn't necessarily evil.
MS does decent development tools. CLR is open and in many aspects better than JVM. C# as language progressing way faster than java and puts it to shame way to often.
Read here from Koush. I guess that name rings a bell?
So, why not? Competition is great!
Unity and Mono
As a long time .Net developer I was drawn to Unity with significant suspicion of the Mono framework, I had always assumed that mono was going to be a slower, poor cousin of the official framework, but for my needs it has proved problem free on a range of Android devices. I chose Unity and Mono as a framework for game dev on android because I had a significant amount of code in c# from Windows Mobile 6 dev back in the day, and Unity had the 3d rendering capabilities I needed.
I'm using Unity game engine that uses Mono. C# is a great language that addresses many shortcomings in C++ and Java. However it is not possible to do everything in the mono-runtime on Android. C# to Java bridge is pain in the ass to implement.
Lets be realistic...
First came C and then that evolved to C++. Today the vast majority of operating systems are written in either C or C++. I have NO idea what Object C is (iOS) but I am sure it is evolved from one of these as well.
Java was an attempt to produce a machine generic programming language where the code runs on any machine. This language was based on C (C++?) and as such is very similar to C(c++) in many areas. However to reach this generic level all compiled code is compiled to a machine independent code and run on an interpreter. This code then is slightly slower than if the same program was written in C or C++. But can be run on MANY machines without porting which is not the case with C or C++.
C# was intended to be an extension of C++. After MS's failed attempt at J they put their energy behind C#. C# has now become a very viable C++ replacement on MS machines to a point it doesn't make much sense to write in anything else unless you are writing system level code for which C++ or C makes sense. Somewhere along the failure with MS's attempt at a Java clone they decided to make .NET a "standard" library which allowed Mono to become reality. C# has evolved over time to incorporate many of the great ideas that Java has included but have come up with many new ideas of their own. Realistically it comes down to which do you feel more comfortable programming in. Java or C#. C# with it's .Net libraries can be much easier to write for than Java simply because of the Libraries available.
On another note, I saw a product recently that looks very promising. dot42 is a product that appears to be looking to make a compiled C# program for Android. This by passes the need for the code interpreter and could potentially be as fast as C++ or C code for running on Android.

A C# Based Android

There has been talk of Android shifting to C#, mainly due the Google-Oracle lawsuits over the use of Java. While there rumors haven't been confirmed, there is mono-based C# for Android at http://xamarin.com/monoforandroid but what interests me more is what's on this link: http://hexus.net/mobile/news/android/38789-google-android-ported-java-c-blazing/
At the bottom, of the link, they point to an ICS build of Android based on C#. Though the build isn't yet complete, the second link I've posted contains a comparison from which it can been that C# trumps java... Badly!
The C# build can be found at https://github.com/xamarin/XobotOS
It is called the XobotOS. Has anyone tried this? This is supposed to be a working build.
Here is a snippet of their description:
XobotOS project
===============
XobotOS is a Xamarin research project that explored porting Android
4.0 from Java/Dalvik to C# to explore the performance and memory
footprint benefits of C#.
XobotOS is a semi-automated port of the Android 4.0 source code from
Java to C#. The automated parts were ported using an improved version
of Sharpen that can compile more advanced Java constructs and supports
generics. Most of the manual bits of code fall in two categories (a)
code to integrate with the host operating system and (b) replace the
Java JNI code used to call into C, with the ECMA CLI P/Invoke
functionality.
Click to expand...
Click to collapse
switch
thatd take a lot of developing to switch after so much work has been done in java!
I wonder if is a good idea to move from an open to a closed and corporate environment. How about compatilibity and scalability?.
C#, though made by Microsoft, is supposed to be an open specification. And the mono framework provides an open source platform for C#.
Check this out from Slashgear:
The key difference between Java and the C# and .NET runtime is that the latter two are covered by ISO standards. That means there are legally binding commitments by Microsoft that prevent the software giant from suing implementers for patent infringement.
Click to expand...
Click to collapse
This looks very good: http://xamarin.com/monoforandroid
It's mono for Android. It runs on the current Android versions but it is based on C#. Though this is slightly different from a C# Android, this can provide a unified code base for Android, iPhone and WP7. However, this project isn't free except for evaluation.
I'm wondering if any dev's could try out this port on one of their devices.
yea, I remember mono a how it failed on linux... anyway looks interesting but Im sure is not promising
cpl.Bower said:
yea, I remember mono a how it failed on linux... anyway looks interesting but Im sure is not promising
Click to expand...
Click to collapse
I am no programmer, but I'm glad it failed. I can't imagine Google officially going to port the whole Android to C# and .NET. If they were going to do that, might as well transfer all their Android IP to Microsoft for free to avoid another case like SCO (funded by Microsoft) v Novell.
Anyway, on the recent Oracle v Google case the latter won overall except for a few minor offenses.
I wouldn't personally mind a switch from Java (read: Oracle), but that would be a huge switch for whole community, it might even split it in a way if Google went with this. What about Google Go? I've never used it nor I even know the state of it. Who knows, maybe Google has plans to use in for android in the long run already?
A switch from Oracle's Java to C# which I think is tied to Microsoft wouldn't be a wise thing to do IMO.
The switch to a C# based android would mean better performance and battery life if what they say is true. However doing so is largely impractical and would be a decent alternative only if Google was forced to switch from Java.
As far as the Mono platform goes, it is a godsend for XNA developers. It enables you to retain 80-90% of your codebase between all 3 platforms (android, iOS and WP7) and will greatly reduce porting time if you're writing in C#.
Sent from my Droid Incredible using the XDA app.
Sounds cool, for me anyway since i use unity 3d and program in C# though i though the lawsuit was over between them?
i doubt that google would change android to C# way to much has been done in java think of all the apps that would no longer work.
although the flip side is that it would mean a clean slate for the app store witch means no more bad apps because google could change the restrictions for publishing.
Every app would need to be rebuilt...but hey, you could code for iOS and Android at once!
AceRoom said:
C#, though made by Microsoft, is supposed to be an open specification. And the mono framework provides an open source platform for C#.
Check this out from Slashgear:The key difference between Java and the C# and .NET runtime is that the latter two are covered by ISO standards. That means there are legally binding commitments by Microsoft that prevent the software giant from suing implementers for patent infringement.
Click to expand...
Click to collapse
The ECMA standard is incomplete, and the only actual protection is a "Microsoft Community Promise" which only prevents Microsoft from suing you, not one of the patent trolls which it can, and has already in the past, equipped.
As this article points out:
If Microsoft genuinely wants to reassure free software users that it does not intend to sue them for using Mono, it should grant the public an irrevocable patent license for all of its patents that Mono actually exercises.
Click to expand...
Click to collapse
In short, there are still serious reasons for worrying about C#, despite what they'd like you to believe.
Hmmm.... Basically Microsoft can still come back and screw us over... And they would have reason to since they offer products directly competing with ALL of Google's products. The only reason they probably aren't doing so to Apple is that Microsoft makes products for Apple systems...
And then Apple would come out from nowhere and sue android again for this, claiming they patented it.
♬★------ιƒ ι αgяєє∂ ωιтн уσυ; ωє'∂ вσтн вє ωяσηg シ------ ★♬
java always used to be more advanced than .net, especially back when android was released. but in the past few years .net has really caught up and now greatly surpasses java in both development tools and runtime performance. you can already run android apps written in .net with mono which already outperforms the same application written in java.
also i think csharp is a very easy language to learn and visual studio really makes it easy for new developers. however i dont see google pulling a complete switch like this. especially when the entire android project is based on rapid development (which seems to be working well for them).
I think that if legally everything can work out between Goo and MS about patents etc., would be nice to see some C# Android. .NET and C# are good base to have some improvements. Then again the security issue would escalate sky high and we will be all under the good grace of MS.....

App requests?

I know this is a potentially dangerous post, but I'm looking for suggestions for things to port. I make no promises that I'll be willing/able to port any suggested software.
Some ground rules before you hit 'reply'
1) Don't ask for Chrome. I won't port it. Period.
2) The source code must be available and not have any _obvious_ specific ties to non-open source code. Eg: some proprietary or closed source library which it depends on.
3) Code must be in C or C++ (I can deal with porting some assembly if needed)
4) Project must be of a _reasonable_ size for 1 person. Honestly, I do this on my own and in my spare time. Some apps can be just massively overwhelming to port. That being sad, sometimes the big ones are also easy.... so use your own judgement here.
5) Tell me why you want it ported. Whats your "use case".
6) Drivers aren't out of the question, but they generally take significantly more work.
Feel free to +1 others suggestions.
Ok.. <puts on protective gear>.. fire away!
Cheers!
Thanks for all your awesome work.
While this isn't an app, I think that the kexec kernel-mode driver idea that was tossed around earlier would be waay more useful than an individual app. Every time it was brought up somebody said "Oh, that won't be much work." And then nobody did anything :-/
So, I'm hugely grateful for the time you put in here, but I think I'd be even huger-ly grateful-er if you opened the door to other OSs.
Sent from my SCH-I535 using xda app-developers app
What would be good is:
http://ekiga.org/download-ekiga-binaries-or-source-code
But I'm pretty sure it uses some libraries not avail
I wish XNA could run on Windows RT. It'd be funny to see Terraria and Magicka on Windows RT...
Firefox would be nice, but without a Thumb-2 JITter, it's not worth it.
Would be nice to have InSSIDer. I use it a lot on my laptop, rather leave it at home.
https://github.com/metageek-llc/inSSIDer-2
Myriachan said:
I wish XNA could run on Windows RT. It'd be funny to see Terraria and Magicka on Windows RT...
Firefox would be nice, but without a Thumb-2 JITter, it's not worth it.
Click to expand...
Click to collapse
I would say to take a look at monogame. It can actually build microsoft store apps including ARM support, so coercing it into functioning on the windows desktop may be possible. Otherwise it might end up being a rule 4 :/
There are hacks out there to run terraria on MonoGame instead of XNA, most of them pretty complete but sometimes have the odd graphical glitch. A full source port to MonoGame would be far more reliable, and actually very simple, but sadly its closed source (although not obfuscated).
One of the supposedly more reliable ones: http://www.terrariaonline.com/threads/wip-monogame-terraria-terraria-for-linux.72997/
Isn't rule one covered by rule four?
SixSixSevenSeven said:
Isn't rule one covered by rule four?
Click to expand...
Click to collapse
No.
People can have bad judgement.. so I'm making an explicit point about Chrome.
Personally i Was really disappointed by the lack of a transmission remote app when i discovered métro interface!
Plus there are many utorrent app...
SO, i think TR Gui source code is available, i think there is many people interested, And i think it will not be too difficult to develop, that can be a wonderfull idea (especially for me ) to make this one
Just found one. TCPMP, this player worked great during the PocketPC/Windows Mobile era. It moved from open source to a commercial different version which is closed source but I believe the link below has the source.
http://www.hpcfactor.com/downloads/tcpmp/
This would bring about a player that supports MKV playback.
lambstone said:
Just found one. TCPMP, this player worked great during the PocketPC/Windows Mobile era. It moved from open source to a commercial different version which is closed source but I believe the link below has the source.
http://www.hpcfactor.com/downloads/tcpmp/
This would bring about a player that supports MKV playback.
Click to expand...
Click to collapse
There is no source code downloadable from that site. All the links are non-existent. Please post the source code if you have it.
Cheers!
bfosterjr said:
There is no source code downloadable from that site. All the links are non-existent. Please post the source code if you have it.
Cheers!
Click to expand...
Click to collapse
Does this help http://code.google.com/p/tcpmp-revive/source/browse/#svn/trunk
mr djé said:
Personally i Was really disappointed by the lack of a transmission remote app when i discovered métro interface!
Plus there are many utorrent app...
SO, i think TR Gui source code is available, i think there is many people interested, And i think it will not be too difficult to develop, that can be a wonderfull idea (especially for me ) to make this one
Click to expand...
Click to collapse
http://forum.xda-developers.com/showthread.php?t=2101891
mr djé said:
Personally i Was really disappointed by the lack of a transmission remote app when i discovered métro interface!
Plus there are many utorrent app...
SO, i think TR Gui source code is available, i think there is many people interested, And i think it will not be too difficult to develop, that can be a wonderfull idea (especially for me ) to make this one
Click to expand...
Click to collapse
I think the problem with the current torrent apps are you either have to pay to get the ability to download files in the background, or the app doesn't support it. I'd like to see a free torrent client that allows background downloading, even if it means speed has to be throttled a bit.
To the OP what is your favorite browser? If it is not Chrome(or Chromium), do you think it is possible to port that browser? At this point I'll even take Safari as I am starting to hate all the crashes that occur for me in IE.
bigsnack said:
I think the problem with the current torrent apps are you either have to pay to get the ability to download files in the background, or the app doesn't support it. I'd like to see a free torrent client that allows background downloading, even if it means speed has to be throttled a bit.
To the OP what is your favorite browser? If it is not Chrome(or Chromium), do you think it is possible to port that browser? At this point I'll even take Safari as I am starting to hate all the crashes that occur for me in IE.
Click to expand...
Click to collapse
Safari is not open source so cannot be ported.
Chrome is a rule 4 - or in other words is too much effort for 1 man to do in a reasonable time frame.
Firefox is also a rule 4, plus its a ***** to get it to compile properly under microsoft tools apparently, plus its javascript engine is raw ARMv7 JIT whereas windows RT bugs with that and would require a THUMB2 JIT. Chrome also would have javascript issues, although in chrome you can have an interpreted javascript engine I think which would just be hideously slow in comparison.
Opera - Closed source.
The list goes on unfortunately. Browsers are complex creatures. Most will come under rule 4 though.
bigsnack said:
I think the problem with the current torrent apps are you either have to pay to get the ability to download files in the background, or the app doesn't support it. I'd like to see a free torrent client that allows background downloading, even if it means speed has to be throttled a bit.
To the OP what is your favorite browser? If it is not Chrome(or Chromium), do you think it is possible to port that browser? At this point I'll even take Safari as I am starting to hate all the crashes that occur for me in IE.
Click to expand...
Click to collapse
What the hell are you doing to get all these crashes? I have yet to have IE crash on 8 or 8.1 on RT in desktop or metro.
My only suggestion would be a gui SFTP client. This is probably the one utility I am currently missing on my Surface RT (I use ssh to remote into Linux systems both for work and personal use, point #5). To clarify, I do use the psftp client in the putty suit, and that works well enough, just takes a bit more time and effort than something like winscp. I can continue to use this if an gui alternative is not feasible.
I recall someone requesting winscp at some point in the past, so I searched around this forum and I did find a couple of people that took a stab at it, but with no results, and I haven't found a clear explanation on what the hang up was. Looking at the readme winscp appears to be written in c++ at least (point #3):
To build WinSCP you need:
- Embarcadero C++ Builder XE2 Professional.
- Copy MFC source code from Borland C++ Builder 6 Professional and
build its Unicode version (see readme_mfc.txt).
- nasm from http://www.nasm.us/
- To build 64-bit version of drag&drop shell extension, you need
Windows Platform SDK:
http://msdn.microsoft.com/en-us/windows/bb980924
Click to expand...
Click to collapse
I am unsure if the aforementioned Windows Platform SDK is available for Windows RT, or if it is even needed since Windows RT is not 64-bit.
Is nasm the problem? It looks to be an x86/x64 assembler... which of course wouldn't work on ARM... unless I just don't get what an assembler is...
Not being much of a coder I also don't know if one can import a Borland C++ project into Visual Studio, so maybe that is also a problem too.
So I guess I'm not sure on a lot of the points on the ground rules list...
domboy said:
My only suggestion would be a gui SFTP client. This is probably the one utility I am currently missing on my Surface RT (I use ssh to remote into Linux systems both for work and personal use, point #5). To clarify, I do use the psftp client in the putty suit, and that works well enough, just takes a bit more time and effort than something like winscp. I can continue to use this if an gui alternative is not feasible.
I recall someone requesting winscp at some point in the past, so I searched around this forum and I did find a couple of people that took a stab at it, but with no results, and I haven't found a clear explanation on what the hang up was. Looking at the readme winscp appears to be written in c++ at least (point #3):
I am unsure if the aforementioned Windows Platform SDK is available for Windows RT, or if it is even needed since Windows RT is not 64-bit.
Is nasm the problem? It looks to be an x86/x64 assembler... which of course wouldn't work on ARM... unless I just don't get what an assembler is...
Not being much of a coder I also don't know if one can import a Borland C++ project into Visual Studio, so maybe that is also a problem too.
So I guess I'm not sure on a lot of the points on the ground rules list...
Click to expand...
Click to collapse
Borland C++ is an alternative set of 3rd part C++ tools. Would take a bit of work to get a borland project to compile it under microsoft tools.
Nasm is an x86/x64 assembler yes. Assembly language is pretty much the lowest level of programming possible before writing in raw hex or binary. It is *HIGHLY* CPU dependent. Specifically the set of commands available in assembly is the plain text form of the exact instruction set the CPU has available which for x86 is different from ARM. The fact that nasm is required means that the project will have assembly in it, therefore an RT port will not be undertaken (one of the rules in the OP).
Sorry man, its proprietary tools and parts of it are unportable anyway. Doesnt mean another SFTP client can't be ported, just this one.
Here's my wishlist. I've poked at some of them, but I don't really have time to finish any of them.
WinPCap - Iirc, the biggest issue was that it was written targeting an older version of NDIS. The usecase would be to provide network support for BOCHS.
QEmu - There's a build of QEmu that builds on MSVC called WinQEmu, but it's dynarec recompiles to x86 only. I believe the official QEmu repo doesn't support MSVC, and I don't know if it can recompile to THUMB-2.
A good IRC client - X-Chat and mIRC run poorly under the emulator, and the few .net clients I've tried are meh. X-Chat has too many GCC-specific requirements, and mIRC isn't open source, I just want a good IRC client.
An X Server - I've been unable to find an X server that builds with MSVC, or anything short of Cygwin for that matter, but I'd love to have one.
Calibre is a good eBook manager I think this is the correct source code https://code.launchpad.net/calibre
I'm not good with this source code stuff so if its to much you dont need to make a port but if you can it would be appreciated thanks
Sent from my SGH-M919 using Tapatalk 4
cx1 said:
What the hell are you doing to get all these crashes? I have yet to have IE crash on 8 or 8.1 on RT in desktop or metro.
Click to expand...
Click to collapse
Browsing news sites and/or using Spotify.

Categories

Resources