La diferencia entre las versiones de lanzamiento y depuración del apk firmado exportado en Android Studio
La depuración generalmente se denomina versión de depuración. A través de una serie de opciones de compilación, el resultado de la compilación generalmente contiene información de depuración sin ninguna optimización, lo que brinda a los desarrolladores poderosas capacidades de depuración de aplicaciones.
La versión generalmente se denomina versión de lanzamiento, que es utilizada por los usuarios. Generalmente, los clientes no pueden depurar la versión de lanzamiento. Por lo tanto, la información de depuración no se guarda. Al mismo tiempo, a menudo se realizan varias optimizaciones para lograr el código más pequeño y la velocidad óptima. Proporcionar comodidad a los usuarios.
(1) Los programas de depuración suelen ser más lentos que los programas de liberación, especialmente cuando se procesan vídeos, la liberación es mucho más rápida que la depuración. Al depurar un programa en modo de lanzamiento, a menudo encontramos variables que se han inicializado, pero cuando verificamos sus valores, encontramos que son un número aleatorio y no los valores inicializados. A veces, al monitorear las variables, no se puede encontrar la variable.
(2) Las operaciones realizadas por depuración y liberación al inicializar variables son diferentes. La depuración asigna cada byte a 0xcc, mientras que la asignación de liberación es aproximadamente aleatoria. Es la forma más sencilla y eficaz de inicializar una variable a un valor predeterminado inmediatamente después de declararla. De lo contrario, si el proyecto es grande, no podrá encontrarlo en ninguna parte. Los errores en el código pueden ignorarse en el modo de depuración sin que se noten. La mayoría de los errores de matriz fuera de límites no ocurrirán en el modo de depuración, pero quedarán expuestos en el lanzamiento, lo que es más difícil de encontrar.
(3) Solo la versión DEBUG del programa puede establecer puntos de interrupción, ejecución en un solo paso y utilizar declaraciones de salida de depuración como TRACE/ASSERT. REALEASE no contiene ninguna información de depuración, por lo que es de tamaño pequeño y se ejecuta rápido.