Android8.1 模块源码中mk文件 引用okhttp3.jar

Android8.1 模块源码中mk文件 引用okhttp3.jar

项目需要做一个云备份,所以手机端需要联网,因为okhttp比较成熟,而且简单,所以准备用这个jar包
下面说一下jar的引入,在网上搜了一下,基本都一样

//定义一个别名
LOCAL_STATIC_JAVA_LIBRARIES := okhttp 

include $(CLEAR_VARS)
//这里是真正引入jar
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := okhttp:libs/okhttp-3.10.0.jar 
//将jar编译进apk
include $(BUILD_MULTI_PREBUILT)

我搜到的博客都是说这样就可以了(顺序一定要对),于是满怀信心运行一下。很悲催,如果在代码中引用okhttp中的类,会报错找不到okhttp,代码中调用okhttp是没有问题的。但是这样不就相当于没有引入这个jar了吗?
于是继续上网搜,但是并没有找到相关博客,各种请教同事,都说这样是可以的,很郁闷。只能自己看看问题出在哪里,想到每个博客里都说到顺序问题,于是我把定义别名的地方(LOCAL_STATIC_JAVA_LIBRARIES := okhttp )放到前面(include $(BUILD_PACKAGE)),也就是下面这样

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

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := \
  android-support-v4 \
  okhttp 

LOCAL_PACKAGE_NAME := Luna
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

LOCAL_RESOURCE_DIR :=  $(LOCAL_PATH)/res
LOCAL_SRC_FILES := $(call all-java-files-under, src)
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := okhttp:libs/okhttp-3.10.0.jar
include $(BUILD_MULTI_PREBUILT)

碰碰运气,编译试一下,竟然可以了,于是很开心的去撸码,但是又发现了,编译不报错,但是运行时报错,再次上网查了一下,原来okhttp.jar是要和okio.jar配合使用的,于是再次引入okio.jar:

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

LOCAL_MODULE_TAGS := optional

LOCAL_STATIC_JAVA_LIBRARIES := \
  okhttp \
  okio

LOCAL_PACKAGE_NAME := Luna
LOCAL_CERTIFICATE := platform
LOCAL_PRIVILEGED_MODULE := true

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

LOCAL_RESOURCE_DIR :=  $(LOCAL_PATH)/res
LOCAL_SRC_FILES := $(call all-java-files-under, src)
include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
    okhttp:libs/okhttp-3.10.0.jar \
    okio:libs/okio-1.14.1.jar
include $(BUILD_MULTI_PREBUILT)

到这里,终于大功告成了!!!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30552095/article/details/80690684
文章标签: Android mk okhttp3.jar
个人分类: Android
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