Enable LogCat on Release Build in Android Studio

AndroidLogcat

Android Problem Overview


By default, when I change Build Variants to release I don't get any Logs on the logcat, but I do need to read release logs of my app, how can I enable this?

Android Solutions


Solution 1 - Android

Add android:debuggable="true" (default is false) to your Manifest inside the <application> tag.

From the docs:

> android:debuggable
Whether or not the application can be debugged, > even when running on a device in user mode — "true" if it can be, and > "false" if not.

respectively

> You can disable debugging by removing the android:debuggable attribute > from the tag in your manifest file, or by setting the > android:debuggable attribute to false in your manifest file.

Edit

You may need to add the following to your build.gradle file inside the android{...} tag:

lintOptions {
   checkReleaseBuilds false
}

And as a side-note: Right on the device the Logs are always written, no matter if your application's debuggable is set to false or true. But via the LogCat in Android Studio it's only possible if debuggable is set to true. (Just tested this)

Solution 2 - Android

You should add

android {
    buildTypes {
        release {
            debuggable true

In this case you can use Log. or System.out.println and see logs.

If you cannot run release version (app is disabled), and error is shown: "apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog", see https://stackoverflow.com/questions/25001479/app-release-unsigned-apk-is-not-signed.

Solution 3 - Android

I do not like the other solution because then you are not testing how the App really is deployed.

A better solution is to open the Android Device Monitor where you can see the logs even when in release configuration with debuggable=false.

Find it here:

> Tools -> Android -> Android Device Monitor

Update:
Android Device Monitor was removed in Android Studio 3.2. However, it is still present in SDK, and you can use it to see the logs (it is located in $ANDROID_SDK/tools/)

Solution 4 - Android

debuggable true in build.gradle works well, except that BuildConfig.DEBUG is also going to be true. This might be a problem if your app relies on BuildConfig.DEBUG to do something only when it's a debug build.

In such a case, try Log.wtf(BuildConfig.APPLICATION_ID, "something went wrong"), which will print to logcat even if it's a release build.

Solution 5 - Android

This approach will obviously help you to get logs while testing the production build. But be careful while uploading your app to Google Play Store, Toggle debuggable to false before uploading to production.

buildTypes {
    debug {
        manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
    }
    release {
        manifestPlaceholders = [crashlyticsCollectionEnabled: "false"]
        lintOptions {
            checkReleaseBuilds false
            abortOnError false
        }
        shrinkResources true
        minifyEnabled true
        debuggable true
        signingConfig signingConfigs.productionrelease
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

set crashlyticsCollectionEnabled to false to avoid your crashes to report to Google Play-Store while debugging.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChristopher FranciscoView Question on Stackoverflow
Solution 1 - AndroidreVerseView Answer on Stackoverflow
Solution 2 - AndroidCoolMindView Answer on Stackoverflow
Solution 3 - AndroidMorten HolmgaardView Answer on Stackoverflow
Solution 4 - AndroidsolamourView Answer on Stackoverflow
Solution 5 - AndroidAli UsmanView Answer on Stackoverflow