2

私はカスタムAndroidシステムを構築しようとしています。そのために、別のライブラリを使用してカスタムビューをいくつか含める必要があります。このために私はAndroid.mkからAARアーカイブファイルを作成する方法

... 
LOCAL_MODULE:= com.zzz.ui 
include $(BUILD_JAVA_LIBRARY) 
... 

を使用してJavaライブラリを作成したが、これに欠点は、私はすべてのリソースを使用することはできませんし、UIのカスタマイズとレイアウト配置の全てをプログラム的に実行しなければならないことです。

これを変更してAndroidライブラリを作成して* .aarを生成し、リソースを追加したり、レイアウトファイルからいくつかの描画可能ファイルとともに直接ビューを膨張させたりしたいと思います。どうすればこれを達成できますか?

答えて

0

私の調査の後、私はこのようなものを見つけました。 http://thread.gmane.org/gmane.comp.handhelds.android.building/1020

この答えは私は私は手順を使用したい文字通り任意のモジュールからのAARを構築できることを把握することができたしかしこのことから、しかし断片的である:あなたのモジュールで

  1. はLOCAL_RESOURCE_DIRの定義を提供;ここでの問題 は、ツールチェーンが自動的にすべての のxmlファイルをコンパイル/マージしようとしているので、xmlを内部で見つけたら(有効な アンドロイドフォルダ構造と命名によって)、エラーが発生します。 回避策このあなたが「値」フォルダ 例えば特定のresフォルダに置くことができ、その後 例

    <?xml version="1.0" encoding="utf-8"?> <resources> <integer name="dummy">09</integer> </resources>

    (少なくとも1つの有効なリソースに対して、その中に非空dummy.xmlを置きます名前定義は必須)

  2. モジュール/プロジェクト用のAndroidManifest.xmlを提供します。それはリソースディレクトリ

    LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res include $(BUILD_STATIC_JAVA_LIBRARY)

  3. に静的なJavaライブラリ ターゲットのmakefileとポイントを含むように空 マニフェストは、今すぐ実行

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" package="com.android.car.vehiclenetwork" > </manifest>

  4. 変更Android.mkを行いますビルド。そのためわずかに異なるアプローチがMMMを使用するよりも必要 である(これはAOSPソースツリーの最上部レベル に起動されなければならない):

    make out/target/common/obj/JAVA_LIBRARIES/<module-name>_intermediates/javalib.aar

AAR次いでout/target/common/obj/JAVA_LIBRARIES/<module-name>_intermediates/javalib.aarに生成されます。

注:AARの作成

  1. は、javacの代わりのジャックが必要です。したがって、外部プロジェクトのコンパイルのために外部で使用するのに適したjavacコンパイルされたクラスを含むout/target/common/obj/JAVA_LIBRARIES/_intermediates/aar内のclasses.jar(pre-Mのツールチェーンのように)も生成されます。

  2. あなたはツールチェーンファイル@ビルド/コア/ static_java_library.mkを変更することができます -

    built_aar := $(intermediates.COMMON)/javalib.aar

    右の行の前に$(警告$(built_aar))を追加しますこれは、建物の、適切なすべてのモジュールが表示されますAOSPコードツリーのtopdirメイクファイルが呼び出されたときには、それ自身が異常終了します。 AOSPビルドシステムから.aarを構築するには

0

、あなたはあなたのライブラリーのためのメイクファイルを作成する必要があり、

あなたは、パッケージ名はコムでxyz.aarという名前のlibを作成するとします。 xyz.xyz、内部あなたのlibには、パッケージ名com.abc.abcで abc.aar の名前いくつかの他のAARを使用して、次にmakeファイルは、以下のようになります。 -

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

LOCAL_MODULE_TAGS := optional 

LOCAL_MODULE := xyz 

LOCAL_STATIC_JAVA_LIBRARIES :=android-common \ 
    android-support-v4 \ 
    android-support-design \ 
    android-support-v7-appcompat \ 
    android-support-design-res \ 
    android-support-v7-cardview 

LOCAL_STATIC_JAVA_AAR_LIBRARIES:= abc 

LOCAL_SRC_FILES := $(call all-java-files-under, java) 

res_dirs := res \ 

LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs)) \ 
    prebuilts/sdk/current/support/v7/cardview/res \ 
    prebuilts/sdk/current/support/v7/appcompat/res \ 
    prebuilts/sdk/current/support/design/res \ 

LOCAL_AAPT_FLAGS := \ 
    --auto-add-overlay \ 
    --extra-packages android.support.v7.cardview \ 
    --extra-packages android.support.v7.appcompat \ 
    --extra-packages android.support.design \ 
    --extra-packages com.abc.abc 


LOCAL_JACK_ENABLED := disabled 
LOCAL_PROGUARD_ENABLED := disabled 

include $(BUILD_STATIC_JAVA_LIBRARY) 

include $(CLEAR_VARS) 

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := all_static_libs 

include $(BUILD_MULTI_PREBUILT) 

include $(call all-makefiles-under,$(LOCAL_PATH)) 
上記メイクファイルで

代わりのを使用して$(BUILD_STATIC_AAR_LIBRARY)使用を含める$(BUILD_STATIC_JAVA_LIBRARY)を含めると、コマンド

下のメイクファイルの使用をコンパイルするには、変数LOCAL_MODULEに

をAAR libの名前を設定します> XYZを作る/ターゲット/共通/ OBJ/JAVA_LIBRARIES/xyz_intermediates/xyz.aar

あなたxyz.aarは場所になりますアウト/ターゲット/共通/ OBJ/JAVA_LIBRARIES/xyz_intermediates/xyz.aar