deploy app ios xcode debugging preprocessor release

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:

  1. Editar esquema -> ejecutar -> construir configuración: elija depurar / lanzar. Puede controlar el simulador y el estado del código de tu iPhone de prueba.

  2. 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