安装带本地库的应用程序出错

来源:互联网 发布:420烟油怎么被淘宝禁了 编辑:程序博客网 时间:2024/05/22 18:26
安装带本地库的应用程序出错安装带本地库的应用程序时出错如下:W/PackageManager( 5691): Native ABI mismatch from package fileW/PackageManager( 5691): Package couldn't be installed in /data/app/com.example.android.simplejni.apk注意,并没有E/PackageManager( 5691)。出这个错的原因是android系统所在的架构与编译带本地方法应用程序的目标架构(TARGET_ARCH)不一致。如:该应用程序在是纯android源码下编译出来的,所以该应用程序本应该在ARM架构上运行,而此时你的设备android系统并不是ARM架构,而是MIPS的,这样,ARM的CPUabi为armeabi,而MIPS的CPUabi为mipso(好像是这样的)。这样就会出现Native ABI mismatch的错误。解决的这个错误的方法:在编译本地应用程序的android源码中修改3个地方:1、/build/target/board/generic/BoardConfig.mk中TARGET_CPU_ABI := armeabi改成:TARGET_CPU_ABI := XXXX这样修改后的结果是:生成的文件系统(android镜像)中的/system/中的build.prop会修改这样一项内容:ro.product.cpu.abi=XXXX或者第1步我们不需要修改源码,直接把build.prop中的这样内容修改成:ro.product.cpu.abi=XXXX,重启系统即可。但后两步的内容还是不能少。 2、build/core/definitions.mk中define add-jni-shared-libs-to-package$(hide) rm -rf $(dir $@)lib$(hide) mkdir -p $(dir $@)lib/armeabi$(hide) cp $(PRIVATE_JNI_SHARED_LIBRARIES) $(dir $@)lib/armeabi$(hide) (cd $(dir $@) && zip -r $(notdir $@) lib)$(hide) rm -rf $(dir $@)libendef改成:define add-jni-shared-libs-to-package$(hide) rm -rf $(dir $@)lib$(hide) mkdir -p $(dir $@)lib/XXXX$(hide) cp $(PRIVATE_JNI_SHARED_LIBRARIES) $(dir $@)lib/XXXX$(hide) (cd $(dir $@) && zip -r $(notdir $@) lib)$(hide) rm -rf $(dir $@)libendefXXXX表示生成的本地库(*.so)打包在*.apk中的路径:/lib/XXXX3、build/core/ensetup.mk中在下面代码后增加相同功能的代码 ifeq ($(TARGET_ARCH),arm) ABP:=$(ABP):$(PWD)/prebuilt/$(HOST_PREBUILT_TAG)/toolchain/arm-eabi-4.4.0/bin endif增加的代码为: ifeq ($(TARGET_ARCH),ARCH_NAME) ABP:=$(ABP):$(PWD)/prebuilt/$(HOST_PREBUILT_TAG)/toolchain/COMP/bin endifARCH_NAME为你准备运行设备基于的CPU架构。COMP为该CPU架构所对应的编译器
原创粉丝点击