Duas maneiras de avaliar se um aplicativo Android está no modo de depuração

Duas maneiras de avaliar se um aplicativo Android está no modo de depuração


Às vezes, queremos julgar se o aplicativo é uma versão de depuração no código, para proteger ou fazer algum processamento especial, por exemplo, 1. Imprima o log; 2. Se for a informação de travamento no modo de depuração, precisamos marcá-lo, etc.

Então, como julgar o modo de depuração?

Use BuildConfig.DEBUG para avaliar

A maneira mais fácil:

BuildConfig.DEBUG

O uso de BuildConfig.DEBUG pode julgar facilmente se é um pacote Debug ou um pacote Release, para realizar o processamento lógico.

No entanto, quando nosso projeto é um SDK, esse método não é aceitável. O BuildConfig.DEBUG em nosso SDK liberado é um pacote de lançamento e BuildConfig.DEBUG é sempre falso.

Então, como julgar se o pacote onde o SDK está localizado é Debug?

Use android:debuggable para julgar

Podemos usar android:debuggable para determinar se o aplicativo está em um estado depurável e seu sinalizador correspondente é ApplicationInfo.FLAG_DEBUGGABLE:

if (0 != (getContext().getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)){
            //Debug 模式是打开状态
        }

Ele pode ser definido em build.gradle:

debug {
            debuggable true
        }

diferença entre os dois

BuildConfig.DEBUG

BuildConfig.DEBUG indica se o APP atualmente compilado é um pacote de depuração, que é gerado e definido automaticamente pelo compilador.

android:depurável

android:debuggable indica se o aplicativo pode ser depurado (mesmo quando executado em um dispositivo de modo de usuário). Defina como "true" se a depuração for possível, caso contrário, defina como "false". O valor padrão é falso".

A tag android:debuggable será eventualmente definida na tag do aplicativo no AndroidManifest:

<application android:debuggable=["true" | "false"]
. . .

Representa o estado ajustável do APP.

ligação entre os dois

BuildConfig.DEBUG está relacionado a android:debuggable: se você definir android:debuggable como false, BuildConfig.DEBUG sempre será false, independentemente de o APP ser um pacote de depuração ou não.

configurar:

debug {
            debuggable true
        }

Depois disso, o valor de BuildConfig.DEBUG é sempre false.

Acho que você gosta

Origin blog.csdn.net/u011578734/article/details/129560703
Recomendado
Clasificación