安卓,so库动态载入

so库动态载入,修复应用无法安装。

安卓,so库动态载入_第1张图片

(so库动态加载示例。从asset目录加载so库,安装时不导出so库,不会导致安装失败,运行时生成并载入)

修复方法:

1、将AssetsSo.jar添加至项目的lib目录下:

2、剪切so对应的目录至assets/so/目录下

安卓,so库动态载入_第2张图片

3、设置Application为sc.tool.so.AssetsSoApp

安卓,so库动态载入_第3张图片

4、编译运行项目即可

详细说明:

/**

* AssetsSoApp用于so文件运行时动态加载,加载目录为assets/so/

*

* 用法:

*

* 1、将原来libs/目录下的  armeabi、x86、 armeabi-v7a...,直接剪切至assets/so/目录下即可。

* 2、将AndroidManifest.xml中的application设置为:  ;

* 或者 调用 AssetsSoApp.LoadAssetsSo(this);

*

* 注解: lib/目录下的so文件,在应用安装时就会输出,时常会报错导致应用无法正常安装。

* {

* 如:

* 1、Google Play Store – Can’t install app (Error code: -504)

* 2、is not page-aligned - will not be able to open it directly from apk

* 3、Failure [INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2]

* (此报错修改 aplication属性可以为 android:extractNativeLibs="true"编译的apk可正常运行,可从google play下载却无法安装,还是报第2个错误,

* 干脆修改为so动态加载,就不会报错了,也可正常安装、运行)

* }

*

* 修复原理: so不添加至lib目录,不在应用安装时输出,正常安装。应用运行时,输出对应类型的so库,从该目录下动态加载

*

* @author [email protected]

*/

应用安装目录:(若so存放在lib目录下,则在安装apk时,会自动输出)

安卓,so库动态载入_第4张图片

自定义动态载入目录:(so不存放存到lib目录下,在运行时,输出至该目录,从此处载入)

安卓,so库动态载入_第5张图片

AssetsSo.jar(so动态载入库)

AssetsSo.zip(源码)

你可能感兴趣的:(安卓,so库动态载入)