Saltar al contenido principal
Version: 2.0.X

Migrar de la versión 1.4.X a la 2.0.X

1. Introducción

⚠️ El siguiente documento contiene diferentes problemas que pueden aparecer durante la migración de SDK Mobile 1.4.X versión a SDK Mobile 2.0.X versión. Dependiendo de la aplicación del desarrollador y su configuración.

2. Posibles issues

2.1 Upgrading compileSDKVersion

Error

Due to an older compileSDKVersion configuration, with this new version can appear this error:

Execution failed for task ':app:checkDebugAarMetadata'.

A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction
One or more issues found when checking AAR metadata values:

Dependency 'androidx.navigation:navigation-common:2.7.7' requires 'compileSdkVersion' to be set to 34 or higher.

Compilation target for module ':app' is 'android-33'

Dependency 'androidx.navigation:navigation-runtime:2.7.7' requires 'compileSdkVersion' to be set to 34 or higher.

Compilation target for module ':app' is 'android-33'

Dependency 'androidx.navigation:navigation-common-ktx:2.7.7' requires 'compileSdkVersion' to be set to 34 or higher.

Compilation target for module ':app' is 'android-33'

Solución

Change in your application the minimum SDK version to 24:

defaultConfig {
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
minSdkVersion 24
targetSdkVersion flutter.targetSdkVersion // targetSdkVersion 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}

2.2 Upgrading Gradle Build Tools

Error

  Caused by: org.gradle.api.internal.artifacts.transform.TransformException: Execution failed for DexingNoClasspathTransform: /Users/username/.gradle/caches/transforms-3/e7c35f0a55ff407d71f0751a9bab00dd/transformed/jetified-lottie-compose-6.4.0-runtime.jar.
at org.gradle.api.internal.artifacts.transform.DefaultTransformerInvocationFactory$1.lambda$mapResult$3(
... 2 more
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.

or

  AGPBI: {"kind":"error","text":"com.android.tools.r8.internal.YI0: Sealed classes are not supported as program classes","sources":[{"file":"/Users/username/.gradle/caches/transforms-3/e7c35f0a55ff407d71f0751a9bab00dd/transformed/jetified-lottie-compose-6.4.0-runtime.jar"}],"tool":"D8"}

Solución

In android/build.gradle file, change de gradle.build.tools to 7.4.0 or more:

 buildscript {
ext.kotlin_version = '1.8.10'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:7.4.0' // 7.4.0
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version'
}
}

In gradle-wrapper.properties file:

  distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip // 7.5-all.zip

2.3 Changing result diagnostics

Solución

This parameter errorDiagnostic:

final SdkErrorType errorDiagnostic; 

Now it’s an String in the 2.0.0 version:

final String errorDiagnostic;

2.5 android:usesCleartextTraffic

Error

/Users/lariel/proyects/sdkMobile/react-native/cocoapods-license-antonio/qashio/android/app/src/debug/AndroidManifest.xml:6:9-44 Error:
Attribute application@usesCleartextTraffic value=(true) from AndroidManifest.xml:6:9-44
is also present at [com.facephi.androidsdk:selphi_component:2.0.1] AndroidManifest.xml:8:18-54 value=(false).
Suggestion: add 'tools:replace="android:usesCleartextTraffic"' to <application> element at AndroidManifest.xml:5:5-8:50 to override.

Solución

In the AndroidManifest.xml, add:

  <?xml version='1.0' encoding='utf-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" --> ADD THIS
>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true" --> ADD THIS
tools:replace="android:usesCleartextTraffic"> --> ADD THIS

2.6 DuplicateRelativeFileException(SELPHI + VOICE // NFC)

Error:

Caused by: com.android.builder.merge.DuplicateRelativeFileException: 2 files found with path 'META-INF/versions/9/OSGI-INF/MANIFEST.MF'.
Adding a packaging block may help, please refer to

Solución:

packagingOptions {
pickFirst("**/*.so") // SELPHI + VOICE
pickFirst("META-INF/versions/9/OSGI-INF/MANIFEST.MF") // NFC
}

2.7 Upgrading Gradle Build Tools 2

Error:

java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null

OR

AGPBI: {"kind":"error","text":"java.lang.NullPointerException","sources":[{"file":"/Users/lariel/.gradle/caches/transforms-3/96df14071dd10ba319cee1b058e64410/transformed/lifecycle-livedata-core-2.8.3-runtime.jar"}],"tool":"D8"}

OR

Class 'com.facephi.core.data.SdkImage' was compiled with an incompatible version of Kotlin. The binary version of its metadata is 2.0.0, expected version is 1.8.0.
The class is loaded from /Users/lariel/.gradle/caches/transforms-3/d1de7231ad1ef5869b273e5abac6ceb3/transformed/jetified-core-2.0.2-api.jar!/com/facephi/core/data/SdkImage.class

Solución

  "AGP_VERSION": ">= 8.1.4"
"KOTLIN_VERSION": ">= 1.9.0"