I have an Android/iOS app built with Apache Cordova. I am having some issues in getting some enhancements done to it.
Is it possible to shift to a different architecture of the app like from Apache Cordova to Flutter, without relauncing the app in the AppStore?
It could be Cordova to Native Android App, or hybrid ones like Flutter, but I want to know if I can change the app development framework architecture.
I have checked in here, but could not get the exact answer.
I dont think it is possible, but I wanted to check one final time before re-architecting. If the answer is yes, please do provide some pointers so that I can take a look.
So long as you sign it with the same key, yes. The store doesn't know or care what framework an app is written in. All it cares is that the signing key is the same, and that the version code increases.
Related
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.
Currently I am planning to use Hybrid App (ionic framework) to develop an initial version of our app. The reason is I am planning to start a startup and currently not in a position to afford individual developer for various platforms (especially for iOS, the developer rate is too costly).
So I decided to use Hybrid App using ionic, and our requirements fits well for hybrid app at-least for initial few releases. But at later point planning to migrate to native Android and iOS when I earn enough funding. Because later versions of app may have features like payment gateway integration, chat features etc.
So my question is, is it possible to release initial version of app using hybrid and at later updates push native version? If yes can someone give me basic idea of how is this achieved so I can take it forward? I searched quite in Google but didn't find enough information regarding same.
Publishing hybrid app on platform specific stores are same process as publishing native app.
You can develop and build application using any cross platform mobile application development tool (i.e. ionic framework or any other) and later easily move to native development tool. You can also develop application on hybrid tool(ionic framework) and build it on native development tool(Xcode or Android Studio) and proceed further for publishing on store.
In Android, package name(application ID) should be same for different versions of app binary. Also signing certificate remain same during version change.
In iOS, Bundle ID must be same for different versions/builds of app binary. Apart from this, provisional profiles and certificates also need to be same.
It is possible unless the binary have the same bundle identifier.
You may first release an app with Ionic framework and later push a native version of it. One thing is that the two binary have to have same bundle identifier.
You can surely do by keeping package name same at google playstore or say bundle identifier at App store. It will replace your old apk or ipa file with code using native APIs at later point in time.
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 have a feeling I already know the answer to this, but I'm still hoping it's possible. Awhile back, I made an app for android using an Adobe Flash trial. Since then, I've made numerous similar apps in Android Studio, which look much nicer and don't require the user to download AIR. For whatever reason, the app I made in Flash is doing really well, despite the fact that it's easily the worst one I've made. What I'd like to do is replace the app with a remade, nicer looking, native version of it. Is this possible somehow?
Yes. The only requirements Google has for Google Play is that your application have the same package name (e.g. "com.example.myapp") and is signed with the same certificate. It also requires a new, higher version code and will prompt a user for a manual update if it requires additional permissions.
Google does not compare the contents of the APKs for similarity, so do what you want as long as you have your certificate.
But - is your "app" an app or a webpage? The Adobe AIR APK is a native app. They just provide a framework and toolset for constructing apps.
http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac1e63e3d128cdca935b-8000.html
More specifically, Adobe uses the same distribution method for AIR apps as native apps, so re-distributing as a native app is possible:
http://help.adobe.com/en_US/air/build/WS901d38e593cd1bac-77bd3ea112e2c0a7ed0-8000.html
I have been researching PhoneGap and I'm now at an impasse and need some advice. I know that PhoneGap essentially 'converts' html5,css,JS sites to 'apps' for distribution, which leads me to my question:
Why wouldn't one simply utilize a webview within an activity to do the same thing and keep the app native?
The advantage of PhoneGap is that it provides APIs that enable your HTML/javascript to interact with the phone (e.g. camera, accelerometer, media etc.)
These APIs are standard across multiple devices (iOS, Android, WinPhone, Blackberry etc.). So you can write one set of HTML/javascript and deploy to multiple platforms.
If you just created a WebView you would not have the PhoneGap APIs and you would need to build containers on each platform you were interested in.
Good question I have searched me too, because we went in Phonegap solution and I think it is a wrong way for us.
The long story:
That is very true if you write once a UI with web developer skills than not needed to know native language and it compile, and ready for testing.
Web developers are more so higher the demand => developer price even cheaper.
When the client want a Milestone 1 for his great idea it will ask a few company, freelancers about development price and time. If is a very basic application version with Phonegap you will have the less development cost( off if your web dev skills are the same laver as platform dev skills) with webView at second place and last one the native.
The client is satisfied with app result buit with Phonegap and want to get more investors so it will make a presentation, where they are asking more features.
At Milestone 2 you will add a few features. Some are easy command line install and you get it, some aren't. Maybe you will be unlucky as you want a combination of 2 existing plugin with a few extras. The conclusion will be: you have to develop a plugin. At this point is already a very big sign of interrogation which is cheaper: the Phonegap + Phonegap plugin or a WebView. If you need 5 existing plugin and your has a little modification, than still Phonegap. But if you need only 1 plugin, only yours, than the web view is the proper way. There are also cases which makes the Phonegap stucture useless. Also there is a problem with version control system under Phonegap if you develop web files, and native code too: some are regenerating at each build time some not. Still is expensiver the native platform. Now the required features are developed. The client will make a demo for investors, where will be visible execution speed with this new features. Or here they will require optimisation, runtime speed-up or after publish to market they will see some are running with low end phones and not the ultimate, which ws used at demos and they will decide to go to Milestone 3 : speed up.
At optimisation, speed up (Milestone 3) you will decide as you need native GUI. After all GUI developed with web now you will need to throw out at fence and implement the side, maybe some parts need even NDK to speed up. No way to be good here with Phonegap. But you have hired web developers, or contracted that company. Now go back to that company , developers which can make native code. They will not start from 0, so they need to analyse the code, refactor and your development price will go up at least with 50% as you would start it from 0 with native.
Good Question, you still could use webview for that but you won't be able to access native functions like ringtone, camera, and all that, however, the app done that way will be regarded as a native app.