Skip to main content

Problemas conocidos

info

Esta página contiene los problemas conocidos que ocurren en el SDK Flutter.

Cuando es necesario, se abordan los problemas y se ponen a disposición nuevas versiones con correcciones.

Ofuscación de código

Importante

El material de ofuscación está motivado para ayudar al desarrollador a superar los problemas de ofuscación en su aplicación.

El ofuscador del cliente puede afectar el funcionamiento de la SDK, es necesario que el mismo no ofusque el código de la SDK.

Unico se exime de responsabilidad con respecto a los conflictos de ofuscación con la SDK.

La ofuscación es un proceso de transformación del bytecode en una forma menos legible por humanos, lo que dificulta la ingeniería inversa.

Este proceso consiste en eliminar informaciones relacionadas con la depuración, como tablas de variables, número de líneas y renombrar los paquetes, clases y métodos.

Al integrar la SDK Flutter en la aplicación, pueden ocurrir fallas o cierres abruptos.

Ofuscación via DexGuard

Cuando la ofuscación se realizó a través de DexGuard, al ocurrir la falla, use las reglas:

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

Ofuscación via ProGuard

Cuando la ofuscación se realizó a través de ProGuard, al ocurrir la falla, use las reglas:

-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 la ofuscación ProGuard, disponible en PoC.

Error de bitcode en la distribución de aplicaciones usando Xcode 16

Después del lanzamiento de la versión oficial de Xcode 16 el 17 de septiembre de 2024 y su uso para la distribución de aplicaciones en la App Store, encontramos un bloqueo al utilizar la SDK de iOS que señalaba el uso de bitcode en dos dependencias internas al usar Cocoapods como administrador de dependencias internas, que son DeviceProfiling y UnicoSdkLogger. Con el fin de no bloquear nuevos lanzamientos, es posible aplicar el siguiente paso a paso hasta su corrección definitiva en una futura versión de la SDK de iOS:

  1. Abrir el archivo Podfile;
  2. Insertar las siguientes líneas después del comando post_install do |installer| y antes del último 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. Si ya hay algún código, insértalo antes del fragmento existente;

2.2. Si ya se está realizando la eliminación manual del bitcode, añadir explícitamente las rutas mencionadas en framework_paths;

  1. Si no hay el comando post_install do |installer| en el archivo Podfile, insertarlo como se muestra a continuación antes del ú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

Fuente: Bitrise, Xcode 16 release notes, Stackoverflow

¿Dudas?

¿No encontró algo o aún necesita ayuda? Si ya es cliente o asociado, puede contactarnos a través del Centro de Ayuda.