On the mobile side, as I mentioned earlier, you're creating an executable binary for your native platform. This also means that you have to have very specific infrastructure requirements in the environment that you're going to be building. Whether you're doing this locally, like manually on your Mac computer, or whether you're doing this in a CICD environment, you're going to need to have Mac hardware for iOS builds. You're also going to need to have specific versions of Xcode and Android SDK installed in your environment in order to actually build your mobile app.
There's very specific build types that you have to select from, and you need to make sure that you're versioning each build properly, because different versions are required as you update your application. And you're going to want to be able to keep track of which version of the application that you're building and how that connects back to the version of your code base. The biggest difference though when it comes to building your mobile app is going to be the code signing process.
I mentioned build types. For Android, there's debug and release build types. For iOS, there is simulator, development, ad hoc, App Store, and enterprise. Ultimately you're going to need an App Store build in order to actually release to TestFlight or the App Store. On Android, you're going to need a release build if you do want to release to either beta or production testing tracks, and then also release. Otherwise, the other build types are useful for various types of testing and development.
I mentioned code signing. So code signing, what it does is it actually validates the identity of the signer, as well as what devices it can run on, and from a security perspective, it ensures that the app binary has not been altered or modified since the time that it was signed. Signing your Android app involves two credentials. You have an upload key that's generated locally on your machine, and what that does is it's actually used during the build process to generate what's called a signed bundle. This is a .keystore or a .jks file. There's also an app signing key, and this is actually typically generated by Google, and it's used by Google to sign your app after you've uploaded it to the app store, but before it's delivered to users. You don't need this in your build environment, so it's not required if you're doing a CI City pipeline for your build. This is something that happens within the Google Play process.
For iOS, you have two credentials, a signing certificate, which validates the identity of who generated that authorized build, and then also provisioning profile that states what devices a signed bundle can run on. If you're doing an app store build and you have what's called a distribution provisioning profile, meaning that the app can run on any device, but as I mentioned, for those ad hoc builds, you do have to specify which devices they can run on, and that's when you'll need to have a specific provisioning profile that lists out all those devices. Both of these credentials, actually all of these credentials, need to be in your environment when you go to build your application.
So once your application has been built and signed, it's ready for deployment. We talk about deployment, we talk about the process of actually getting the app to users, right? So for web, all you have to really do is put the files on the server. That's it. I remember, I used to use FTPZilla back in the day and just kind of drag the new build file folder over and replace the previous one, and then once that was complete, all of your users have that new version of your web app. You have control over when your app is deployed.
Comments