Go 条件付きコードが Apex_Defaults にライブラリを追加しないのはなぜですか?
Oct 28, 2024 pm 01:21 PMGo 条件付きコードが 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 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOの実際のパフォーマンスを正確に反映するベンチマークを作成するにはどうすればよいですか?
