Problème de chargement de bibliothèque native dans la configuration Apex à partir de Go
Le but de cette question est de comprendre pourquoi une implémentation Go qui ajoute dynamiquement une bibliothèque au tableau native_shared_libs dans une configuration Apex n'entraîne pas la génération du fichier .so compilé.
Le fichier Go écrit définit une instruction conditionnelle qui vérifie le DeviceName dans la configuration Android. Si le nom du périphérique correspond à la condition spécifiée, une bibliothèque nommée libabcxtractor est ajoutée au tableau native_shared_libs. Ceci est destiné à ajouter la bibliothèque à la configuration Apex au moment de la construction.
Cependant, le problème survient en raison d'un oubli dans l'implémentation de Go. Reflection in Go autorise uniquement l'accès aux champs de structure exportés, qui sont ceux qui commencent par une lettre majuscule. Dans le fichier Go fourni, le nom du champ native_shared_libs dans la première structure est défini en minuscules.
Par conséquent, lorsque le processus de construction utilise la réflexion pour accéder à la structure props, il est incapable de trouver le champ native_shared_libs. Cela empêche le système de build d'incorporer les bibliothèques ajoutées dans la configuration Apex.
Pour résoudre ce problème, le nom du champ native_shared_libs doit être remplacé par Native_shared_libs afin qu'il commence par une lettre majuscule. Cela en fera un champ exporté accessible par réflexion.
Après avoir effectué cette modification dans le fichier Go, le processus de construction devrait pouvoir accéder avec succès au champ Native_shared_libs, ajouter libabcxtractor au tableau et ainsi ajouter la bibliothèque. à la configuration Apex. Le fichier .so compilé attendu pour libabcxtractor doit ensuite être généré dans le répertoire de sortie de build.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!