将xJava、xAndroid 开源框架内置在Android 系统源码中

    最近在用到系统开发的时候,接手了同事开发的一个APP的移植,在里面使用了xjava、xandroid两个库文件。

    在Android studio里面调用这两个库是在build.gradle里面直接配置,很简单,AS会根据配置自动去相应的下载地址,将依赖的库下载

  dependencies {
    compile 'io.reactivex:rxjava:1.2.6'
    compile 'io.reactivex:rxandroid:1.2.1'
}

当时因为赖得去官网下载,就直接将AS下载到本地的两个jar文件直接提取出来,然后直接放在源码目录下对应APP的lib目录,然后通过Android.mk去编译,结果蛋疼的事情发生了,一直报错,找不到库文件。 纠结了很久,不断的测试查找原因,最后把rxandroid-1.2.1.jar去掉后,编译的报错没有了,后来怀疑是jar包损坏了,我就直接去官网下载jar包,结果发现官网并没有rxandroid-1.2.1.jar的下载,只有rxandroid-1.2.1.aar这个文件的下载。到这里笔者瞬间明白了,他丫的,Android studio下载的那个引用jar不能直接放源码里面编译,只能用aar文件的。后来又去查询了一下什么是aar.

何为aar?大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。

下面附上源码的Android.mk文件的aar部分,然后编译通过,搞定收工

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := commons  rxjava android-support-v7-appcompat android-support-v4

LOCAL_STATIC_JAVA_AAR_LIBRARIES := rxandroid

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_RESOURCE_DIR += \
    $(LOCAL_PATH)/res \
    $(LOCAL_PATH)/../../../prebuilts/sdk/current/support/v7/appcompat/res

LOCAL_AAPT_FLAGS := \
    --auto-add-overlay \
    --extra-packages android.support.v7.appcompat \
        --extra-packages rx.android \
        --extra-packages rx.android.plugins \
        --extra-packages rx.android.schedulers \
        
#LOCAL_SDK_VERSION := current

LOCAL_PACKAGE_NAME := YOUR_APP_NAME
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
##################################################
include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := commons:libs/commons-net-3.3.jar \
                                        rxjava:libs/rxj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值