Solução de problemas

Nesta seção, você encontrará a solução de alguns problemas comuns na integração do SDK da plataforma Unico IDCloud em seus aplicativos Android


Ofuscação de código


O material de ofuscação tem por motivação servir de auxilio para o desenvolvedor passar pelos problemas de ofuscação em seu aplicativo.

O ofuscador do cliente pode afetar o funcionamento do SDK, é necessário que o mesmo não ofusque o código do 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 a SDK Adroid na aplicação podem ocorrer falhas.

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** { *; }

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:

  1. Abrir arquivo Podfile;

  2. Inserir as linhas a seguir após comando post_install do |installer| e antes do ultimo end:

    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

    2.1. Caso já haja algum código, insira antes do trecho existente;

    2.2. Caso já faça a remoção do bitcode manualmente, adicionar os caminhos explicitamente citados em framework_paths;

  3. Caso não haja o comando post_install do |installer| no arquivo Podfile, inserir-lo confrme a seguir antes do último end:

    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.

Atualizado

Institucional

Sobre nós

Copyright © 2024 unico. All rights reserved