Maison > développement back-end > Golang > le corps du texte

Pourquoi mon code conditionnel Go n'ajoute-t-il pas de bibliothèque à Apex_Defaults ?

DDD
Libérer: 2024-10-28 13:21:30
original
844 Les gens l'ont consulté

Why is my Go Conditional Code Not Appending a Library to Apex_Defaults?

Le code conditionnel Go n'ajoute pas de bibliothèque à Apex

Un développeur a rencontré un problème où une implémentation conditionnelle Go n'ajoute pas de bibliothèque à apex_defaults . Vous trouverez ci-dessous le code fourni et la solution proposée :

Go Code :

<code class="go">package my_apex

import (
    "android/soong/android"
    "android/soong/apex"
    "fmt"
    "strings"
)

func globalFlags(ctx android.BaseContext) []string {
    var native_shared_libs []string
    if strings.Contains(ctx.AConfig().DeviceName(), "my_apex_device") {
        fmt.Println("Condition executed...")
        native_shared_libs = append(native_shared_libs, "libabcextractor")
    }
    return native_shared_libs
}

func myApexFlagsDefaults(ctx android.LoadHookContext) {
    type props struct {
        Multilib struct {
            First struct {
                native_shared_libs []string
            }
        }
    }
    p := &props{}
    p.Multilib.First.native_shared_libs = globalFlags(ctx)
    ctx.AppendProperties(p)
}

func myApexFlagsDefaultsFactory() android.Module {
    module := apex.DefaultsFactory()
    android.AddLoadHook(module, myApexFlagsDefaults)
    return module
}

func init() {
    fmt.Println("Registering module type...")
    android.RegisterModuleType("my_apex_defaults", myApexFlagsDefaultsFactory)
}</code>
Copier après la connexion

Problème :

Le conditionnel le code n'ajoute pas la bibliothèque libabcextractor à apex_defaults. Les journaux indiquent que l'instruction conditionnelle est en cours d'exécution, mais que le fichier objet partagé n'est pas généré.

Solution :

Le problème réside dans le champ non exporté native_shared_libs dans la première structure dans le type d'accessoires utilisé pour la réflexion. Dans Go, la réflexion ne peut accéder qu'aux champs de structure exportés, qui sont ceux commençant par une lettre majuscule.

Pour résoudre ce problème, le développeur peut modifier le champ native_shared_libs en :

<code class="go">type props struct {
    Multilib struct {
        First struct {
           Native_shared_libs  []string
        }
    }
}</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!