2017-05-30 10 views
0

私はいくつかのライブラリ(ネイティブライブラリ(.so)を含むaar)をChromium(詳細についてはSnapdragon最適化フォーク)に統合しようとしています。私はchrome/android/BUILD.gnを変更し、2つの依存関係を追加する必要がありましたAndroidのコードでそれを使用するためにはChromiumの依存関係として、ネイティブライブラリでアンドロイドライブラリを使用するにはどうすればよいですか?

deps = [ 
    ... 
    "//third_party/libxyz_android:libxyz_android", 
    "//third_party/libxyz_android:libxyz_android_settings", 
    ... 
] 

だから私は、third_party/libxyzディレクトリを作成してそこにAARファイルを入れて、BUILD.gnを作成する必要がありました:

import("//build/config/android/rules.gni") 

android_aar_prebuilt("libxyz_android") { 
    aar_path = "libxyz-android-release.aar" 
# proguard_configs = [ "src/proguard-gvr.txt" ] 
    ignore_manifest = true # Ignored because manifest merging is not supported (http://crbug.com/643967) 
    ignore_native_libraries = false 
} 

android_aar_prebuilt("libxyz_android_settings") { 
    aar_path = "libxyz-android-settings-release.aar" 
    ignore_manifest = true # Ignored because manifest merging is not supported (http://crbug.com/643967) 
} 

メモignore_native_libraries = falseにはlibxyzにネイティブライブラリがあります。

クロム私の建物はエラーを得ながら:

android_aar_prebuilt() with .so files is not supported. Use ignore_native_libraries = true to silence this error.

それはここから来ている: https://chromium.googlesource.com/chromium/src/build/config/+/master/android/rules.gni#2817

assert(_ignore_native_libraries || !_scanned_files.has_native_libraries, ...

は、ネイティブライブラリとaarを使用するすべての可能性は、いくつかの回避策はありかrules.gniを修正?私が自分でサポートを追加する必要がある場合 - rules.gniを編集して、ネイティブライブラリを解凍してaarのコピー先のディレクトリにコピーする必要があります(これはかなりシンプルなようです)。

更新1:ターゲット名のエラー( " - "はサポートされていません)のため、ターゲット名を変更して " - "を "_"に置き換えなければなりませんでした。

+0

これを把握しましたか? – Hades

+0

はい、サポートを追加するために 'android_rules.gni'をハックする必要がありました – 4ntoine

+1

あなたのソリューションを投稿できますか? – Hades

答えて

0

android_aar_prebuilt//build/config/android/rules.gniに変更して、適切な.soファイルをビルドディレクトリ(root_build_dir)にコピーする必要があります。

次に、android_apkターゲットに直接AARターゲットへの依存関係を追加する必要があります。最後に、ディレクティブandroid_apkにビルドディレクトリの.soファイルを追加します(これは重要です)。

GN Referenceはあなたの友人です。

関連する問題