I have a huge android codebase for an app : It's basically a SDK where all the business logic is implemented.
I have a basic native UI. I want a way to quickly iterate on the UI : that's why I thought about React-Native for Android.
Do you think the interop will be easy or is it difficult to integrate it with an existing codebase ? anybody has had an experience with that ?
The only way react-native UI can interact your SDK code is if you expose your SDK's API by building a NativeModule (https://facebook.github.io/react-native/docs/native-modules-android.html#content). Building NativeModules can be from anything very simple to large depending on your SDK.
Related
I am trying to incrementally migrate two existing mobile apps (Android and iOS) to Flutter. The incremental migration is required because these apps have a huge codebase.
Since the two apps have the same business requirements (they need to do the same things) I want to start unifying the business logic (and maybe the repository logic) to flutter first (not the UI).
I have seen that it is possible to create a flutter plugin, which let you create an API in flutter, implemented with native code in Android and iOS. The communication between flutter and native code is permitted using "platform channels" (https://flutter.io/platform-channels/).
My question is: It is possible to use the same thing in reverse? Writing the API in Android/iOS code, integrate flutter as a gradle module/CocoaPods pod and use "platform channels" for communication?
I am creating an app that will require small mini-games as a menu option, and I have created these games in Unity. Ideally, I would like to embed these games into a Flutter project. I have seen tutorials on doing this with Java and Android Studio, and I need to make a decision on which platform I will be using for my internship project. I have several questions about the SDK, but I have posted them separately to keep the answers distinct (and help filter out the noise for anyone searching for these specific answers), and this is one of my main questions.
Specifically, I am following this guide: https://medium.com/#davidbeloosesky/embedded-unity-within-android-app-7061f4f473a
for Android Studio, and was wondering if something similar was possible with Flutter. I am also using Android Studio as my IDE for Flutter, but need to decide if I should stick with Java, or switch to Dart and Flutter (which actually works much better for specific UI elements I need).
If not, is there another way to package a Unity project and a Flutter application together?
You can imagine the whole Flutter app to be rendered on one view of the final native application. It can coexist with native views. So it should definitely be possible to display a native Android/iOS view with Unity content and trigger that from Flutter.
Create a Flutter project and open the Android native part of it (right click the android folder in Android Studio, choose Flutter -> Open Android module).
Create a native Android view there and use platform channels to display it.
Add Unity content to the native view.
https://flutter.io/platform-channels/
As of May 2022, I would like to share an updated information for mobile app developers who are researching this interesting issue. The reason I'm writing this answer is because there was so many development tasks that need to be done before I get the right answer to the above question. A developer researching this subject should work in both Unity, Android Studio and Xcode in order to find a definitive answer to his/her question, and should also know how to develop mobile apps with Flutter. Honestly, if everything had not gone well, my long time development works might have been wasted. In addition to my answer, I would like to give also positive news on the side of Augmented Reality developers who are using Vuforia and investigating the same issue.
Using the magnificent https://github.com/juicycleff/flutter-unity-view-widget repo; in your mobile app developed with Flutter, you can run the game you developed with Unity or the AR app you developed with Unity + Vuforia. You can use the app you developed with Unity, in the Flutter App you developed. They can also communicate each other in the Flutter App. You can pass parameters from your Flutter App to your Unity application in the Flutter App, and you can also pass parameters from your Unity application to the Flutter App. This means, you can pass parameters from your Flutter App's Dart code to the C# code of your Unity work and vice versa. For those who develop AR Apps with Vuforia, I would like to point out that for the scenario I am working on, I use Image Targets. I have same experience on the phone, with the Unity APK and Android Studio APK, they are in the same stability. Of course APK sizes are different, Flutter App APK size is of course bigger than Unity APK, but in my case this is absolutely ok.
As of May 2022, the answer to the above question is: Yes, you can. Moreover, for those who develop AR Apps in Unity using Vuforia, the answer is also: Yes, you can. I wish success to everyone who will start working in this scenario. Since it is a detailed subject, some difficulties are waiting for you on the way, but if you can see that the product you dream to achieve will be a stable Flutter App, with all the nice features, I am sure that you will find the enough motivation to bring all of them together. Good luck.
Is it possible to create a new iOS app with exsisting sources?
I am working with xamarin in Visual-Studio. I've got a project, an app that runs on Android devices. But can I make a new project for an iOS app with those existing sources? I have a Macbook that I can use to do this. I also have a PC with windows 10 on it. So the hardware/software requierments shouldn't be a problem.
Getting to the point..
Is it possible to transform the project from an Android app to an iOS app without writing any code extra? And how can I accomplish this, any tutorials that I can watch/read?
The code language is C#. The programs that I am using are Visual studio and the xamarin extention.
I've read something about Platform Abstraction and Divergent Implementation on the xamarin ducomentation page, but this couldn't fully answer my question.
Short answer: NO.
Long answer:
There are a quite a few cross platform developing tools out there. Xamarin, like the one you are using, or Cordova. They simplifies the development by "A LOT" but you can't just convert one app to another without writing 0 code. Some of the libraries in one platform do not exist in the other. So, the long answer is that cross platform shortens the development cycle as you do not need to start from scratch on other platform, that does not mean it can completely convert.
P.S. Youtube is your friend, but the difficulty of the transformation solely depends on the scope of your project, as they vary a lot.
I second the other answers.
Furthermore, I'd like to propose to have a look at Flutter.
Flutter is based on Dart language . The framework and your application get compiled from Dart to the Android and the iOS target platform.
Flutter is a product of Google and likely to get the base development environment for Fuchsia, a new OS from Google.
My own experiments with Xaramin ended up kind of frustrating. The development was slow, several times problems with Xamarin itself or plugins made me stop the effort.
At the other side, I created an app with Flutter quite fast. While Dart and Futures might seem at first quite different compared to other concepts/languages, after some time things turn out to be very natural and well designed.
While Flutter originally was based on Material design, Google added an iOS theme using CupertinoWidget.
A simply great feature is the enormous quick development turnaround time: The app under development very ofter adopts within just a second your source-code changes. Flutter/Dart hot reloads changed classes often instantly.
Android Studio is a great and free IDE for Flutter development. Plugins enhance to IDE with Flutter development tasks.
If you have android application written in Java you can use Migeran Analyzer to understand how much % of the code could be reused between android and iOS: https://analyzer.migeran.com/
Once you have the % you can use Intel Multi-OS Engine (free product) to create cross-platform application in Java: https://software.intel.com/en-us/multi-os-engine. It will have module with cross-platform shared code, android specific code module and iOS specific code module
I have one simple question, that is can I convert my android .apk app into ios using any software? If yes, then please give me the name of that software. If any alternative method for that please guide me.
Google has a tool to convert the back-end, nothing for front-end though
http://www.xda-developers.com/google-tool-helps-developers-port-android-apps-to-ios/
There is a new startup that clains to convert the APK to IOS.
It's called MechDome.
The goal is very simple and attractable:
Reduce time to market by eliminating cross-platform development. Automatically convert your existing Android apps to high-fidelity, native iOS apps.
There is nothing out there that would convert apk into ios app. To my knowledge there is also nothing out there that could translate android code to IOS. The operation is simply too complex for a simple tool to manage.
However, there are tools you could use to make your apps (developed by you) work across multiple platforms. I'm sure there are more, but here are 2 of them I found in minutes (look into them if you are interested): Apportable, Phonegap (discontinued as of 2020/03. It was made obsolete by ProgressiveWebApps - PWA).
In past decade or so WebApps have been picking up for anything that is not too graphically demanding as they can run on anything that has a Web Browser. With this style devs pretty much open their website in a platform-specific executable and it looks like an app.
As for your existing app depending on complexity of your software you have to rewrite from a little to a lot of code to adapt to IOS APIs.
In short: No. Unless your app is build on multiplatform framework, converting means manual adaptation.
There is no known way to convert an android app to iOS. MechDome which is a Developer Tool that Automatically Converts Android Apps into iOS Apps seems to have stopped as of 30/03/2021. link
However if it is your plan to launch android and iOS app from one coding project, use Flutter which allows you to launch on both platforms simultaneously.
Flutter is Google’s mobile UI framework that provides a fast and expressive way for developers to build native apps on both iOS & Android, using a single codebase.
Get started here link
I'm considering to start project using Dart for the front-end development on the mobile platform. Basic idea is to use it for the UI and develop platform specific solutions using native mobile sdks. So it leads me to the several questions:
Can Dart with StageXL provide good performance for the UI components on the mobile platform ?
Is it possible to make external functions call to the custom mobile framework ?
Sharing of any hands-on experience highly appreciated.
What do you mean by custom mobile frameworks? You can make calls to JavaScript if that is what you want. You can create Chrome-packaged-apps
Maybe this is what you are looking for:
Getting Started With Dart and Cordova From Scratch on iOS
Rikulo - Build Native Mobile Application