>  기사  >  백엔드 개발  >  내 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>

문제:

조건부 코드가 libabcextractor 라이브러리를 apex_defaults에 추가하지 않습니다. 로그에는 조건문이 실행 중이지만 공유 객체 파일이 생성되지 않는 것으로 나타납니다.

해결책:

문제는 다음의 내보내지 않은 필드 Native_shared_libs에 있습니다. 리플렉션에 사용되는 props 유형 내의 첫 번째 구조체입니다. Go에서 리플렉션은 대문자로 시작하는 내보낸 구조체 필드에만 액세스할 수 있습니다.

이 문제를 해결하기 위해 개발자는 Native_shared_libs 필드를 다음으로 변경할 수 있습니다.

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

위 내용은 내 Go 조건부 코드가 Apex_Defaults에 라이브러리를 추가하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.