I have found this question Source Control for Mobile Platforms but it does not quite describe my specific situation so I am going to re-ask it.
I currently have a private repo where we are developing two native mobile apps (one for Android and one for iOs). I am using two different developers who do know each other and work together but ultimately one is responsible for iOs and one for Android.
At the moment I have created a single repo and invited them both as collaborators. In that repo I created two folders: one called iOS and the other Android. I have asked them to upload their source code to their respective folders. However there is a problem. When they fork the repo each developer gets a copy of the Android and ios folders. They dont really want this as each one only works on one of the platforms.
SO the question is this:
1. Do I need to create repo for each platform?
2. Perhaps there is a way for them to selectively fork a folder from a repo?
3. I am sure I am not the first person who has had to manage multiple platform development on Github. How have others done it?
Related
We have 13 apps that are exactly the same in source code, one difference is app name.
Currently, whenever we have an update to deploy we have to manually do it to every developer account. Is there a way to combine all apps into one source code and deploy it to each account?
If the deploying to multiple accounts is a must, then you can also considering automating this by using the API which both the platforms, Android and IOS have and there are options like fastlane available which make the process fairly easy
If you can switch to a single developer account, then flavours could be an easy way out
Flutter Flavours is exactly for this purpose. A flavour is analogous to say ice cream, well the base content is same but you would like to have a different flavour always right? The best part is you can do something for both Android as well as IOS
You can read about Flutter Flavours here
We have a single codebase for Android & iOS in Flutter.
We tried to use the same codebase for Web in Flutter too, but it hadn't gone well.
As of some libraries/plugins, currently unsupported by Flutter SDK.
To mitigate these issues, we are maintaining two separate repositories, one for Android-iOS and other for Web.
Also, to add up here, for separate repositories because each Flutter product has a unique pubspec.yaml file. Now there are a few plugins that are currently supported in App but Not yet on Flutter Web, namely Awesome Notifications, Clevertap plugin, etc.
Integrating those plugins on the web, stops the web to run. So keeping the same codebase for both is getting technically complicated as the app has many many functions.
It takes so much time in simultaneously testing, debugging and resolving issues in Web.
So, how we can maintain same code for all platforms i.e., Android, iOS & Web, without doing it in other repository for Web and gaining advantage in streamlining our codebase into one for all platforms?
For Ex. If I commented the package awesome_notifications for Web in pubspec file, the issue arises (as shown in the screenshot) in code wherever we used its functionalities.
For successfully working on both Mobile & Web, are there any methods available we can use packages for both (Mobile & Web)?
Ideally you’d want to use a single codebase to host both the web and mobile versions, to minimise code maintenance and improve efficiency. To do this, you’ll need to be able to find the platform the code is running on, so that code can be called programmatically.
You can use the constant kIsWeb to check if the application is compiled for the web, and you can then use that condition to only run platform-specific code (such as the awesome_notifications package) if you’re on a platform that supports it. That way you’ll still be able to import the required packages, but only call them when the app is running on the mobile version of your app.
That should allow you to condense your codebase into one repository without sacrificing any functionality that may not work across all platforms.
In my company, we are working on a huge product. We have a repo for the Android project and also we have another repo for the iOS project.
I think it is impossible to rewrite the whole of the project in Flutter. So, something that popped in my mind but I am not sure if it is feasible. Each Android/iOS project contains many modules. I am working on a module called Enterprise. It has its own Activities, Fragments and business logic. So, my question is, Am I able to consider this module as a black box (it has a few inputs that are coming from the other modules and a few outputs that will be presented in the app module) and make it by Flutter. Then I will use its .aar version in the Android project as well as the iOS project.
Does an implementation like this is feasible?
Okay, I found Flutter is thinking of a way to solve this issue. I found two links that might be useful to you, too:
Add Flutter to existing apps. According to this page, "The "add-to-app" support is in preview, and is so far only available on the master channel.".
Integrating Flutter into an Existing App.
I will be more than happy to accept your answer if you have a better approach.
I have two similar iPhone and Android Apps (2 each) in the near future we will be combining/merging the best of these two Apps into one App. The App does have a user login that would need to be combined, but a common data file, so authentication should not be an issue. How do I deploy the combined App via the App Store and Google Market for users of the existing Apps? How can I phase the old out and let users know about the new merged App? I thought we could build the MOTHER App and deploy it as a version release in the App Store and Market, but can I deploy the same App version for two separate Apps? For the sake of an example, think of it as Bank of America merging their Apps with CitiBank under a single brand (CitiMobile is now BofA Mobile)
Thanks in advance your your valuable insight.
Merging two apps into one is actually quite simple in android do to the loosely coupled nature of the system. However, you may also consider remaining two apps that can talk to one another with a central content provider and broadcast intents, effectively using your own API.
If one app is the way to go, I would recommend making the super app and deploying it on the market, and deploy a "version" of the two original apps that informs the user what is going on and then points them to the Android Market for the super app.
The other way to do it is to deploy two copies of the super app one replacing each sub app, but that is way more hassle in the long run.
As far as iPhone goes, I can not speak to that.
I've been digging around stack overflow for a solution to maintaining multiple iOS applications out of a single repository, but have only found things that address lite vs paid versions (such as: Efficiently build two versions of an Iphone app from a single Xcode project? and How do I manage building a Lite vs Paid version of an iPhone app?).
What I've been trying to find is a way to create an application that basically has different themes. They would function almost identically, but would have different names/images/colors and would pull from different web service URLs (but would receive the same response format, just different data).
I currently use git for my source management and am looking to leverage newsstand for this application.
Does anyone have any experience with this or could point me in the right direction?
A single XCode project can have multiple Targets, each Target with its own Build settings, source file selection, and C preprocessor defines. Between including different source files and using different defines, one can have almost any combination of paid/lite versions, apps with customized themes, or even multiple completely different iOS apps inside one project. Then just check the whole project directory into one repository.