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 중국어 웹사이트의 기타 관련 기사를 참조하세요!