您的位置:首页 > 移动开发 > Android开发

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

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

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

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CERTIFICATE := platform
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_STATIC_JAVA_AAR_LIBRARIES := opencv_aar
LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v4\
android-support-v7-appcompat
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \
framework/support/v7/appcompat/res
LOCAL_AAPT_FLAGS := \
--auto-add-overlay --extra-packages android.aupport.v7.appcompat
LOCAL_PACKAGE_NAME := AarTest
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)
LOCAL_PREBUILD_STATIC_JAVA_LIBRARIES := opencv_aar:libs/openlib-release.aar
include $(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.aar
include $(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包的问题就说到这里,有兴趣的朋友可以关注我,有什么问题大家一起讨论!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: