笔者在预装输入法时,预装出现了问题,并发表了一篇帖子:给MT8735系统平台预装输入法出现的问题(以讯飞输入法为例) , MT8735系统平台操作系统是Android5.1,直接给系统安装输入法,没问题,但是预装在系统中作为系统应用就会报错,于是查找了资料,终于将问题给解决了!
LOCAL_PRIVILEGED_MODULE := true 表示将apk编译到/system/priv-app目录下
LOCAL_PREBUILT_JNI_LIBS := \ XXXX 、LOCAL_MULTILIB :=32 因为Android5.1 是64位编译环境,因此需要将32位的so库提取出来,使用的32位的lib库,提取出来的lib库,放在/system/priv-app/app文件名/下
LOCAL_PREBUILT_JNI_LIBS := \ XXXX 、LOCAL_MULTILIB : = 32 很关键,将之前贴子所讲的问题给解决了!
PS:
1. 如何查看so库文件是32位还是64位,可在git Bash进到相应的文件夹下,输入file * 查看文件的类型
2. so文件太多的apk安装时会出错,比如有些so文件是一个也是一个apk,是一个伪so文件!APP安装了,部分功能能够使用,没有源码,不易查找出原因,可以更换so库比较少的apk来安装
参考文章:
说明--> 结合本帖,仔细阅读下列参考文章,特别是描述so文件的部分
(1)Android系统内置第三方输入法
(2)Android 5.1 如何内置APK在/system/priv-app目录下的Android.mk
(3)如何在64位安卓系统中使用32位SO库
- LOCAL_PATH:= $(call my-dir)
- include $(CLEAR_VARS)
- # Module name should match apk name to be installed
- LOCAL_MODULE := SouGouInput
- LOCAL_MODULE_TAGS := optional
- LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
- LOCAL_MODULE_CLASS := APPS
- LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
- LOCAL_PRIVILEGED_MODULE := true
- LOCAL_CERTIFICATE := PRESIGNED
- LOCAL_PREBUILT_JNI_LIBS := \
- @lib/armeabi/libbutterfly.so \
- @lib/armeabi/libluajava.so \
- @lib/armeabi/libNinepatch.so \
- @lib/armeabi/libSogouAgc_v1.so \
- @lib/armeabi/libsogouupdcore.so \
- @lib/armeabi/libweibosdkcore.so
- LOCAL_MULTILIB := 32
- include $(BUILD_PREBUILT)
LOCAL_PRIVILEGED_MODULE := true 表示将apk编译到/system/priv-app目录下
LOCAL_PREBUILT_JNI_LIBS := \ XXXX 、LOCAL_MULTILIB :=32 因为Android5.1 是64位编译环境,因此需要将32位的so库提取出来,使用的32位的lib库,提取出来的lib库,放在/system/priv-app/app文件名/下
LOCAL_PREBUILT_JNI_LIBS := \ XXXX 、LOCAL_MULTILIB : = 32 很关键,将之前贴子所讲的问题给解决了!
PS:
1. 如何查看so库文件是32位还是64位,可在git Bash进到相应的文件夹下,输入file * 查看文件的类型
2. so文件太多的apk安装时会出错,比如有些so文件是一个也是一个apk,是一个伪so文件!APP安装了,部分功能能够使用,没有源码,不易查找出原因,可以更换so库比较少的apk来安装
参考文章:
说明--> 结合本帖,仔细阅读下列参考文章,特别是描述so文件的部分
(1)Android系统内置第三方输入法
(2)Android 5.1 如何内置APK在/system/priv-app目录下的Android.mk
(3)如何在64位安卓系统中使用32位SO库
更多推荐
Android5.1预装输入法注意事项
发布评论