首頁  >  文章  >  後端開發  >  為什麼我的 Go 條件程式碼沒有將函式庫附加到 Apex_Defaults?

為什麼我的 Go 條件程式碼沒有將函式庫附加到 Apex_Defaults?

DDD
DDD原創
2024-10-28 13:21:30834瀏覽

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

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn