blackberry and android apps - android

I'm really curious to know how blackberry the company let's the blackberry OS install the apk package and the app runs like it was built to run on a blackberry. I've been looking for information on how they do it but can't find anything relevant.
Maybe there is some kind of compatibility layer built in the OS to let android apps run?
I thought I'd ask I think it's pretty neat how that works.

The compatability layer is built into the OS. QNX and Android on ARM use the same system call syemantics. BB10 system calls are able to distinquish the origin of the call (QNX or Android) and provide the appropriate service. This was introduced in 10.2.

Related

Native iOS/android application to Windows Phone

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.

Starting BlackBerry application development

I am a mobile application developer and have pretty decent experience in Windows Phone application development and Android. Now, I want to start developing for Blackberry also.
Going through the offcial BlackBerry website, I came to know it is possible to port my existing Android applications to Blackberry 10 and BlackBerry Playbook by using the various Runtime for Android apps tools.
My question : What is preferable? Should I develop applications for Blackberry using the standard Blackberry Java SDK or is it okay to make my applications on Android and then just repackage them for BlackBerry-10 and BlackBerry Playbook? I am aware of the fact that some of the Android applications might not be compatible with BlackBerry, such as pacakges that rely on Google Maps or Android's Text-to-Speech Engine, but right now I am not planning to use them in my apps for Blackberry.
Given my knowledge in programming, I guess I have three options :
Build using the C/C++ NDK
Build Applications on Android and then later repackage them for BlackBerry
Build using BlackBerry Java (Mobile Edition)
Which is the most preferable one and convenient one ?
I am very comfortable in Android but have no knowledge in J2ME. Hence, I thought that instead of learning to make my way around the UI in J2ME, I would just do it in Android and repackage it for Blackberry. Would that be the correct way of doing it ?
You've mixed up the legacy BlackBerry Java platform with the newer QNX based BlackBerry Playbook (tablet) and Blackberry 10 (phone) platforms. You first have to decide which platform you are actually targeting. Typically, "BlackBerry" without any qualifiers means the BlackBerry Java platform, which is the platform with 80 million users right now. BlackBerry 10 is still in development, so has no users, and BlackBerry Playbook has substantially fewer users than the BlackBerry Java platform.
If you want to target those 80 million BlackBerry users, then there is no real decision here - only Java-ME apps will run on that platform. There is no Runtime for Android on the legacy BlackBerry platform.
If you are looking to the future, and want to target BlackBerry 10 or BlackBerry Playbook, then yes, the Runtime for Android is a good choice for you, if you already have an Android app written.
You mention JavaME but also mention repackaging an Android app. JavaME corresponds to the java-based BlackBerry platforms; the current version is BlackBerry 7.1. The Android player is not based on JavaME but rather follows the Android versions and is only available for the new BlackBerry platforms, including BlackBerry PlayBook OS (2.1 is latest) and BlackBerry 10, currently on beta 3 (note that RIM has already announced it will provide a port of BlackBerry 10 at some point).
Many Android applications will just need repackaging, not even recompilation. Repackage and submit to the PlayBook/BlackBerry 10 store.
See https://developer.blackberry.com/android/ for more details.
Native Blackberry development means:
1) Java ME for OS 7 and lower - huge customer base
2) QNX for Playbook - smaller customer base, will be replaced by BB10 in Q2/2013
3) Cascades/Qt/QML for BB10 - difficult to estimate how big user base will be
My personal feelings from Blackberry 10 development:
I'm quite skilled Android developer (my apps in total have more than 6 millions downloads from Play Store) and I spent some time with developing BB10 app with Cascades/Qt/C++ and I must say that it is sometimes even easier than Android development and learning curve is steep.
Especially QML is much more easy to use and intuitive than Android's layouts. While creating app for BB10 you can mix QML/Javascript code with C/C++ (theoretically it is even possible to avoid C/C++ and use QML/Javascript only).
Worst thing for me was C++ as this language (comparing to Java) has more features (multiple ways how to use pointers, multiple ways how to create object instance, overridden operators and preprocessor macros) so it is easier to get lost than in Java. But it was still doable nothing crucial.
Regarding porting Android apps: I don't think it is good idea. They look ugly on BB10/Playbook so I don't think they will give you success.
Good to hear that you are comfortable in coding with Android. And would congrats you that Blackberry has opened a path for you to deploy your application in blackberry world.
So,clear your mind leaving few thing your application will be accepted by Blackberry users.
Since you are coding for android, it means you are comfortable with java.And you will be tooo comfortable with J2ME.
Its almost same.
Now QNX is a little different but not that different that you won't understand.
And above all you know c/c++ .
Welcome to Blackberry world ... don't think so much ...give a try

