zoukankan      html  css  js  c++  java
  • 不能直接将.so文件直接添加到Android的JAR包了

    转自:http://www.cnblogs.com/mengshu-lbq/archive/2011/11/19/2255566.html#2323758

    如果直接在一个JAR中的/libs/armeabi下放个XXX.SO文件,然后导出成JAR包的后,如A.JAR,

    在一个Android的程序中引用这个A.JAR,那么编译的时候就会出现一下的错误:

    The library 'A.jar' contains native libraries that will not run on the device.
    The following libraries were found:
    - libs/armeabi/libXXX.so

    网上搜素索了下,还是没有找到解决方法。

    只能采用如下的方式:

    1.像科大讯飞那样(/Msc/assets/lib/msc.jet:文件前4个字节为:.ELF,而且文件末尾可以看到类是JNI的函数

    直接将.SO文件改个扩展名,然后放到assert中,导出到JAR中,然后在启动的时候/或者首次被调用的时候将其拷贝到

    调用程序的目录下,手动加载SO库文件

    2.就是直接将JAR中的.SO文件放到目标程序的/libs/armeabi下,即可。

    (以上提到的.SO文件都是针对ARM架构的,如果是x86的,注意将上文中的相应目录修改成/libs/x86/目录即可)

    总之:Android将某个工程打成JAR包的时候,最好只包括源代码,另外就是可以包含一些文件,如assert或者自己定义的一些文件个数,

    但不要保护资源文件(/res下所有文件内容都不要放在JAR包中)。

  • 相关阅读:
    String
    Array常用方法
    Array类
    ruby调试/练习时的小技巧
    集合类对象的遍历处理办法
    Tech road one step 7-Noc to 13-Nov
    Tech road one step 31-Oct 6-Nov
    TechRoad_oneStep_17-23 10
    TechRoad_oneStep_1001
    TechRoad_oneStep_0919
  • 原文地址:https://www.cnblogs.com/lovelili/p/2389173.html
Copyright © 2011-2022 走看看