ios - app - release apk flutter
Xcode/iOS: ¿Cómo determinar si el código se está ejecutando en la compilación DEBUG/RELEASE? (8)
Estoy creando una aplicación que procesa datos confidenciales de tarjetas de crédito.
Si mi código se ejecuta en modo de depuración, deseo registrar estos datos en la consola y hacer algunos volcados de archivos.
Sin embargo, en la versión final de la tienda de aplicaciones (es decir, cuando se ejecuta en modo de lanzamiento), es esencial que todo esto esté desactivado (peligro de seguridad).
Intentaré responder mi pregunta lo mejor que pueda; por lo que la pregunta se convierte en "¿Es la solución la mejor o la mejor manera de hacerlo?"
// add `IS_DEBUG=1` to your debug build preprocessor settings
#if( IS_DEBUG )
#define MYLog(args...) NSLog(args)
#else
#define MYLog(args...)
#endif
Apple ya incluye un indicador DEBUG
en las compilaciones de depuración, por lo que no necesita definir el suyo propio.
También es posible que desee considerar simplemente redefinir NSLog
a una operación nula cuando no esté en modo DEBUG
, de esa manera su código será más portátil y solo puede usar las declaraciones regulares de NSLog
:
//put this in prefix.pch
#ifndef DEBUG
#undef NSLog
#define NSLog(args, ...)
#endif
En xcode 7, hay un campo bajo Apple LLVM 7.0 - preprocesamiento , que se llama " Preprocesadores Macros no utilizados en precompilación ... " Puse DEBUG delante de Debug y funciona para mí usando el siguiente código:
#ifdef DEBUG
NSString* const kURL = @"http://debug.com";
#else
NSString* const kURL = @"http://release.com";
#endif
La mayoría de las respuestas dicen que cómo configurar #ifdef DEBUG y ninguna de ellas dice cómo determinar la compilación de debug / release.
Mi opinión:
Editar esquema -> ejecutar -> construir configuración: elija depurar / lanzar. Puede controlar el simulador y el estado del código de tu iPhone de prueba.
Editar esquema -> archivar -> construir configuración: elija depurar / lanzar. Puede controlar la aplicación del paquete de prueba y el estado del código de la aplicación App Store.
La respuesta de zitao xiong es bastante similar a la que uso; También incluyo el nombre del archivo (eliminando la ruta de FILE ).
#ifdef DEBUG
#define NSLogDebug(format, ...) /
NSLog(@"<%s:%d> %s, " format, /
strrchr("/" __FILE__, ''/'') + 1, __LINE__, __PRETTY_FUNCTION__, ## __VA_ARGS__)
#else
#define NSLogDebug(format, ...)
#endif
No estoy seguro si te respondí tu pregunta, quizás podrías probar estos códigos:
#ifdef DEBUG
#define DLOG(xx, ...) NSLog( /
@"%s(%d): " /
xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__ /
)
#else
#define DLOG(xx, ...) ((void)0)
#endif
Para una solución en Swift, por favor consulte este hilo en SO.
Básicamente, la solución en Swift se vería así:
#if DEBUG
println("I''m running in DEBUG mode")
#else
println("I''m running in a non-DEBUG mode")
#endif
Además, deberá configurar el símbolo DEBUG
en la sección Swift Compiler - Custom Flags
para la tecla Other Swift Flags
través de una entrada -D DEBUG
. Vea la siguiente captura de pantalla para un ejemplo:
Solo una idea más para detectar:
DebugMode.h
#import <Foundation/Foundation.h>
@interface DebugMode: NSObject
+(BOOL) isDebug;
@end
DebugMode.m
#import "DebugMode.h"
@implementation DebugMode
+(BOOL) isDebug {
#ifdef DEBUG
return true;
#else
return false;
#endif
}
@end
agregar en el archivo puente de encabezado:
#include "DebugMode.h"
uso:
DebugMode.isDebug()
No es necesario escribir algo dentro de las propiedades de los indicadores swift.
Verifique la configuración de compilación de su proyecto en ''Apple LVM - Preprocessing'', ''Preprocessor Macros'' para la depuración para asegurarse de que se establezca ''DEBUG'' - haga esto seleccionando el proyecto y haciendo clic en la pestaña de configuración de compilación. Busque ''DEBUG'' y vea si de hecho se está configurando DEBUG.
Sin embargo, presta atención. Es posible que vea DEBUG cambiado a otro nombre de variable como DEBUG_MODE.
luego condiciona el código para DEBUG en tus archivos fuente
#ifdef DEBUG
// Something to log your sensitive data here
#else
//
#endif