Blackberry Android runtime vs. NDK

I'm trying to repackage an Android app for Blackberry, as suggested here. The app has a native (NDK/JNI) library in it. When I try to build for the App World, I get several errors of the following kind:
uses-access-native:impact=5:com.myapp.MyClass
So on the face, it looks like NDK is not compatible with Blackberry, period. However, I could not find any official word on that. The list of known issues says that Google APIs are not supported, but not a word about NDK. What's the official line, please? Did anyone ever repackage an app with an NDK library?
There is a note here: https://bdsc.webapps.blackberry.com/android/apisupport
Under 'Unsupported Software Features'
•Apps that utilize native code bundled into their APK file
My understanding is that it's not possible to do this - as per the link paulkayuk posted, and also:
http://developer.blackberry.com/native/documentation/bb10/porting_from_android_ndk.html
However this story popped up in the news this morning:
http://www.engadget.com/2013/02/07/skype-blackberry-android/
which references:
https://support.skype.com/en/faq/FA10251/is-skype-available-for-blackberry-devices?frompage=search&q=blackberry&fromSearchFirstPage=false
which says:
If you have a new BlackBerry smartphone powered by the BlackBerry 10
platform, you will soon be able to download and run Skype on these
devices. We are working closely with BlackBerry to ensure the Skype
for Android app runs great in the BlackBerry 10 environment.
My understanding is that Skype on Android has a big native library accessed via NDK, so you presume for this port to have happened they are in the process of opening up a way for Android apps running on blackberry to access native code. ie. sit tight and watch this space :-)

Cross platform non-browser development for tablet PCs?

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.

Best platform for programming to IPad and new Windows and Android Pads

would like to build an app that can run on any of the new PAD's hitting market.
I don't want to limit our users to a specific OS.
What is the best solution to allow all these pads to use our app.
The app needs to be able to run offline.
Thanks!
You could write a web application and use HTML5 for off-line caching.
http://diveintohtml5.ep.io/offline.html
Alternatively, you could try and use Titanium Mobile.
http://www.appcelerator.com/products/titanium-mobile-application-development/
You should also spend some time reading this discussions:
is-there-a-multiplatform-framework-for-developing-iphone-android-applications
technology-to-write-iphone-blackberry-and-android-phone-at-the-same-time
Have a look a MonoTouch, it will let you write all your logic in C# over all the main mobile platforms. However you still need custom UI code for each platform, but as least it will all be in C#.
(Better then having to use C#, Java and Objective C)
You could use Adobe Air that could works in most of Mobile/Tablet operating system Iphone,Android and Windows 7. but im not sure if Apple will approve your App if you plan to released to the App market.
Another way to think about it is to create an HTML resources and then integrated in away seems native to the system its more work but you will have a higher chance to get approved from apple and the app look more integrated with the OS .
The obvious -- and currently free -- answer is to use Adobe FlashBuilder to develop iOS apps. There is an iPhone and iPad emulator included. This does not use xcode, but you get most of the features to work with, and you can also develop Android apps from the same set of code. Further, with minor modifications for mouse usage, you can also have the apps run on any desktop as an Air app.
Adobe's website has detailed directions for how to create iOS apps on Windows with Adobe Air, though the most useful instructions for Air are from untoldentertainment.com.

Categories

Resources