`
- 浏览:
678996 次
- 性别:
- 来自:
上海
-
Android编译CPU架构体系不同引起的错误解决方法
转至http://blog.csdn.net/canjianfantasy/article/details/8563643
PackageManager( 5691): Native ABI mismatch from package file W/PackageManager( 5691): Package couldn't be installed in XXXX.apk
提示工程生成的apk文件安装失败
最近在做Android多媒体开发,涉及到ffmpeg和live555的移植,在手机上运行什么问题都没有,在虚拟中修改后测试一直出现各种问题,把catlog生成的日志分析一下,
结果是CPU结构不支持的原因!
于是在网上搜了下,找到了相关的文章,虽然没有直接解决问题,但是给了我一个灵感。
其实很简单,就是CPU架构体系不同,引起的这个错误。
armeabi和armeabi-v7a
在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的c代码编译成的本地库(各种.so)就会放在这两个文件夹其中的一个。那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢?
armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu,不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。高级版本的Android SDK还可以支持Intel X86 Atom,MIPS ,等各种CPU架构,难怪有人把以前的计算器都刷成Android 系统了!!!在下佩服!
在android.mk里可配置以下宏:
TARGET_CPU_API := armeabi 或者armeabi-v7a ...
APP_ABI := armeabi或者armeabi-v7a ...
当你编译时出现一些链接动态库的undefine错误,或你的apk运行时出现装载.so动态库错误时,不妨看一下你的Android模拟器的cpu类型的配置是否有误。
修改这个错误也很简单,你可以修改你的Android模拟器的配置,也可以修改你的Android工程的AndroidManifest.xml,一般修改 <uses-sdk android:minSdkVersion="8" />
这个就可以了!!!因为高版本的SDK 支持的CPU架构更多更高级,一般可以兼容低架构的CPU!!
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
同时,设定编译目标为Android平台的特定架构(如armeabi-v7a, arm64-v8a等)。使用`ndk-build`命令进行编译。 **步骤3:创建Android项目** 在Android Studio中,创建一个新的Android项目,并在项目的jniLibs目录下...
- 要在Android项目中使用libyuv,首先需要将编译好的.so动态库文件放入项目的jniLibs目录下,对应不同的CPU架构。 - 接下来,在Java或Kotlin代码中,通过JNI接口调用libyuv的C++函数进行颜色空间转换。 4. **编译...
Android 编译流程 Makefile 流程详解 Android 编译流程是 Android 系统开发的关键步骤之一,Makefile 是 Android 编译...通过了解 Makefile 的流程和使用方法,开发者可以更好地掌握 Android 系统的编译和构建过程。
使用ndk-r21e、ffmpeg-4.2.5编译的三个架构的so库和头文件,亲测可用; 相关的博客链接:https://blog.csdn.net/qq_32506429/article/details/122144239
本文将深入探讨Ubuntu系统下Android源码的编译过程,包括必要的软件安装、环境变量配置、源码获取以及编译过程中可能遇到的问题及其解决方法。 首先,要进行Android源码编译,必须确保Ubuntu系统已安装了基础的开发...
然后,将CLAPACK源代码解压,找到包含Android编译配置的文件,可能需要根据自己的项目需求进行一些微调,比如设定目标Android API级别、CPU架构等。接着,使用NDK的交叉编译工具链执行编译命令,通常会涉及到`ndk-...
Android源码编译过程是Android开发中的核心环节,它涉及到一系列复杂的步骤,旨在将源代码...在Android源代码编译过程.txt文件中,应该记录了编译过程中的具体步骤和可能遇到的问题,是学习和解决问题的重要参考资料。
本文将基于“高通平台android-modem 架构总结”这一主题,深入探讨高通Android Modem架构的关键组件和工作原理。 首先,我们要理解的是高通Modem的硬件架构。高通的Modem通常集成在骁龙(Snapdragon)系列SoC...
在使用预编译的FFmpeg库时,开发者需要注意兼容性问题,确保所使用的.so文件与目标设备的CPU架构相匹配。此外,由于FFmpeg库较大,可能会增加应用的体积,因此在发布时可以考虑使用动态加载技术,仅在需要时才加载库...
在此参考csdn各大博主知识,写出了一款能自动生成android 全平台CPU架构的脚本,方便生成全平台lib。 使用方法:此文档包含使用案例,将build.sh放进你的工程文件下,并修改你的Makefile接受传入的交叉编译工具链,...
脚本会为不同的CPU架构(armeabi, armeabi-v7a, arm64-v8a, x86, x86_64)生成.so库文件。 5. **集成到项目**: 将编译好的库文件添加到你的iOS或Android项目中,按照平台的规则设置链接器选项和库路径。对于iOS,...
"Apple_IOS、Android、WebOS系统体系架构对比" 本文从系统架构角度对比分析了 Apple_IOS、Android、WebOS 三大移动设备操作系统。三大系统都采用 Unix 或 Linux 内核,但在具体实现上存在很大的差异。 WebOS 系统...
要将预编译的x264库集成到Android应用,你需要将库文件放置在项目的jniLibs目录下,对应不同的CPU架构子目录(例如armeabi、armeabi-v7a、arm64-v8a等)。然后,通过Java层的JNI接口调用C++代码,实现与x264库的交互...
综上所述,"faac-android"提供了一套完整的FAAC解决方案,包括了NDK-R21E编译的适用于不同CPU架构的SO库和必要的头文件,使得开发者能方便地在Android平台上实现高效的AAC音频编码功能。在实际开发中,结合NDK、JNI...
在“ijkplayer_android编译包.zip”中,我们找到了ijkplayer的Android版本。这个编译包已经包含了ijkplayer的核心组件,特别是ijkplayer.so,这是一个动态链接库(Dynamic Link Library),在Android系统中通常称为...
由于Android系统基于Linux内核,memtester作为一个命令行工具,通常需要在特定的CPU架构下编译。在这个案例中,memtester是针对arm64架构编译的,这意味着它可以在64位的ARM处理器上运行。交叉编译允许在一种架构的...
2. 跨平台兼容性:NDK支持多个CPU架构,如armeabi-v7a、arm64-v8a、x86和x86_64,需要为每个架构配置和编译。 3. 优化和调试:使用NDK的 `-DANDROID_NDK_DEBUG=1` 开关开启调试模式,优化性能时可以考虑使用 `-O3` ...
在跨平台应用程序开发中,特别是在Android平台上,开发者经常会遇到不同类型的CPU架构,如ARM、X86等。为了确保应用程序能够在各种设备上顺利运行,必须对应用程序进行相应的优化处理。本文将详细介绍如何使Delphi ...
最后,将生成的`libceres.so`库添加到Android项目的`jniLibs`目录下,对应不同的CPU架构(如armeabi-v7a, arm64-v8a, x86等)。现在,你可以在Java代码中通过`CeresWrapper`类调用Ceres的功能了。 总结一下,编译...
配置过程中要根据目标设备的硬件特性进行选择,例如CPU架构、GPU类型、无线网卡驱动等。 完成配置后,可以开始编译内核。执行`make -jX`命令(X代表你的CPU核心数)将启动编译过程。这个过程可能需要一段时间,因为...