android9系統android studio專案改成用android.mk編譯參考v7包第三方jar包,aar檔案和so庫檔案
原檔案在:\vendor\..\package\DVR
打包apk在:\out\target\product\msm8953_64\system\app\DVR
專案放進系統中編譯前提是APP 本身已能正常在對應系統中使用了,只是現在需要用mmm編譯到系統包中
先用android studioMake project成功后,Clean Project專案,清除不用的內容

然后把專案整個復制到\vendor\..\package\下
進入專案根目錄,新建一個android.mk檔案
android.mk語法請自行百度
以下是本專案,需要參考v7支持,第三方jar包,aar檔案和so庫檔案
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
# ------- alex --------------1-------------
# support包的根目錄,因為編譯時我們只能參考來自于framework的support包
support_library_root_dir := frameworks/support
# 是否開啟混淆
LOCAL_PROGUARD_ENABLED := disabled
# 設定src
LOCAL_SRC_FILES := $(call all-java-files-under,app/src)
# 指定 res 目錄
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, app/src/main/res) \
$(support_library_root_dir)/v7/appcompat/res
# 指定Manifest檔案 不能寫成$(LOCAL_PATH)/app/src/main/AndroidManifest.xml
LOCAL_MANIFEST_FILE := app/src/main/AndroidManifest.xml
# 重復資源自動覆寫 不然會報 Resource at AppTheme appears in overlay but not in the base package; use <add-resource> to add
LOCAL_AAPT_FLAGS := --auto-add-overlay \
--extra-packages android.support.v7.appcompat
#LOCAL_STATIC_ANDROID_LIBRARIES := \
# android-support-compat \
# android-support-v4 \
# android-support-v7-appcompat
# 依賴包
LOCAL_STATIC_JAVA_LIBRARIES := \
android-common \
android-support-v4 \
android-support-v7-appcompat \
gson-2.7 \
reactive-streams \
rxandroid \
rxjava-2.2.1
# 依賴庫,aar
LOCAL_STATIC_JAVA_AAR_LIBRARIES := qcar_encoder
# 依賴so庫檔案
LOCAL_PREBUILT_JNI_LIBS := \
app/libs/arm64-v8a/libmmqcar_ais_client.so \
app/libs/arm64-v8a/libmmqcar_qcar_jni.so \
app/libs/arm64-v8a/libqcaraudiorecorder.so \
app/libs/arm64-v8a/libqcarimageprocess.so \
app/libs/arm64-v8a/libqcarlibyuv.so \
app/libs/arm64-v8a/libqcarmdvxread.so \
app/libs/arm64-v8a/libqcarmdvxwrite.so \
app/libs/arm64-v8a/libqcarosd.so \
app/libs/arm64-v8a/libqcarprotobbtrp.so
LOCAL_MODULE_TAGS := optional
#放開這個,打包不報錯,但閃退
LOCAL_USE_AAPT2 := true
# -------------------- end1 -----------------------------
LOCAL_PACKAGE_NAME := DVR
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := false
include $(BUILD_PACKAGE)
# ------- alex --------------2-------------
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := gson-2.7:app/libs/gson-2.7.jar \
reactive-streams:app/libs/jar/reactive-streams-1.0.2.jar \
rxandroid:app/libs/jar/rxandroid.jar \
rxjava-2.2.1:app/libs/jar/rxjava-2.2.1.jar
# 構建依賴的aar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += qcar_encoder:app/libs/qcar_encoder.aar
include $(BUILD_MULTI_PREBUILT)
# -------------------- end2 -----------------------------
# Use the following include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))
其間遇到的問題
https://blog.csdn.net/m0_37622302/article/details/115519255
https://blog.csdn.net/m0_37622302/article/details/115519731
https://blog.csdn.net/m0_37622302/article/details/115519877
https://blog.csdn.net/m0_37622302/article/details/115520128
https://blog.csdn.net/m0_37622302/article/details/115520330
全部解決完后,激動的我想喝一杯,終于搞定android.mk,千言萬語一句話感恩前輩在網路中的分享,
參考:
https://www.jianshu.com/p/511a8247c859
https://www.jianshu.com/p/63715928063b
感覺對您有用或有啟發的麻煩點個贊,感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/274091.html
標籤:其他
上一篇:Android接入高德地圖SDK時報錯JNI DETECTED ERROR IN APPLICATION: fid == null
下一篇:Android學習筆記之探究碎片
