本文共 2111 字,大约阅读时间需要 7 分钟。
先以email为例,看看如何引用第1,2方的jar 在4.0中email里有Email/emailcommon文件夹,和2.x结构不一样 这里也有个mk文件 email下面发现exchange文件夹不见了,原来是单独拿了出来 在exchange里面发现用到了emailcommon里面的类emailcommon下部分mk文件代码如下LOCAL_MODULE := com.android.emailcommonLOCAL_STATIC_JAVA_LIBRARIES := guavaLOCAL_SRC_FILES := $(call all-java-files-under, src/com/android/emailcommon)LOCAL_SRC_FILES += $(call all-java-files-under, src/org)LOCAL_SRC_FILES += \ src/com/android/emailcommon/service/IEmailService.aidl \ src/com/android/emailcommon/service/IEmailServiceCallback.aidl \ src/com/android/emailcommon/service/IPolicyService.aidl \ src/com/android/emailcommon/service/IAccountService.aidlLOCAL_SDK_VERSION := currentinclude $(BUILD_STATIC_JAVA_LIBRARY)LOCAL_MODULE := com.android.emailcommon 定义模块名称 include $(BUILD_STATIC_JAVA_LIBRARY) 生成一个jar,可供其他应用使用 编译email时会看到如下log
target Java: com.android.emailcommon (out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates/classes)Copying: out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates/classes-jarjar.jarCopying: out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates/emma_out/lib/classes-jarjar.jarCopying: out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates/classes.jartarget Static Jar: com.android.emailcommon (out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates/javalib.jar)out/target/common/obj/JAVA_LIBRARIES/com.android.emailcommon_intermediates下面的几个jar中都有emailcommon的源码 打开exchange的mk文件发现有如下代码
LOCAL_STATIC_JAVA_LIBRARIES := android-common com.android.emailcommon这里引用了android-common和com.android.emailcommon 这样exchange就可以使用emailcommon的类文件了 下面看看如何引用第三方jar 将jar放在工程根目录下 mk文件要给下面两个变量赋值 LOCAL_STATIC_JAVA_LIBRARIES := library_name LOCAL_PREBUILT_SATTIC_JAVA_LIBRARIES := library_name:xxx.jar即可
注意:这里引用的jar,里面必须是class形式的,如果里面是dex文件,那么编译的时候是无法找到相应的class文件
不要尝试把jar解开,然后把其中的dex文件用dex2jar转换成jar,虽然转换之后的jar里面是class形式的,编译时也能找到相应的class,但是打包的时候会失败,错误是关于字节码的
android的字节码和java的字节码还是不完全一致的,所以不要这么做
ps:library_name不要和其他库的LOCAL_STATIC_JAVA_LIBRARIES重名,不然整体编译的时候会冲突,无法生成img
当然,单独编译的时候不会有问题的
转贴请保留以下链接
本人blog地址
转载地址:http://vycti.baihongyu.com/