Android某lib不被编译的奇怪问题

  由于项目需要实现在线音视频交互,引入了版本较新的libjingle库,一番编码之后,编译通过,可是运行时就坑爹了,这个包里的类统统找不到,反编译了apk之后发现原来这个库里的内容根本没被编译进classes.dex中。这是为什么呢?走了一番弯路之后发现,原来是这个包的编译jdk为1.7。而我的eclipse编译jdk为1.6。低版本jdk编译的工程无法集成高版本jdk编译的库。看来只能升级eclipse和adt来解决了。

  为什么会出现上述情况?大概研究了一下。不同版本jdk编译出来的class文件格式可能存在差异,如果高版本jdk编译的class运行在低版本jvm之上,会出现无法解析高版本格式的问题。所以发现这种版本差异的时候直接不处理。其实这很合理,但是我觉得eclipse在编译时出现这种情况应该给报个错啊,你啥都不说,到时候程序缺胳膊少腿那不是坑么。。

  后面附加两句:安卓工程属性中选择的sdk版本是用于编译的,跟实际运行无关。你选择了5.0的sdk,不适用5.0独有的方法,那么运行在5.0以下版本也不会有问题。而被选择的这个sdk版本,编译时要有对应的buildtools,这个buildtools可以在sdkmanager里看到。buildtools19开始支持jdk1.7编译。如果要用jdk1.7编译,需要把编译sdk版本选择为4.4才可以。

转载于:https://www.cnblogs.com/sylva/p/4729101.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值