背景

我们有一款自定义的launcher app,用Androidstudio直接run是可以正常运行的,在预编译到system/priv-app目录下时,始终找不到so文件。

1、最简单的方法,将so预置到system/lib64下,仍然提示找不到so

2、在app的目录下手动创建lib连接指向system/lib64中的so,这样so可以找到,但是会有其他一些错误,但是明明在AS中直接run是可以正常运行的

3、对比系统原有预置app的Android.mk文件,发现预置app的mk文件的签名跟我的不一样,

我的app用的签名是

LOCAL_CERTIFICATE := platform

系统系统预置app的签名是

LOCAL_CERTIFICATE := PRESIGNED

但是感觉找不到so这种问题不应该是签名导致的,实在没办法了试了一下,自己手动系统签名后,再预置到系统里,问题竟然解决了……

还请知道缘由的大神不吝赐教

下面附上预置apk的完整mk文件

LOCAL_PATH := $(call my-dir)

#预置so库

include $(CLEAR_VARS)

LOCAL_MODULE := libImSDK

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES_32 := lib/armeabi-v7a/libImSDK.so

LOCAL_SRC_FILES_64 := lib/arm64-v8a/libImSDK.so

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_MODULE_SUFFIX = .so

LOCAL_MULTILIB = 64

include $(BUILD_PREBUILT)

#预置so库

include $(CLEAR_VARS)

LOCAL_MODULE := libreadface

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES_32 := lib/armeabi-v7a/libreadface.so

LOCAL_SRC_FILES_64 := lib/arm64-v8a/libreadface.so

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_MODULE_SUFFIX = .so

LOCAL_MULTILIB = 64

include $(BUILD_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE := Launcher3Go_Goertek

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

#编译当前launcher时,不编译其他launcher

LOCAL_OVERRIDES_PACKAGES := Home Launcher2 Launcher3 \

Launcher3QuickStep Launcher3Go Launcher3QuickStepGo \

MtkLauncher3 MtkLauncher3QuickStep MtkLauncher3QuickStepGo

LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.launcher3.*

LOCAL_CERTIFICATE := PRESIGNED

LOCAL_PRIVILEGED_MODULE := true

LOCAL_MULTILIB := both

include $(BUILD_PREBUILT)

更多推荐