Android studio signing certificate

Signing Your Applications

In this document

See also

Android requires that all apps be digitally signed with a certificate before they can be installed. Android uses this certificate to identify the author of an app, and the certificate does not need to be signed by a certificate authority. Android apps often use self-signed certificates. The app developer holds the certificate’s private key.

Signing Overview

You can sign an app in debug or release mode. You sign your app in debug mode during development and in release mode when you are ready to distribute your app. The Android SDK generates a certificate to sign apps in debug mode. To sign apps in release mode, you need to generate your own certificate.

Signing in Debug Mode

In debug mode, you sign your app with a debug certificate generated by the Android SDK tools. This certificate has a private key with a known password, so you can run and debug your app without typing the password every time you make a change to your project.

Android Studio signs your app in debug mode automatically when you run or debug your project from the IDE.

You can run and debug an app signed in debug mode on the emulator and on devices connected to your development manchine through USB, but you cannot distribute an app signed in debug mode.

By default, the debug configuration uses a debug keystore, with a known password and a default key with a known password. The debug keystore is located in $HOME/.android/debug.keystore, and is created if not present. The debug build type is set to use this debug SigningConfig automatically.

For more information about how to build and run apps in debug mode, see Building and Running.

Signing in Release Mode

In release mode, you sign your app with your own certificate:

  1. Create a keystore. A keystore is a binary file that contains a set of private keys. You must keep your keystore in a safe and secure place.
  2. Create a private key. A private key represents the entity to be identified with the app, such as a person or a company.

