2017-05-02 8 views
0

自分のAndroidプロジェクトには、独自のAndroidManifest.xmlを持ついくつかのaarモジュールが含まれています。 aarのマニフェストを最終的なAndroidManifest.xmlにマージするにはどうすればよいですか?bazelでAndroidManifest.xmlをマージする方法

ありがとうございました!

マイandroid_binaryルール:私がしたいことは:base_lib年代ということです、それはbase/AndoridManifest.xml独自のを持ってい

android_library(
    name = "base_lib", 
    srcs = glob(["base/src/**/*.java"]), 
    custom_package = "com.xtbc.base", 
    manifest = "base/AndroidManifest.xml", 
    resource_files = glob(["base/res/**"], exclude=["base/res/.DS_Store"]), 
    assets = glob(["base/assets/**"], exclude=["base/assets/.DS_Store"]), 
    assets_dir = "base/assets", 
    deps = [ 
     "@androidsdk//com.android.support:support-annotations-23.0.1" 
    ] 
) 

android_binary(
    name="apk", 
    custom_package = "com.xtbc", 
    manifest_merger = "android", 
    manifest = "AndroidManifest.xml", 
    resource_files = glob(["res/**"], exclude=["res/.DS_Store"]), 
    assets = glob(["assets/**"], exclude=["assets/.DS_Store"]), 
    assets_dir = "assets", 
    multidex = "manual_main_dex", 
    main_dex_list = "mainDexList.txt", 
    dexopts = [ 
     "--force-jumbo" 
    ], 
    deps = [ 
     ":lib", 
     ":base_lib", 
     ":jni" 
    ] 
) 

:base_libは、モジュール(すなわち、android_libraryルール)でありますAndroidManifest.xmlは最終的なAndroidManifest.xml(つまり:apkのAndroidManifest.xml)にマージされます。

+0

['aar_import'](https://bazel.build/versions/master/docs/be/android.html#aar_import)は役に立ちますか? –

+0

また、['android_binary.manifest_merger'](https://bazel.build/versions/master/docs/be/android.html#android_binary.manifest_merger)に興味があります。 –

+0

@Laszloありがとうございました。私は 'manifest_merger =" android "を私のandroid_binaryルールに追加しましたが、モジュールのマニフェストはまだ最終的なAndroidManifestには含まれていないようです。私はモジュールを 'android_binary'の' deps'に入れています、間違っていますか? – ldjhust

答えて

1

私はコメントチェーンに応答するのに十分なstackoverflow評判はありませんが、exports_manifest属性がandroid_libraryであるのと同じように聞こえます。

https://bazel.build/versions/master/docs/be/android.html#android_library.exports_manifestのドキュメントによると、デフォルトは1ですが、ドキュメントはまだBazelリリースにされていないソースコードの変更に基づいています。今のところandroid_libraryexports_manifest = 1を追加する必要があります。次のBazelリリースでは、これはもはや必要ありません。

また、「AARモジュール」について:これらが事前に作成された.aarファイルの場合は、aar_importルールを使用することをお勧めします。 exports_manifest属性は、デフォルトで常にエクスポートされるため、属性はありません。これらがGradle Androidライブラリモジュールの場合は、android_libraryルールを使用できます。サポートライブラリを参照している場合、@ androidsdk // com.android.support:support-annotations-23.0.1は実際にはAARではなくJARです。

+0

OK、どうもありがとう! – ldjhust

関連する問題