Heim >Backend-Entwicklung >Golang >Warum hängt mein Go-Bedingungscode keine Bibliothek an Apex_Defaults an?
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>
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>
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!