Add the signing configuration to the build file for the app module:

  • Invoke the assembleRelease build task from Android Studio.
  • The package in app/build/apk/app-release.apk is now signed with your release key.

    Note: Including the passwords for your release key and keystore inside the build file is not a good security practice. Alternatively, you can configure the build file to obtain these passwords from environment variables or have the build process prompt you for these passwords.

    To obtain these passwords from environment variables:

    To have the build process prompt you for these passwords if you are invoking the build from the command line:

    After you complete this process, you can distribute your app and publish it on Google Play.

    Warning: Keep your keystore and private key in a safe and secure place, and ensure that you have secure backups of them. If you publish an app to Google Play and then lose the key with which you signed your app, you will not be able to publish any updates to your app, since you must always sign all versions of your app with the same key.

    The rest of this document provides detailed instructions about how to generate a private key and sign your apps in release mode with Android Studio.

    Signing Android Wear Apps

    When publishing Android Wear apps, you package the wearable app inside of a handheld app, because users cannot browse and install apps directly on the wearable. Both apps must be signed. For more information on packaging and signing Android Wear apps, see Packaging Wearable Apps.

    Signing Your App in Android Studio

    To sign your app in release mode in Android Studio, follow these steps:

      On the menu bar, click Build >Generate Signed APK.

    On the Generate Signed APK Wizard window, click Create new to create a new keystore.

    If you already have a keystore, go to step 4.

    On the New Key Store window, provide the required information as shown in figure 1.

    Your key should be valid for at least 25 years, so you can sign app updates with the same key through the lifespan of your app.

    Читайте также:  Как переустановить dexp андроид

    Figure 1. Create a new keystore in Android Studio.

    On the Generate Signed APK Wizard window, select a keystore, a private key, and enter the passwords for both. Then click Next.

    Figure 2. Select a private key in Android Studio.

    On the next window, select a destination for the signed APK and click Finish.

    Figure 3. Generate a signed APK in Android Studio.

    Automatically Signing Your App

    In Android Studio, you can configure your project to sign your release APK automatically during the build process:

    1. On the project browser, right click on your app and select Open Module Settings.
    2. On the Project Structure window, select your app’s module under Modules.
    3. Click on the Signing tab.

    Select your keystore file, enter a name for this signing configuration (as you may create more than one), and enter the required information.

    Figure 4. Create a signing configuration in Android Studio.

    Under Signing Config, select the signing configuration you just created.

    Figure 5. Select a signing configuration in Android Studio.

    You can also specify your signing settings in Gradle configuration files. For more information, see Configuring Gradle Builds.

    Signing Considerations

    You should sign all of your apps with the same certificate throughout the expected lifespan of your applications. There are several reasons why you should do so:

    • App upgrade: When the system is installing an update to an app, it compares the certificate(s) in the new version with those in the existing version. The system allows the update if the certificates match. If you sign the new version with a different certificate, you must assign a different package name to the application—in this case, the user installs the new version as a completely new application.
    • App modularity: Android allows apps signed by the same certificate to run in the same process, if the applications so requests, so that the system treats them as a single application. In this way you can deploy your app in modules, and users can update each of the modules independently.
    • Code/data sharing through permissions: Android provides signature-based permissions enforcement, so that an app can expose functionality to another app that is signed with a specified certificate. By signing multiple apps with the same certificate and using signature-based permissions checks, your apps can share code and data in a secure manner.

    If you plan to support upgrades for an app, ensure that your key has a validity period that exceeds the expected lifespan of that app. A validity period of 25 years or more is recommended. When your key’s validity period expires, users will no longer be able to seamlessly upgrade to new versions of your application.

    If you plan to publish your apps on Google Play, the key you use to sign these apps must have a validity period ending after 22 October 2033. Google Play enforces this requirement to ensure that users can seamlessly upgrade apps when new versions are available.

    Securing Your Private Key

    Maintaining the security of your private key is of critical importance, both to you and to the user. If you allow someone to use your key, or if you leave your keystore and passwords in an unsecured location such that a third-party could find and use them, your authoring identity and the trust of the user are compromised.

    If a third party should manage to take your key without your knowledge or permission, that person could sign and distribute apps that maliciously replace your authentic apps or corrupt them. Such a person could also sign and distribute apps under your identity that attack other apps or the system itself, or corrupt or steal user data.

    Your private key is required for signing all future versions of your app. If you lose or misplace your key, you will not be able to publish updates to your existing appn. You cannot regenerate a previously generated key.

    Your reputation as a developer entity depends on your securing your private key properly, at all times, until the key is expired. Here are some tips for keeping your key secure:

    • Select strong passwords for the keystore and key.
    • Do not give or lend anyone your private key, and do not let unauthorized persons know your keystore and key passwords.
    • Keep the keystore file containing your private key in a safe, secure place.

    In general, if you follow common-sense precautions when generating, using, and storing your key, it will remain secure.

    Expiry of the Debug Certificate

    The self-signed certificate used to sign your application in debug mode has an expiration date of 365 days from its creation date. When the certificate expires, you will get a build error.

    To fix this problem, simply delete the debug.keystore file. The default storage location is in

    /.android/ on OS X and Linux, in C:\Documents and Settings\ \.android\ on Windows XP, and in C:\Users\ \.android\ on Windows Vista and Windows 7.

    The next time you build, the build tools will regenerate a new keystore and debug key.

    Note that, if your development machine is using a non-Gregorian locale, the build tools may erroneously generate an already-expired debug certificate, so that you get an error when trying to compile your application. For workaround information, see the troubleshooting topic I can’t compile my app because the build tools generated an expired debug certificate.

    Signing Your App Manually

    You do not need Android Studio to sign your app. You can sign your app from the command line using standard tools from the Android SDK and the JDK. To sign an app in release mode from the command line:

    Generate a private key using keytool . For example:

    This example prompts you for passwords for the keystore and key, and to provide the Distinguished Name fields for your key. It then generates the keystore as a file called my-release-key.keystore . The keystore contains a single key, valid for 10000 days. The alias is a name that you will use later when signing your app.

    Compile your app in release mode to obtain an unsigned APK.

    Sign your app with your private key using jarsigner :

    This example prompts you for passwords for the keystore and key. It then modifies the APK in-place to sign it. Note that you can sign an APK multiple times with different keys.

    Verify that your APK is signed. For example:

    Align the final APK package using zipalign .

    zipalign ensures that all uncompressed data starts with a particular byte alignment relative to the start of the file, which reduces the amount of RAM consumed by an app.

    Источник

    Authenticating Your Client

    Certain Google Play services (such as Google Sign-in and App Invites) require you to provide the SHA-1 of your signing certificate so we can create an OAuth2 client and API key for your app.

    Using Play App Signing

    If you’ve published your app using Play App Signing, a requirement when using Android App Bundle, you can get your SHA-1 from the Google Play Console on the Release > Setup > App Integrity page.

    Self-signing Your Application

    If you’re not using Play App Signing, follow the instructions below to use Keytool or Gradle’s Signing Report to get your SHA-1.

    Using Keytool on the certificate

    Open a terminal and run the keytool utility provided with Java to get the SHA-1 fingerprint of the certificate. You should get both the release and debug certificate fingerprints.

    To get the release certificate fingerprint:

    To get the debug certificate fingerprint:

    The keytool utility prompts you to enter a password for the keystore. The default password for the debug keystore is android . The keytool then prints the fingerprint to the terminal. For example:

    Using Keytool on an APK or AAB

    To get the certificate of an application binary:

    Using Gradle’s Signing Report

    You can also get the SHA-1 of your signing certificate using the Gradle signingReport command:

    The signing report will include the signing information for each of your app’s variants:

    To learn more about digital signing on Android, see Signing Your Applications.

    Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

    Источник

    Signing the Android Application Package

    In Preparing an App for Release the Archive Manager was used to build the app and place it in an archive for signing and publishing. This section explains how to create an Android signing identity, create a new signing certificate for Android applications, and publish the archived app ad hoc to disk. The resulting APK can be sideloaded into Android devices without going through an app store.

    In Archive for Publishing, the Distribution Channel dialog presents two choices for distribution. Select Ad-Hoc:

    In Archive for Publishing, the Sign and Distribute. dialog presented us with two choices for distribution. Select Ad-Hoc and click Next:

    Create a New Certificate

    After Ad-Hoc is selected, Visual Studio opens the Signing Identity page of the dialog as shown in the next screenshot. To publish the .APK, it must first be signed with a signing key (also referred to as a certificate).

    An existing certificate can be used by clicking the Import button and then proceeding to Sign the APK. Otherwise, click the click the + button to create a new certificate:

    The Create Android Key Store dialog is displayed; use this dialog to create a new signing certificate that can be used for signing Android 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:\Users\USERNAME\AppData\Local\Xamarin\Mono for Android\Keystore\ALIAS\ALIAS.keystore

    For example, using chimp as the alias, the above steps would create a new signing key in the following location:

    C:\Users\USERNAME\AppData\Local\Xamarin\Mono for Android\Keystore\chimp\chimp.keystore

    The AppData folder is hidden by default and you may need to unhide it to access it.

    In addition, be sure to back up the resulting keystore file and password in a safe place – it is not included in the Solution. If you lose your keystore file (for example, because you moved to another computer or reinstalled Windows), you will be unable to sign your app with the same certificate as previous versions.

    For more information about the keystore, see Finding your Keystore’s MD5 or SHA1 Signature.

    After clicking Ad-Hoc, Visual Studio for Mac opens the Android Signing Identity 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 a certificate). If a certificate already exists, click the Import an Existing Key button to import it and then proceed to Sign the APK Otherwise, click the Create a New Key button to create a new certificate:

    The Create New Certificate dialog is used to create a new signing certificate that can be used for signing Android applications. Click OK after entering in the necessary information:

    The resulting keystore resides in the following location:

    For example, the above steps might create a new signing key in the following location:

    Be sure to back up the resulting keystore file and password in a safe place – it is not included in the Solution. If you lose your keystore file (for example, because you moved to another computer or reinstalled macOS), you will be unable to sign your app with the same certificate as previous versions.

    For more information about the keystore, see Finding your Keystore’s MD5 or SHA1 Signature.

    Sign the APK

    When Create is clicked, a new key store (containing a new certificate) will be saved and listed under Signing Identity as shown in the next screenshot. To publish an app on Google Play, click Cancel and go to Publishing to Google Play. To publish ad-hoc, select the signing identity to use for signing and click Save As to publish the app for independent distribution. For example, the chimp signing identity (created earlier) is selected in this screenshot:

    Next, the Archive Manager displays the publishing progress. When the publishing process completes, the Save As dialog opens to ask for a location where the generated .APK file is to be stored:

    Navigate to the desired location and click Save. If the key password is unknown, the Signing Password dialog will appear to prompt for the password for the selected certificate:

    After the signing process completes, click Open Distribution:

    This causes Windows Explorer to open the folder containing the generated APK file. At this point, Visual Studio has compiled the Xamarin.Android application into an APK that is ready for distribution. The following screenshot displays an example of the ready-to-publish app, MyApp.MyApp.apk:

    As seen here, a new certificate was added to the key store. To publish an app on Google Play, click Cancel and go to Publishing to Google Play. Otherwise click Next to publish the app ad-hoc (for independent distribution) as shown in this example:

    The Publish as Ad Hoc dialog provides a summary of the signed app before it is published. If this information is correct, click Publish.

    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 was used in the Create New Certificate dialog) and click OK:

    The APK is signed with the certificate and saved to the specified location. 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 final destination. It’s a good idea to install the APK on an Android device and try it out before distribution. See Publishing Independently for more information about publishing an ad-hoc APK.

    Next Steps

    After the application package has been signed for release, it must be published. The following sections describe several ways to publish an application.

    Источник

    Читайте также:  Как заблокировать свой айклауд с андроида
    Оцените статью