I've written a small Android application using Xamarin Android. As the title suggests, I'm using Azure DevOps as CI and Release pipeline. The finally signed APK is published as a GitHub release.
Now I'd like to centralize the version information. At the moment, the Android version information in AndroidManifest.xml and GitHub release version are independent and I have to synchronize them manually.
How can I do this? Obviously, I could do something like:
Centralize version information within a single file
Read file as a build step in Azure DevOps
Pass the extracted information into the Xamarin build step and the GitHub release step.
Is there any built-in approach that comes without this manual ceremony?
I'm not sure about a built-in way but there is this extension (Mobile App Tasks for iOS and Android) for Azure DevOps which provides a 'Bump Version' function. There is a blog post and video about it here.
Related
I'm working with a client who wants to deploy multiple versions of their android application (representing DEV, TEST, UAT, PROD, etc) to the same device.
Normally, with any application, I'd prefer to promote the same compiled binary code from one environment to the next. For example, if a build passed testing in TEST, I'd like to promote that exact build (perhaps with different configs) to UAT. This would be possible if the clients test environments were different devices, but given they have the same android device running multiple versions of the app, I'm wondering if there's any kind of best practice here.
The client is using Azure DevOps. Is there an easy way to build the APK as part of an Azure build pipeline, and then change its Bundle Id, or google-services.json in a release pipeline to indicate that it's a "Dev" or "QA" version of the app?
You may try to use extension 'Mobile App Tasks for iOS and Android', this extension includes tasks to change app's version name and code or app's package name at build/release time. If the extension can not satisfy your requirement, you can refer the source code, modify it and create a custom extension. Please see how to create a custom pipleline task.
My company is trying out Flutter to create mobile applications and I'm currently in the process of trying to distribute both iOS and Android beta builds through Fabric.
The flutter plugin repo doesn't have any Fabric plugins and I can't seem to find any guides at the flutter home page nor elsewhere online on how to achieve this.
I had planned to focus first on iOS since I'm an iOS developer and figure android out later and use fastlane-match to manage my codesigning on iOS. What I've come up with so far is that I'm gonna try to create post-build-scripts discussed in this fabric guide and thus upload my builds manually after flutter builds and creates an IPA file. I'd say this is not optimal since it differs from the rest of our build setup, as in the fabric kit is not directly embedded in to our iOS project.
So I'm wondering if anybody has any experience in distributing flutter apps with Fabric and if you had any tips on how to achieve this, preferably with Fabric integrated into my iOS and android project respectively.
Edit:
For anybody interested in the solution, I ended up adding the Fabric and Crashlytics cocoapod into the generated cocoapod file by flutter and installing them via pod install. I'm not sure if that cocoapod file will get overwritten in the future as my experience with Flutter is quite limited.
After that I was able to import both Fabric and Crashlytics into my AppDelegate and Initializing the Fabric kit from there just like in a normal iOS project, as well as adding the runscript phase and plist entries as recommended by the fabric iOS install guide.
I also set the project up to use manual code signing and managed the codesigning with fastlane match.
After that I created a fastlane script that uploads to crashyltics. The build script I ended up with is:
flutter build ios --release --no-codesign
cd ios
fastlane ios beta
where ios references to my platform and beta is the name of the lane that exectues the fabric upload. The beta lane first builds with gym (to sign the IPA file) and then that signed IPA file is uploaded to crashlytics.
Fabric is now integrated to Firebase. It was deprecated after March 31, 2020. With this, you can now refer to Firebase App Distribution as an official documentation.
Flutter also has a bunch of documentation regarding distribution of Flutter applications to beta testers.
Continuous delivery with Flutter
Follow continuous delivery best practices with Flutter to make sure
your application is delivered to your beta testers and validated on a
frequent basis without resorting to manual workflows.
You can also check this blog for some useful tips and more information on Deploying Flutter apps to Firebase App Distribution using Fastlane:
Deploying Flutter app to Firebase App Distribution using Fastlane
In this article, I will be showing how to set up and deploy your
Flutter app to Firebase App Distribution with the help of
fastlane.
I am new to react-native app development. I wanted to know how can a developed app be shared between other developers without having a local dependency. Is an apple developer account needed for a test build to be shared in ios as well? How can the test build be created?. I wanted the build to be created and downloaded on any ios device or android for testing purpose and without having depending any of the local code changes.So the build downloaded should not get updated after any code change done after that.
Is there an easy way to do it?
To share a release build for Android please follow this guide Generating Signed APK.
But for iOS you gonna need a Apple Developer account, I don't know the whole process exactly.
I can't find this in any of the facebook documentation. Has anyone submitted an android app they built with react native yet?
I found this gist which outlines the process of creating a release APK file (credit to the author, marty-wang).
Once you have the release package, you should be able to upload the APK manually through the play store.
Edit 2016-06-01:
The most up to date way to handle RN builds for Android and iOS would be using Fastlane - the tooling abstracts building and uploading to both the Play store, as well as to the iOS App store/Testflight. Also allows for generation of screenshots and managing store metadata in your code base. Danial Banck has a great write up of how to do this that I personally have used myself and can highly recommend.
I'd like to be able to upload my Android application binaries from Jenkins to HockeyApp automatically, but I'm not clear on if this is possible.
I see there's a published Jenkins plug-in:
https://wiki.jenkins-ci.org/display/JENKINS/HockeyApp+Plugin
Just not sure if it works for Android. It looks like the API specifically calls for an "ipa", however, on Hockeyapp's site, they say you can stick a .apk in there. Anybody tried this?
Yes, it works.
The HockeyApp API accepts either a .apk or .ipa file in the ipa parameter, which the Jenkins plugin uses. Furthermore, the dsym parameter accepts dSYM symbols from iOS, or a ProGuard mapping.txt file for Android.
As of plugin version 1.0.4, the UI and documentation has been updated to clarify that iOS, Mac OS X and Android apps are all supported via the same plugin.