赞
踩
项目目录结构:
Android.bp
AndroidManifest.xml
Android.mk
assets
libs
res
src
第三方 aar 包 :phg_lib.aar
第三方 jar 包 : phg_test.jar
Android.bp 编写:
android_library_import { // 预编译 aar 包 name: "phglib", aars: ["libs/phg_lib.aar"], sdk_version: "current", } java_import { // 预编译 jar 包 name: "phgtest", jars: ["libs/phg_test.jar"], sdk_version: "current", } android_app { name: "PHG_APP", certificate: "platform", srcs: ["src/**/*.java", ], static_libs: [ "phglib", // 引用 aar 包 "phgtest", //引用 jar 包 "android-support-v7-appcompat", "android-support-constraint-layout", "android-support-design", "android.hidl.base-V1.0-java", ], resource_dirs: ["res"], asset_dirs: ["assets"], optimize: { // 有时候编译会出错,需要加这个变量 enabled: false, }, dex_preopt: { // 有时候编译会出错,需要加这个变量 enabled: false, }, platform_apis: true, aaptflags: [ "--auto-add-overlay", "--extra-packages", "com.test.phg.service", // 这里要加上 aar 包里面的包名,可以多个 ], }
Android.mk
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) // 预编译 aar 包 和 jar 包 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := phglib:libs/phg_lib.aar \ phgtest:libs/phg_test.jar include $(BUILD_MULTI_PREBUILT) include $(CLEAR_VARS) LOCAL_PACKAGE_NAME = CP_GFspmt LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_SRC_FILES += $(call all-Iaidl-files-under, src) LOCAL_ASSET_DIR := $(LOCAL_PATH)/assets LOCAL_CERTIFICATE := platform LOCAL_STATIC_JAVA_LIBRARIES := \ android-support-v7-appcompat \ android-support-constraint-layout \ android-support-design \ android.hidl.base-V1.0-java \ phgtest // 引用jar包 LOCAL_STATIC_JAVA_AAR_LIBRARIES += \ phglib //引用aar 包 LOCAL_AAPT_FLAGS := \ --auto-add-overlay \ --extra-packages com.test.phg.service \ // aar包里的包名,可以多个 #LOCAL_SDK_VERSION := current LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_MIN_SDK_VERSION := 25 #LOCAL_MODULE_TAGS := optional include $(BUILD_PACKAGE)
Android.mk 和Android.bp 的对应关系,可以查看 Android 源码下
/build/soong/androidmk/cmd/androidmk/android.go 文件
"LOCAL_SHARED_LIBRARIES": "shared_libs", 【动态 引用 C/C++ 库】 "LOCAL_STATIC_LIBRARIES": "static_libs", 【静态 引用 C/C++ 库】 "LOCAL_JAVA_LIBRARIES": "libs", 【动态引用JAVA 库】 "LOCAL_STATIC_JAVA_LIBRARIES": "static_libs", 【静态引用JAVA库】 java_library 会把aidl java 等文件编译成 .jar 库 android_library 会把 xml 资源文件, aidl java 等文件 编译成 .aar 库 java_import 预编译 .jar 库 (引用 第三方 jar 库) android_library_import 这是预编译 .aar 库 (引用第三方aar库) android_app_import 这是 预编译 apk,相当于 BUILD_PREBUILT 默认模块可用于在多个模块中重复使用相同的属性 : defaults cc_defaults java_defaults 如: cc_defaults { name: "gzip_defaults", shared_libs: ["libz"], stl: "none", } cc_binary { name: "gzip", **defaults**: ["gzip_defaults"], srcs: ["src/test/minigzip.c"], } hostdex: true for hiddenapi check . Hostdex is only for ART testing on host: privileged: true, // this needs to be a privileged application dex_preopt: { //Make sure the build system doesn't try to resign the APK enabled: false, },
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。