Android项目中使用NativeLibCompression遇到的一些坑

      NativeLibCompression是一个压缩SO库的第三方工具,还是很好用的,确实是能压缩到50%的大小,想了解的可https://github.com/liyuming1978/NativeLibCompression  瞧一瞧。最近使用NativeLibCompression来压缩自己的SO库,遇到一些蛋疼的坑,在此记录一下,以免下次遇到同样的问题。

1.签名问题。

    我在用eclipse打包apk时,已经使用了android tools进行签名了,屁颠屁颠的以为使用NativeLibCompression压缩apk不再需要签名。后来在测试百度地图功能时,一直在提示未授权成功,纳闷了。忽然想到既然压缩了apk,那就解压看看两个apk直接有什么不同。结果发现被压缩的apk中缺少META-INF,这时候才恍然大悟啊。

   结论:不管你事先有没有签名apk,在使用NativeLibCompression压缩时,一定要再次签名。附上压缩命令:

    在apk的根路径下,输入java -jar ApkCompress.jar -a ./XXX.apk(XXX是apk的名字) -k ./key(名称+后缀)  密码  alias的密码 alias的名字


2.压缩后导致百度地图导航无法使用。

    对于百度地图map类的api,不需要在解压完成后调用System.load(DecRawso.GetInstance().GetPath("BaiduMapSDK_base_v3_6_1"));之类的语句,而只需要在解压完成(何时解压完成可以参考NativeLibCompression的demo)后调用SDKInitializer.initialize(getApplicationContext());即可。但是对于导航来说,在解压完成后,初始化navigation之前,必须手动load导航相关的so,如下:

       System.load(DecRawso.GetInstance().GetPath("app_BaiduNaviApplib"));
       System.load(DecRawso.GetInstance().GetPath("app_BaiduVIlib"));
System.load(DecRawso.GetInstance().GetPath("bd_etts"));
System.load(DecRawso.GetInstance().GetPath("bds"));
System.load(DecRawso.GetInstance().GetPath("BDSpeechDecoder_V1"));
System.load(DecRawso.GetInstance().GetPath("curl"));
System.load(DecRawso.GetInstance().GetPath("gnustl_shared"));

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值