私は次のようになってしまった:
-inアプリケーションのAndroid.mk:
LOCAL_STATIC_JAVA_AAR_LIBRARIES += coollibrary
include $(LOCAL_PATH)/java-static-lib-from-aar.mk
-java-static-lib-from-aar.mk:
define list-jar-libs-from-aar
$(foreach f, $(2), $(shell if [ -f $(LOCAL_PATH)/$(f)/$(1).aar ]; then unzip -Z1 $(LOCAL_PATH)/$(f)/$(1).aar libs/*.jar | sed 's/libs\///g; s/\.jar//g'; fi))
endef
define build-jar-lib-from-aar
$(2): $(1)
-mkdir -p $(dir $2);\
cp -fp $1 $2
endef
MY_STATIC_JAVA_LIBS := $(foreach aar,$(LOCAL_STATIC_JAVA_AAR_LIBRARIES),\
$(foreach jar, $(call list-jar-libs-from-aar,$(aar), libs aosplibs),\
$(aar)_$(jar)))
$(info Adding following java libraries from AAR(s) into LOCAL_STATIC_JAVA_LIBRARIES: $(MY_STATIC_JAVA_LIBS))
LOCAL_STATIC_JAVA_LIBRARIES += $(MY_STATIC_JAVA_LIBS)
$(foreach aar,$(LOCAL_STATIC_JAVA_AAR_LIBRARIES),\
$(foreach jar, $(call list-jar-libs-from-aar,$(aar), libs aosplibs),\
$(eval $(call build-jar-lib-from-aar,$(call intermediates-dir-for,JAVA_LIBRARIES,$(aar),,COMMON)/aar/libs/$(jar).jar,$(call intermediates-dir-for,JAVA_LIBRARIES,$(aar)_$(jar),,COMMON)/javalib.jar))))
のjava -static-lib-from-aar.mkは、AARが./libsおよびaosplibsディレクトリーに存在することを前提としています。
これは役に立ちません。 --extra-packagesの動作を確認するために、ガベージコンテンツを含む新しいmylib.jarファイルを作成し、それをAARのlibsフォルダに入れました。 libsの内容がビルドに含まれていた場合、誤った.jarファイルが原因でビルドが失敗するはずです。しかし、ビルドは成功裏に完了します。 AARファイルのAndroidManifest.xmlに定義されているように、パッケージ名を渡します。正しい? –
私はaaptフラグを含むことはあなたのビルドが適切になる間にjarファイルを含むことを伝えませんでした。私のコメントをチェックしてください: "やっているやり方は正しいです。そして、aarに含まれるjarファイルもこれに含まれます。" aaptフラグを含む適切なビルドを作成してください。まだ動作していない場合は、mkファイルをここで共有してください。 – prateekj
もちろん、AARのこのリソースがビルドに含まれていないため、LOCAL_AAPT_FLAGS + = --extra-packages your.package.nameを追加しました。もちろん、aarのclasses.jarもビルドに含まれています。問題は、AARのlibs/*。jarが自動的にビルドに組み込まれないことです。 –