Go 條件程式碼未將程式庫附加到 Apex
開發人員遇到了 Go 條件實作未將程式庫附加到 apex_defaults 的問題。以下是提供的程式碼和建議的解:
Go 程式碼:
<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>
問題:
問題:問題: 問題:
<code class="go">type props struct { Multilib struct { First struct { Native_shared_libs []string } } }</code>條件程式碼未將庫libabcextractor 附加到apex_defaults。日誌顯示條件語句正在執行,但沒有產生共享物件檔案。 解:問題出在未匯出的欄位native_shared_libs中用於反射的 props 類型中的第一個結構體。在 Go 中,反射只能存取導出的結構體字段,即以大寫字母開頭的結構體字段。 要解決此問題,開發者可以將 native_shared_libs 欄位變更為:
以上是為什麼我的 Go 條件程式碼沒有將函式庫附加到 Apex_Defaults?的詳細內容。更多資訊請關注PHP中文網其他相關文章!