Os mapas de origem permitem mapear um arquivo transformado de volta ao arquivo de origem original. O objetivo principal dos mapas de origem é ajudar na depuração e na investigação de problemas de compilações de lançamento.
Sem os mapas de origem, ao encontrar um erro na compilação da versão, você verá um stacktrace como:
TypeError: Cannot read property 'data' of undefined
at anonymous(app:///index.android.bundle:1:4277021)
at call(native)
at p(app:///index.android.bundle:1:227785)
Com os mapas de origem gerados, um stacktrace incluirá o caminho, o nome do arquivo e o número da linha do arquivo de origem original:
TypeError: Cannot read property 'data' of undefined
at anonymous(src/modules/notifications/Permission.js:15:requestNotificationPermission)
at call(native)
at p(node_modules/regenerator-runtime/runtime.js:64:Generator)
Isso permite que você faça a triagem de problemas de lançamento usando um stacktrace decifrável.
Siga as instruções abaixo para começar a usar os mapas de origem.
INFORMAÇÕES Os mapas de origem são criados no modo Release por padrão, a menos que
hermesFlagsRelease
não esteja definido. Nesse caso, os mapas de origem terão que ser habilitados.
Para fazer isso, certifique-se de que o seguinte esteja definido no arquivo Android/app/build.gradle
do seu aplicativo.
project.ext.react = [
enableHermes: true,
hermesFlagsRelease: ["-O", "-output-source-map"], // plus whichever flag was required to set this away from default
]
Se feito corretamente, você deverá ver o local de saída do mapa de origem durante a saída da compilação Metro.
Writing bundle output to:, android/app/build/generated/assets/react/release/index.android.bundle
Writing sourcemap output to:, android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
As compilações de desenvolvimento não produzem um pacote configurável e, portanto, já possuem símbolos, mas se a compilação de desenvolvimento estiver empacotada, você pode usar hermesFlagsDebug
como acima para habilitar mapas de origem.
Os mapas de origem estão desabilitados por padrão. Para habilitá-los é necessário definir uma variável de ambiente SOURCEMAP_FILE
.
Para fazer isso, dentro do Xcode vá para a fase de construção - "Bundle React Native code and images".
Na parte superior do arquivo, próximo às outras exportações, adicione uma entrada para SOURCEMAP_FILE
ao local e nome preferidos. Como abaixo:
export SOURCEMAP_FILE="$(pwd)/../main.jsbundle.map";
export NODE_BINARY=node
../node_modules/react-native/scripts/react-native-xcode.sh
Se feito corretamente, você deverá ver o local de saída do mapa de origem durante a saída da compilação Metro.
Writing bundle output to:, Build/Intermediates.noindex/ArchiveIntermediates/application/BuildProductsPath/Release-iphoneos/main.jsbundle
Writing sourcemap output to:, Build/Intermediates.noindex/ArchiveIntermediates/application/BuildProductsPath/Release-iphoneos/main.jsbundle.map
INFORMAÇÕES Você pode ler sobre a simbolização manual de um rastreamento de pilha na página de simbolização.