I try to create a very small partition (root filesystem) where I can run programs written in Java (android dalvik). Those applications will not use fancy functionality like telephone, multimedia, browser etc.
It will only run some services not using UI and use "basic" android things like intents, services, activities, binder aidl. I'm not interested in a JVM on a small linux distribution because this doesn't offer the basic android functionality like intents/services etc.
I intent to preinstall the applications as system applications on this filesystem. So no need to install them at a later time.
Is there a compile switch in the android platform build files to create such a "root filesystem"? Or is this doable with minimal effort (less than a few days of work)?
I think your best bet is going to be the porting section of the AOSP website.
It walks through the process of building and bringing up a custom Android system.
Related
I have an iPhone application (with an android counterpart), developed in Xcode and written in Objective-C. It is a classical native iOS app, already working and uploaded in the App Store. Similarly, the android version is built with Java and linked with the android SDKs. It's uploaded to the market place.
I was asked to port the app to Windows Phone. Is this possible without modifying the code?
I am not familiar with Windows Phone dev, however it looks like that is a completely
separate ecosystem for developing apps (different programming language, different IDE, different app store etc).
Can I go from Android to Windows Phone or from iOS to Windows Phone?
PhoneGap - or similar platforms - are not options since the code is already written in Objective-C and Java.
Like iOS and Android, Windows Phone is a completely different operating system and currently requires a completely different development platform.
It is not possible to take the existing code and make it function on a Windows Phone.
iOS commonly uses Objective-C for application development . Even if there was a way to compile Objective-C onto a Windows Phone, it would be inherently tied to platform features, and UI controls. While you could write some code in C++ and share it, with an iOS application, you'll still need some in Objective-C.
Android applications use Java normally. Java is not available for the Windows Phone platform. So, the language is out. Further, like iOS, the platform features are not necessarily shared and the UI control and behaviors are different. Android applications can use C++ (if you happened to code using it), but it has limitations, and by using it, again, you'd be tying the code to the Android platform potentially. Some code may be portable.
Windows Phone applications are usually written in C#/C++ and XAML or DirectX. While there is some similarity in languages (Java and C#), you'll encounter far more platform differences that could need significant effort to convert. From the way network requests are made to handling threads will be different (and many many more). Objective-C is also very different from C++.
Unless you had used something like Xamarin and written the underlying business logic using a common platform (C#/.NET), you'll need to consider a port to Windows Phone a fresh start.
It's not possible to just reuse all of the code that's been written. With a careful effort, you could share some common code (if it were written in C++), but as the shared code will not directly work with UI (and other platform features), you'd still need to do the UI on each platform, work around limitations, and potentially customize the user experience for each platform.
Microsoft has provided some guidance on porting, and provided some links with an API equivalency table here.
Yes, you can use Microsoft's Windows bridge for iOS to convert your iOS application code to Windows mobile platform code.
You need to use WinObjC SDK provided by Microsoft for this purpose.
Follow this link for more details.
No, you can't, WP apps are build with c# or .net and in visual studio IDE. There is no automated way to port a previously coded ios or android native app built with objetive-c or java to WP.
In my opinion there is no way to directly port a iphone app to windows phone app. You need to develop windows phone app with its needed environment like Visual Studio , windows phone sdk and with windows os.
You can also use cross platform like phonegap if it may fit to your requirement.
It looks like you have an existing Obj-C codebase for iOS, and a Java codebase for Android. No matter how you cut it, you're looking at [re]writing code to get something on WP8.
I don't know how "UI heavy" your app is; in general the UI code is the most platform specific (unless you're willing to put up with "cross platform" stuff that might not have good UX).
You might consider keeping the non-UI code mostly plain C++ and using Obj-C, etc. only for the parts where you have to talk to the framework. It will be easier to support multiple platforms with C++.
I took this approach with an app I'm working on; it's targeted for iOS but it's about 80% C++ (including Open GL). If I decide to port to Android I just need to deal with the 20%, mostly UI-ish code.
I'd like to develop an application with versions both for PCs (Windows, Mac, Linux etc) and mobile devices (iPhone, Android etc). I would like to share/reuse code between these platforms as much as possible below the GUI layer. The GUI layer itself may be specific or shared between some platforms. I'd like to use web technologies where possible, so prefer to do shared code in JavaScript and at least PC GUI in HTML.
There are no fancy GUI requirements, but focus is rather on synchronizing and storing/searching a lot of data (possibly gigabytes) and receiving notifications about updates on it.
What (set of) application development stacks would you suggest?
Update: Specifically, I'm looking for the tools or libraries that:
Can produce installable applications on each platform (installable exe, apk etc).
Allow the applications to run completely offline using synced data.
Minimize the number of different APIs and implementations my shared code needs to worry about (same database API, as few different DOM implementations as possible, etc).
F ex, I could make an HTML-based Adobe Air application for PCs and then use PhoneGap on mobile. Or are there better offerings for my use case?
Web is your friend. You're going to need a web-based api and a web-based database. Presumably you're going to be creating a web site as well, so as you're creating the web site you should be looking to put all of your business logic into an API (or creating controllers which can output to either XML/JSON as well as HTML for your front end website).
This way the GUI can be created natively on each platform, and most of the "business logic" goes through the server.
You could even create one GUI (web-based) which can be "responsive" (i.e. changes depending on the device you're viewing it on.. see Twitter's Bootstrap for inspiration) and all you would need to create natively is a web browser/web view based app which would be a window onto your website.
If you're set on cross platform dev then Mono looks like your best bet. It claims to be cross platform onto Windows, PC, Linux, iOS and Android - although as you already suspect you will be creating separate apps for all. You might be able to package the business logic into frameworks or plugins which can be shared across all the platforms which might suit your needs. Its expensive though - for a company it'll be fine, but if this is just a "side project" then it might be a bit too pricey.
I have to develop an app for the Ipad. It has to be non-browser based. That's a requirement and I can't change it.
I think it likely that the app would be useful on other tablet PC types and have a good chance of a second app which requires IPad and Android at a minimum; Windows and Linux would also be useful.
If it makes any differences these are "desktop" apps for tablet PCs and it is not envisaged that there will be any handphone development.
Is there a “Grand Unifying Theory” of cross-platform desktop app development? Is there a good IDE, preferably FOSS? I'd rather code C++ or Java and am less keen on Ruby or Python (through lack of experience) but would accept if there is no alternative.
I need a GUI builder, something like Borland Delphi or MSVC or the Eclipse Android plugin and I need a way of executing different code on different platforms (#ifdef Android … etc)
Any ideas, or should I just go ahead and code the current project for Ipad only and stick to browser based HTML5 + CSS3 with Jquery/Ajax for cross platform apps (the problem being that some will need to execute native system calls, like en/de-crypting a file and at least one app has to work in “local mode” if there is so internet access, so I guess I would have to bundle a web server (Apache) if I go browser based (in order to serve the web pages), which would not be necessary with a “desktop app”.
Any recommended IDEs, Web sites? Books? Thanks
The "grand unifying theory" is that core business logic should reside in the cloud; that allows your iOS and Android implementations to be just a thin GUI on top of this shared logic. Unfortunately, there isn't really a way to reuse the GUI, and even if you did, it would go against the intuition of users on one or both platforms, since you wouldn't be using the paradigms of those specific platforms.
Google App Engine provides a way for implementing your core business logic in Java on top of Google's cloud computing infrastructure at reasonable costs (development is free, cost is proportionate to usage, and one can put caps on how much one is willing to pay). There is an Eclipse plugin for developing App Engine applications. When developing for Android, you will similarly want to use Eclipse (there is a plugin specifically for Android development), although the Android SDK can be used just from the commandline (which is good for setting up a continuous build and test system).
For iOS, you will want to use the standard Xcode and the iOS SDK. Xcode is an IDE, but it is possible to build Xcode projects directly from the commandline using the xcodebuild command (also good for continuous building). The standard language for iOS applications is Objective-C.
You should take a look at jQuery Mobile. I used it to cross develop between Android and Playbook. I know that it also does iOS.
Maybe for you the downside is that you have to program in JavaScript.
The Google Market offers an application purporting to run J2ME MIDP applications on the Nexus One.
I have tried this application but it only appears to run MIDP applications that are downloaded from particular web sites; it does not seem capable of picking up a MIDP application that is stored on the SD card in the phone.
I have suggested to the developers that they might like to add such functionality, but they have not been particularly responsive to my messages.
So I would like to build my own MIDP runner for Android and would like to see if I can find a pointer as to where to start, or even whether this is possible.
The MIDP application in question was supplied on CD along with a security camera system and permits remote viewing and remote control over the security system.
Clearly it wasn't built with the Android platform in mind. However, if it is possible somehow to run MIDP applications on Android (perhaps by creating some kind of sandbox environment for example) then I'd be quite keen to develop it.
MicroEmulator is a Java implementation of Java ME. You could try porting this to Android. The UI part should be re-written, as MicroEmulator is based on Java SE components that aren't available in Android. Also hardware access won't be possible. Device vendors implement J2ME APIs (camera API for example) and bundle them with the core J2ME. This won't be easy for you to do. You will need to study the JSR specification and implement it in Android.
You can use App Runner to port MIDP apps to Android.
This is my first S/O question, please be gentle!
I'd like to know more about porting C applications to native ARM for use on Android devices.
I can make simple programs using the prebuild toolchain which comes with the source, but how can I use this toolchain with applications which are more than one file and require configure and make?
This article explains it quite well:
http://davanum.wordpress.com/2007/12/09/android-invoke-jni-based-methods-bridging-cc-and-java/
Basically, you create a shared library like you normally do, wrap it with JNI and call it with native methods from Java.
At Google I/O they talked about introducing an "NDK" -- native development kit -- that should simplify the process of creating applications that use native (C) code.
It's worth noting a couple of things before you go too far down this route:
The NDK will provide limited functionality. It will be primarily intended to offer a way to run extremely time-sensitive code natively, but won't have access to the full system, nor will it provide an alternative application development model (you'll still need to write most of your app for Dalvik).
You can write native apps without the NDK, but you won't be able to distribute them to end-users using the conventional APK application package supported by the app store. It's really only a viable option if your app is being distributed as part of the carrier / OEM build - and even then isn't recommended.