Warum hängt mein Go-Bedingungscode keine Bibliothek an Apex_Defaults an?

DDD
Freigeben: 2024-10-28 13:21:30
Original
844 Leute haben es durchsucht

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

Go-Bedingungscode hängt keine Bibliothek an Apex an

Ein Entwickler ist auf ein Problem gestoßen, bei dem eine Go-Bedingungsimplementierung keine Bibliothek an apex_defaults anhängt . Nachfolgend finden Sie den bereitgestellten Code und die vorgeschlagene Lösung:

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>
Nach dem Login kopieren

Problem:

Die Bedingung Der Code hängt die Bibliothek libabcextractor nicht an apex_defaults an. Die Protokolle zeigen an, dass die bedingte Anweisung ausgeführt wird, die Shared-Object-Datei jedoch nicht generiert wird.

Lösung:

Das Problem liegt im nicht exportierten Feld native_shared_libs in die erste Struktur innerhalb des Props-Typs, die für die Reflexion verwendet wird. In Go kann Reflection nur auf exportierte Strukturfelder zugreifen, also solche, die mit einem Großbuchstaben beginnen.

Um dieses Problem zu beheben, kann der Entwickler das Feld „native_shared_libs“ ändern in:

<code class="go">type props struct {
    Multilib struct {
        First struct {
           Native_shared_libs  []string
        }
    }
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum hängt mein Go-Bedingungscode keine Bibliothek an Apex_Defaults an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!