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

安装带本地库的应用程序出错 安装带本地库的应用程序时出错如下: W/PackageManager( 5691): Native ABI mismatch from package file W/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 $@)lib endef 改成: 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 $@)lib endef XXXX表示生成的本地库(*.so)打包在*.apk中的路径:/lib/XXXX 3、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 endif ARCH_NAME为你准备运行设备基于的CPU架构。 COMP为该CPU架构所对应的编译器
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值