关于如何在android系统平台中使用AAR包的问题

来源:互联网 发布:mac使用的p2p软件 编辑:程序博客网 时间:2024/06/05 09:34

在系统平台中使用AAR包和我们平常在AS中使用AAR包的方法不太一样!在使用AS引入AAR包时,只需要在gradle文件中导入即可,在系统平台中,所有包的导入和引用都依靠.mk文件,所以想要在系统平台开发中使用AAR包需要我们修改原来的Android.mk文件!!

先看一下我编写的Android.mk文件:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_CERTIFICATE := platformLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_STATIC_JAVA_AAR_LIBRARIES := opencv_aarLOCAL_STATIC_JAVA_LIBRARIES := \    android-support-v4\    android-support-v7-appcompatLOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \    framework/support/v7/appcompat/resLOCAL_AAPT_FLAGS := \--auto-add-overlay --extra-packages android.aupport.v7.appcompatLOCAL_PACKAGE_NAME := AarTestinclude $(BUILD_PACKAGE)include $(CLEAR_VARS)LOCAL_PREBUILD_STATIC_JAVA_LIBRARIES := opencv_aar:libs/openlib-release.aarinclude $(BUILD_MULTI_PREBUILT)

主要代码:

LOCAL_STATIC_JAVA_AAR_LIBRARIES := opencv_aar

使用LOCAL_STATIC_JAVA_AAR_LIBRARIES 变量指定导入AAR包的名称,这个编译好的包名称跟我们实际放入libs目录下的aar包的名称可以不一样,这个名称是通过预编译之后生成的包名称,这个名称是由我们自己指定的!!

include $(CLEAR_VARS)LOCAL_PREBUILD_STATIC_JAVA_LIBRARIES := opencv_aar:libs/openlib-release.aarinclude $(BUILD_MULTI_PREBUILT)

这三行代码很关键,这里通过预编译将libs/openlib-release.aar的aar包编译为名称opencv_aar包,当然你也可以理解为模块,只不过这个模块是由aar包编译生成得到的

如果你的Android.mk文件也是这个编写的,那么恭喜你,你可以使用AAR包中的java代码和so库了(如果有so库的话),但是你还是不可以使用aar包中的R文件资源,如果需要使用的话,那么你需要在LOCAL_AAPT_FLAGS 变量后面添加AAR包中的包名,这AAR打包过程中,会有一个清单文件打包进去,只需要拷贝清单文件中package的包名并赋值给LOCAL_AAPT_FLAGS 即可!!!

在实际使用过程中可以会出现AAR中要求的最小SDK和targetSDK版本与当前应用的版本不匹配问题,修改当前版本以使其匹配AAR中的版本要求

好了,关于如何在系统平台中导入aar包的问题就说到这里,有兴趣的朋友可以关注我,有什么问题大家一起讨论!!!

阅读全文
0 0