Problemas conhecidos
Esta página contempla os problemas conhecidos que ocorrem no SDK Flutter.
Quando necessário, os problemas são tratados e novas releases com as correções são disponibilizadas.
Ofuscação de código
Esse material deve ser utilizado para auxiliar o desenvolvedor a não passar pelos problemas de ofuscação em seu aplicativo.
O ofuscador da cliente pode afetar o funcionamento da SDK, logo é necessário que o mesmo não ofusque o código da SDK.
A Unico se isenta da responsabilidade em relação à conflitos de ofuscação com a SDK.
O ofuscamento é um processo de transformar o bytecode em uma forma menos legível por humanos, dificultando assim a engenharia reversa.
Esse processo consiste em remover informações relacionadas a depuração como tabelas de variáveis, número de linhas e renomear os pacotes, classes e métodos.
Ao embarcar o SDK Flutter na aplicação podem ocorrer falhas ou fechamentos abruptos.
Ofuscação via DexGuard
Quando o ofuscamento foi realizado via DexGuard, ao ocorrer a falha utilize as regras:
-keep class kotlin.coroutines.**
-keep class kotlinx.coroutines.**
-keep class com.facetec.sdk.** { *; }
-keep class com.acesso.acessobio_android.** { *; }
-keep class io.unico.** { *; }
-keep class br.com.makrosystems.haven.** { *; }
-keep class HavenSDK.**{ *; }
-keep class HavenSDK** { *; }
Ofuscação via ProGuard
Quando o ofuscamento foi realizado via ProGuard, ao ocorrer a falha utilize as regras:
-keep class kotlin.coroutines.**
-keep class kotlinx.coroutines.**
-keep class com.facetec.sdk.** { *; }
-keep class com.acesso.acessobio_android.** { *; }
-keep class io.unico.** { *; }
-keep class br.com.makrosystems.haven.** { *; }
-keep class HavenSDK.**{ *; }
-keep class HavenSDK** { *; }
Para a ofuscação ProGuard, é disponibilizada uma PoC.
Erro de bitcode
na distribuição de aplicativos usando Xcode 16
Após o lançamento da versão oficial do Xcode 16 no dia 17 de setempro de 2024 e com a sua utilização para distribuição de aplicativos na AppStore, verificamos um bloqueio ao utilizar a SDK iOS sinalizando o uso de bitcode
em duas dependências internas ao utilizar o Cocoapods
como gerenciador de dependencias internas, são elas o DeviceProfiling
e UnicoSdkLogger
.
A fim de não bloquear novos lançamentos é possível aplicar o seguinte passo-a-passo até a sua definitiva correção em uma release futura da SDK iOS:
Abrir arquivo
Podfile
;Inserir as linhas a seguir após comando
post_install do |installer|
e antes do ultimoend
:bitcode_strip_path = `xcrun --find bitcode_strip`.chop!
def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
framework_path = File.join(Dir.pwd, framework_relative_path)
command = "#{bitcode_strip_path} #{framework_path} -r -o #{framework_path}"
puts "Stripping bitcode: #{command}"
system(command)
end
framework_paths = [
"Pods/unicocheck-ios/DeviceProfiling.xcframework/ios-arm64/DeviceProfiling.framework/DeviceProfiling",
"Pods/unicocheck-ios/UnicoSdkLogger.xcframework/ios-arm64/UnicoSdkLogger.framework/UnicoSdkLogger"
]
framework_paths.each do |framework_relative_path|
strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
end2.1. Caso já haja algum código, insira antes do trecho existente;
2.2. Caso já faça a remoção do
bitcode
manualmenter, adicionar os caminhos explicitamente citados emframework_paths
;Caso não haja o comando
post_install do |installer|
no arquivoPodfile
, inserir-lo confrme a seguir antes do ultimoend
:post_install do |installer|
bitcode_strip_path = `xcrun --find bitcode_strip`.chop!
def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
framework_path = File.join(Dir.pwd, framework_relative_path)
command = "#{bitcode_strip_path} #{framework_path} -r -o #{framework_path}"
puts "Stripping bitcode: #{command}"
system(command)
end
framework_paths = [
"Pods/unicocheck-ios/DeviceProfiling.xcframework/ios-arm64/DeviceProfiling.framework/DeviceProfiling",
"Pods/unicocheck-ios/UnicoSdkLogger.xcframework/ios-arm64/UnicoSdkLogger.framework/UnicoSdkLogger"
]
framework_paths.each do |framework_relative_path|
strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path)
end
Fonte: Bitrise, Xcode 16 release notes, Stackoverflow
Dúvidas?
Não encontrou algo ou ainda precisa de ajuda? Se já é um cliente ou parceiro, pode entrar em contato através da Central de Ajuda.