Visual Studio For Mac Android Keystore
Tasks Dont create debug.keystore if we don't need to. Fix included on macOS in Visual Studio 2019 for Mac version 8.4 Preview 1.
In Preparing an App for Releasethe Archive Manager was used to build the app and place it in an archive forsigning and publishing. This section explains how to create an Androidsigning identity, create a new signing certificate for Androidapplications, and publish the archived app ad hoc to disk. Theresulting APK can be sideloaded into Android devices without goingthrough an app store.
In Archive for Publishing,the Distribution Channel dialog presented two choices fordistribution. Select Ad-Hoc:
In Archive for Publishing,the Sign and Distribute.. dialog presented us with two choices fordistribution. Select Ad-Hoc and click Next:
Create a New Certificate
After Ad-Hoc is selected, Visual Studio opens the SigningIdentity page of the dialog as shown in the next screenshot. Topublish the .APK, it must first be signed with a signing key (alsoreferred to as a certificate).
An existing certificate can be used by clicking the Import button and then proceeding toSign the APK. Otherwise, click the click the+ button to create a new certificate:
The Create Android Key Store dialog is displayed; use this dialogto create a new signing certificate that can use for signingAndroid applications. Enter the required information (outlined in red)as shown in this dialog:
The following example illustrates the kind of information that must be provided. Click Create to create the new certificate:
The resulting keystore resides in the following location:
C:UsersUSERNAMEAppDataLocalXamarinMono for AndroidKeystoreALIASALIAS.keystore
For example, using chimp as the alias, the above steps would create a new signingkey in the following location:
C:UsersUSERNAMEAppDataLocalXamarinMono for AndroidKeystorechimpchimp.keystore
Note
Be sure to back up the resulting keystore file and password in asafe place – it is not included in the Solution. If you lose yourkeystore file (for example, because you moved to another computer orreinstalled Windows), you will be unable tosign your app with the same certificate as previous versions.
For more information about the keystore, seeFinding your Keystore's MD5 or SHA1 Signature.
After clicking Ad-Hoc, Visual Studio for Mac opens the Android SigningIdentity dialog as shown in the next screenshot. To publish the .APK,it must first be signed it with a signing key (also referred to as acertificate). If a certificate already exists, click the Import anExisting Key button to import it and then proceed toSign the APK Otherwise, click the Create a NewKey button to create a new certificate:
The Create New Certificate dialog is used to create a new signingcertificate that can be used for signing Android applications. ClickOK after entering in the necessary information:
The resulting keystore resides in the following location:
~/Library/Developer/Xamarin/Keystore/alias/alias.keystore
For example, the above steps might create a new signingkey in the following location:
~/Library/Developer/Xamarin/Keystore/chimp/chimp.keystore
Note
Be sure to back up the resulting keystore file and password in asafe place – it is not included in the Solution. If you lose yourkeystore file (for example, because you moved to another computer orreinstalled macOS), you will be unable tosign your app with the same certificate as previous versions.
For more information about the keystore, seeFinding your Keystore's MD5 or SHA1 Signature.
Sign the APK
When Create is clicked, a new key store (containing a newcertificate) will be saved and listed under Signing Identity as shownin the next screenshot. To publish an app on Google Play, clickCancel and go toPublishing to Google Play.To publish ad-hoc, select the signing identity to use for signing andclick Save As to publish the app for independent distribution. Forexample, the chimp signing identity (created earlier) is selectedin this screenshot:
Next, the Archive Manager displays the publishing progress. Whenthe publishing process completes, the Save As dialog opens to askfor a location where the generated .APK file is to bestored:
Navigate to the desired location and click Save. If the keypassword is unknown, the Signing Password dialog will appear toprompt for the password for the selected certificate:
After the signing process completes, click Open Distribution:
This causes Windows Explorer to open the folder containing thegenerated APK file. At this point, Visual Studio has compiled theXamarin.Android application into an APK that is ready for distribution.The following screenshot displays an example of the ready-to-publishapp, MyApp.MyApp.apk:
Ecostar usb software. As seen here, a new certificate was added to the key store. To publishan app on Google Play, click Cancel and go toPublishing to Google Play.Otherwise click Next to publish the app ad-hoc (for independentdistribution) as shown in this example:
The Publish as Ad Hoc dialog provides a summary of the signed appbefore it is published. If this information is correct, clickPublish.
The Output APK file dialog will save the APK to the path specified. Click Save.
Next, enter the password for the certificate (the password that wasused in the Create New Certificate dialog) and click OK:
The APK is signed with the certificate and saved to the specifiedlocation. Click Reveal in Finder:
This opens the finder to the location of the signed APK file:
The APK is ready to copy from the finder and send to its finaldestination. It's a good idea to install the APK on an Android deviceand try it out before distribution. SeePublishing Independentlyfor more information about publishing an ad-hoc APK.
Next Steps
After the application package has been signed for release, it must bepublished. The following sections describe several ways to publishan application.
When you create an application using Xamarin.Android (or even if you use other tools such as Android Studio), it’s necessary to sign the application package (APK) to publish your application on the Google Play Store.
If you don’t know how how to proceed, Xamarin has published a step-by-step tutorial which explains how to achieve this goal.
This article is very useful when your application is finished, because it explains how to use the built-in tools to archive, sign and distribute your application.
But when you’re still in the development phase (e.g. to implement and test push notifications), it’s not convenient to use this workflow.
Fortunately, a more simple way to reach the same goal exist and is very easy to implement. Let’s take a look to this process.
Create a new keystore/certificate
The first step to sign an application is to generate a keystore, the container for the certificate associated to your application.
There are different ways to generate a keystore (e.g. command-line tools), but my preferred way is to use the GUI available in Xamarin Studio. To access this screen, go to Xamarin Studio > Preferences > Android Signing Keys.
This screen lists all the keystores that you created on your computer. You are also able to import an existing keystore, or generate a new one by clicking to Create a new key.
When you create a new new key, you just have to complete some information on who you are (firstname, lastname, organisation…) and the security of your certificate (alias, password and validity).
Once you created the new key, it’s stored in the folder ~/Library/Developer/Xamarin/Keystore/Your-Alias (if you’re using a Mac).
Sign your package with the keystore
The second (and last) step to sign your package is to associate the keystore to your project.
Once your project is open in Xamarin Studio, go to Project Options > Android Package Signing.
Check the box labeled “Sign the .APK file using the following keystore details” and fill the details with information used when you created the keystore.
If you have used the GUI to create the keystore, you probably noticed that there’s only one password value while there are 2 values (keystore password and alias password) in this screen. The GUI use the same value for both fields, but it’s possible to use different values if you use command-line tools.
Please note that it’s possible to use different keystores for debug and release modes. You can switch between these modes using the configuration list on the top of the dialog box.