Android5.1预装输入法注意事项

      笔者在预装输入法时,预装出现了问题,并发表了一篇帖子:给MT8735系统平台预装输入法出现的问题(以讯飞输入法为例) , MT8735系统平台操作系统是Android5.1,直接给系统安装输入法,没问题,但是预装在系统中作为系统应用就会报错,于是查找了资料,终于将问题给解决了!
  1. LOCAL_PATH:= $(call my-dir)
  2. include $(CLEAR_VARS)
  3. # Module name should match apk name to be installed
  4. LOCAL_MODULE := SouGouInput
  5. LOCAL_MODULE_TAGS := optional
  6. LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
  7. LOCAL_MODULE_CLASS := APPS
  8. LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
  9. LOCAL_PRIVILEGED_MODULE := true
  10. LOCAL_CERTIFICATE := PRESIGNED
  11. LOCAL_PREBUILT_JNI_LIBS := \
  12.     @lib/armeabi/libbutterfly.so \
  13.     @lib/armeabi/libluajava.so \
  14.     @lib/armeabi/libNinepatch.so \
  15.     @lib/armeabi/libSogouAgc_v1.so \
  16.     @lib/armeabi/libsogouupdcore.so \
  17.     @lib/armeabi/libweibosdkcore.so
  18. LOCAL_MULTILIB := 32
  19. 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 * 查看文件的类型
Android5.1预装输入法注意事项 
2. so文件太多的apk安装时会出错,比如有些so文件是一个也是一个apk,是一个伪so文件!APP安装了,部分功能能够使用,没有源码,不易查找出原因,可以更换so库比较少的apk来安装
Android5.1预装输入法注意事项 
参考文章:
说明--> 结合本帖,仔细阅读下列参考文章,特别是描述so文件的部分
(1)Android系统内置第三方输入法
(2)Android 5.1 如何内置APK在/system/priv-app目录下的Android.mk
(3)如何在64位安卓系统中使用32位SO库