Androidのソースコードの中でAndroid studioプロジェクトをコンパイルします。
3071 ワード
参考:http://blog.csdn.net/u011913612/article/details/72732177
Android studioプロジェクト導入のソースコードのコンパイル手順:(OkhttpDemoプロジェクトを例に)1、package/appsディレクトリの下に新しいフォルダ(MyOkhttpDemoなど)を作成し、MyOkhttpDemoディレクトリの下にsrcフォルダを作成します。OkhttpDemoプロジェクトディレクトリのresフォルダをMyOkhttpDemoディレクトリ4にコピーし、OkhttpDemoプロジェクトディレクトリのcomフォルダをMyOkhttpDemoディレクトリにコピーします。MyOkhttpDemoディレクトリの下にAndroid.mkファイルを作成します。
プロジェクト全体のディレクトリは以下の通りです。ベンダーdor\amlogic\apps\MyOkhttp DemolibsフォルダsrcフォルダresフォルダAndroid.mkファイルAndroid Manifest.xmlファイル
Android.mkファイルの内容は以下の通りです。
soライブラリを導入する必要があるなら、soライブラリをlibsディレクトリの下に置くだけで、Android.mkの中でLOCAL_を通過します。SHARED_LIBREIES変数の参照が完了すればいいです。
コンパイルコマンド.build/envsetup.sh lunch cd package/apps/MyOkhttpDemo mm
adb installインストールアプリにFailure[INSTALLUFAILE DudeXOPT]が現れます。
ロゴ情報:10-13 16:22:54.447 30849-30849/?E/dex 2 oat:Failed to open dex from file descriptor for zipfile'/data/ap/comp/comp/sympmp/synk.mymytopdemo-1/base.aptk':Failed to open dexfile'/data/ ap/copppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppyyyyyyymomomomomomomomomomomomomomomomomomomoappk:0 3-10-13 16:22:54.714 352-352/?E/installd:DexInv:—END'/data/ap/comp/synnon.myokhttpdemo-1/base.apps'—status=0 x 0100,process failed
この問題が発生した原因は7.1プラットフォームでコンパイルして、appkを6.0または5.0システムにインストールします。
7.1プラットフォームでコンパイルできますが、インストールできません。(コンパイルされたjavaバージョンは1.8)6.0プラットフォーム(releaseus 905 umu 20160907)でコンパイルできます。インストールできます。正常に6.0と5.0のシステムで動作します。(コンパイルされたjavaバージョンは全部1.7です。)
Android studioプロジェクト導入のソースコードのコンパイル手順:(OkhttpDemoプロジェクトを例に)1、package/appsディレクトリの下に新しいフォルダ(MyOkhttpDemoなど)を作成し、MyOkhttpDemoディレクトリの下にsrcフォルダを作成します。OkhttpDemoプロジェクトディレクトリのresフォルダをMyOkhttpDemoディレクトリ4にコピーし、OkhttpDemoプロジェクトディレクトリのcomフォルダをMyOkhttpDemoディレクトリにコピーします。MyOkhttpDemoディレクトリの下にAndroid.mkファイルを作成します。
プロジェクト全体のディレクトリは以下の通りです。ベンダーdor\amlogic\apps\MyOkhttp DemolibsフォルダsrcフォルダresフォルダAndroid.mkファイルAndroid Manifest.xmlファイル
Android.mkファイルの内容は以下の通りです。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := GsonDemo
LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := platform
# LOCAL_SDK_VERSION := current
LOCAL_DEX_PREOPT := false
LOCAL_RESOURCE_DIR := vendor/amlogic/apps/GsonDemo/res
ifeq ($(TARGET_BUILD_APPS),)
LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
else
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
endif
LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v7-appcompat \
android-support-v4 \
libokhttp \
libokio
LOCAL_AAPT_FLAGS := \
--auto-add-overlay \
--extra-packages android.support.v7.appcompat
include $(BUILD_PACKAGE)
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
libokhttp:libs/okhttp-3.9.0.jar \
libokio:libs/okio-1.13.0.jar
include $(BUILD_MULTI_PREBUILT)
つまり、jarバッグの導入は主にLOCAL_に依存しています。PREBUILT_STATIC_JAVA_LIBRIIESとLOCAL_STATIC_JAVA_LIBARIESsoライブラリを導入する必要があるなら、soライブラリをlibsディレクトリの下に置くだけで、Android.mkの中でLOCAL_を通過します。SHARED_LIBREIES変数の参照が完了すればいいです。
コンパイルコマンド.build/envsetup.sh lunch cd package/apps/MyOkhttpDemo mm
adb installインストールアプリにFailure[INSTALLUFAILE DudeXOPT]が現れます。
ロゴ情報:10-13 16:22:54.447 30849-30849/?E/dex 2 oat:Failed to open dex from file descriptor for zipfile'/data/ap/comp/comp/sympmp/synk.mymytopdemo-1/base.aptk':Failed to open dexfile'/data/ ap/copppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppyyyyyyymomomomomomomomomomomomomomomomomomomoappk:0 3-10-13 16:22:54.714 352-352/?E/installd:DexInv:—END'/data/ap/comp/synnon.myokhttpdemo-1/base.apps'—status=0 x 0100,process failed
この問題が発生した原因は7.1プラットフォームでコンパイルして、appkを6.0または5.0システムにインストールします。
7.1プラットフォームでコンパイルできますが、インストールできません。(コンパイルされたjavaバージョンは1.8)6.0プラットフォーム(releaseus 905 umu 20160907)でコンパイルできます。インストールできます。正常に6.0と5.0のシステムで動作します。(コンパイルされたjavaバージョンは全部1.7です。)