android 安装apk时出现INSTALL_FAILED_MISSING_SHARED_LIBRARY错误

给app组的同事提供基于add-on方式的jar包接口,调试过程中出现调试时遇到INSTALL_FAILED_MISSING_SHARED_LIBRARY错误。

以add-on方式封装接口的背景是,提供stub的空接口,app集成只是为了正常的引用jar包编译,而真正的运行时主要依赖当前的系统,这也就避免了由于系统jar主导接口的控制权,在接口没有大变化的情况下,app不用理会接口的实际实现。

app AndroidManifest.xml中添加对动态库的引用,如下:

<uses-library android:name="com.test.audio" />

置于此处,当系统没有添加的platform.xml(device路径/system/etc/permission/platform.xml)中时,应用报INSTALL_FAILED_MISSING_SHARED_LIBRARY错误

我们先看看android系统对应用开放的lib库是添加在哪里
framework/base/data/etc/platform.xml

    <!-- This is a list of all the libraries available for application
         code to link against. -->

    <library name="android.test.mock"
            file="/system/framework/android.test.mock.jar" />
    <library name="android.test.runner"
            file="/system/framework/android.test.runner.jar" />
    <library name="javax.obex"
            file="/system/framework/javax.obex.jar" />
    <library name="org.apache.http.legacy"
            file="/system/framework/org.apache.http.legacy.jar" />

于是我们添加自己的接口库到系统相应目录下,为了解耦合,直接单独添加自己的xml编译
platform_test_audio.xml

<?xml version="1.0" encoding="utf-8"?>

<permissions>
    <library name="com.test.audio"
            file="/system/framework/com.test.audio.jar" />
</permissions>

接口模块的Andorid.mk添加编译:

########################
include $(CLEAR_VARS)
LOCAL_MODULE := platform_test_audio.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_SRC_FILES := $(LOCAL_MODULE)
include $(BUILD_PREBUILT)

#LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
**# 接口模块的jar包名,app运行真正依赖的库**
LOCAL_MODULE := com.test.audio
LOCAL_SRC_FILES := $(call all-java-files-under, libaudio/src/main/java)

# LOCAL_DEX_PREOPT := false

LOCAL_JAVA_LIBRARIES += framework

LOCAL_REQUIRED_MODULES := platform_test_audio.xml

include $(BUILD_JAVA_LIBRARY)

app使用use-library库,总结起来就是3点:
1.app 使用add-on的stub jar引用编译;
2.系统/system/framework存在运行依赖系统的接口具体实现jar包com.test.audio.jar;
3.系统/system/etc/permission/platfrom_xx.xml放开指定给app调用库的路径。
.

猜你喜欢

转载自blog.csdn.net/jeephao/article/details/107432720