J'ai un problème avec AAB lorsque je dois changer les paramètres régionaux de l'application à partir de l'application elle-même (c'est-à-dire avoir le paramètre de changement de langue à l'intérieur de l'application), le problème est que l'AAB ne me donne que les ressources linguistiques de mon appareil, par exemple:
mon appareil est équipé de langues anglaise et française, donc AAb ne me donne que les ressources pour l'anglais et le français,
mais depuis l'application elle-même, vous avez la possibilité de basculer la langue entre l'anglais, le français et l'indonésien,
dans ce cas, lorsque vous changez la langue en anglais ou en français, tout fonctionne parfaitement, mais lorsque vous la changez en indonésien, l'application entre simplement dans une boucle de blocage car elle continue de chercher la langue indonésienne mais elle ne la trouve pas.
Le problème ici est que même si j'ai redémarré l'application, elle entre à nouveau dans la boucle de crash car l'application recherche toujours les ressources linguistiques manquantes, et ici la seule solution est d'effacer l'argent ou de réinstaller quelles sont les solutions que l'utilisateur normal a gagnées ne passe pas.
Juste pour le mentionner, voici comment je change les paramètres régionaux via l'application:
// get resources
Resources res = context.getResources();
// create the corresponding locale
Locale locale = new Locale(language); // for example "en"
// Change locale settings in the app.
Android.content.res.Configuration conf = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
conf.setLocale(locale);
conf.setLayoutDirection(locale);
} else {
conf.locale = locale;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
context.getApplicationContext().createConfigurationContext(conf);
}
res.updateConfiguration(conf, null);
P.S. L'application fonctionne parfaitement lors de sa création en tant que fichier APK.
Modifier:
L'API PlayCore prend désormais en charge le téléchargement des chaînes pour une autre langue à la demande: https://developer.Android.com/guide/app -bundle/playcore # lang_resources
Solution alternative (déconseillée):
Vous pouvez désactiver le fractionnement par langue en ajoutant la configuration suivante dans votre build.gradle
Android {
bundle {
language {
// Specifies that the app bundle should not support
// configuration APKs for language resources. These
// resources are instead packaged with each base and
// dynamic feature APK.
enableSplit = false
}
}
}
Cette dernière solution augmentera la taille de l'application.
Cela n'est pas possible avec les packs d'applications: Google Play ne télécharge les ressources que lorsque les langues sélectionnées de l'appareil changent.
Vous devrez utiliser des fichiers APK si vous souhaitez disposer d'un sélecteur de langue dans l'application.