android 4 0-关于JNI,为什么在android 4.4运行正常的程序,在4.0上运行就报错了

问题描述

关于JNI,为什么在android 4.4运行正常的程序,在4.0上运行就报错了

事情是这样的:
本身项目是基于android 4.4.2、JDK1.7 编译的,然后公司要求最低版本。
然后我将项目改成了android 2.3.3、JDK1.6编译,修改一些内容后,编译通过,在android 4.4.2的手机上运行正常。
但是现在市场部反应,在低于4.1.X的版本上运行还是有问题,因此我找来一台android 4.0.4内核的手机调试,确实报错了,在JNI模块。
报:UnsatisfiedLinkError,找不到调用的那个Native对应在C中的方法,现在我该怎么办?
android 4.4.x和android4.1.x在JNI上面有什么改变?
既然我程序在4.4.2运行成功,证明代码上没有问题,编译也没有问题,那么问题到底出在哪里??

解决方案

这个问题我才解决掉,原因是因为在Application.mk里面,多加了一个APP_STL := stlport_shared,然而这个stlport_shared是空的,也不知道他们当时拿来做什么,就是因为这个为空,导致我的主so加载失败,也导致了这个问题。
经过这个问题,让我学到了要认真看每一句log,因为它们真的非常有用!!如果我早点看到那句log,这些问题都不会发生了。而且对jni这块不熟悉,也是导致拖了那么久的原因。

解决方案二:

代码混淆的时候,不要混淆native方法

时间: 2024-08-29 11:26:42

android 4 0-关于JNI,为什么在android 4.4运行正常的程序,在4.0上运行就报错了的相关文章

Android Studio中导入JNI生成的.so库的实现方法

Android Studio中导入JNI生成的.so库的实现方法 由于在原来的ADT的Eclipse环境中,用ndk_build工具生成了相应的各个.so库文件之后,eclipse工具就会自动把这些库导入到apk中.而Android Studio目前为止(0.86版本)还无法做到那么自动,但是我们可以通过以下方式进行. 首先在Android Studio工程的app目录下创建整个jni目录,jni目录里写Android.mk.Application.mk以及各类C/C++和汇编源文件.然后跟原来

《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.5节Android应用程序运行的机制

1.5 Android应用程序运行的机制 Android 3D游戏开发技术宝典--OpenGL ES 2.0 上一节介绍了如何搭建Android开发环境.如何开发Hello Android应用程序以及Android应用程序的调试,接下来在本节中将简要地介绍Android应用程序的运行机制. 1.5.1 应用程序的系统架构 Android平台由应用程序.应用程序框架.Android运行时.系统库以及底层Linux内核构成,详细结构如图1-54所示. 说明 应用程序层里面包含的就是需要读者去发挥创意

视频-android项目在4.4上运行正常,在5.0以上运行时出现问题

问题描述 android项目在4.4上运行正常,在5.0以上运行时出现问题 我项目在4.4上运行正常,但在5.0项目上运行时,有个视频界面放置一段时间不对其做任何操作,这个界面会出现黑屏的状况. 解决方案 把编译时出现的警告完善.确保Java每一步都实现 解决方案二: 你提供的信息太少,可以尝试在黑屏左右的时间抓下log,看log里有什么打印,然后工程用android21的sdk,确保没有过时的接口调用

http服务器-android 通过http和jni底层进行通信

问题描述 android 通过http和jni底层进行通信 android 通过http和jni底层进行通信,jni层相当于一个本地http服务器. 是这样的:一个播放器项目,用到第三方jni插件,这个jni插件相当于本地http流服务器,当应用层发出播放指令和视频地址时,它就会自动连接到这个视频地址 (视频地址能正常播放的)去拉流,并且返回操作结果给应用层.如果操作成功就可以调用播放器进行播放了.... 因为需要频繁和jni服务器进行通信,怎样才能保证正常http通信呢?HttpClient经

Android开发者指南(11) —— Optimizing Apps for Android 3.0

前言 本章内容为开发者指南(Dev Guide)/Best Practices/Optimizing Apps for Android 3.0,译为"为Android 3.0优化应用程序",版本为Android3.0 r1,翻译来自"移动云_文斌",欢迎访问它的博客:"http://blog.csdn.net/caowenbin",再次感谢"移动云_文斌" !期待你一起参与翻译Android的相关资料,联系我over140@g

《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.2节Android平台的特点及未来的趋势

1.2 Android平台的特点及未来的趋势 Android 3D游戏开发技术宝典--OpenGL ES 2.0 Android平台基于Linux,其不仅继承了Linux的各种优良特性,同时由于"Android之父"Andy Rubin的先进理念,使得Android平台又增加了许多非常具有吸引力的新特性.这不仅给终端用户带来了非凡的体验,还大大减轻了Android应用开发者的工作量与难度. 1.2.1 全新理念带来的体验风暴 Android是具有开源性质的手机终端解决方案,开发人员可以

android 内存清理-Android 获取所有运行的程序,5.0系统以上中获取不到问题

问题描述 Android 获取所有运行的程序,5.0系统以上中获取不到问题 下面是我这个获取所有运行的程序的方法,为什么在5.0系统以上中却获取不到呢?有这方面了解的前辈么?请求指教! /** * 获取所有正在运行的程序 * @param context * @return */ public static List<Programe> getRunningProcess(Context context) { final ProgrameUtils proutils = new Program

我的Android进阶之旅------&amp;gt;如何解决Android 5.0中出现的警告: Service Intent must be explicit:

我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.xtc.kuwo.watch.MUSIC_PLAY_SERVICE (has extras) } 1.错误描述 今天在Android4.4 的小米4手机上运行我的程序的时候没有报错,而在Android 5.1的华为P7上运行我的程序的时候报了以下的错

Android 系统内置App JNI

说明 将Android应用作为系统内置遇到一些问题: 一个是使用Android源码的mmm命令生成的JNI名字和使用NDK生成的JNI的名字是不一样的: 另外就是AndroidManifest.xml中的targetSDKVersion不能低于运行版本. JNI Android mmm命令 ...... No private recovery resources for TARGET_DEVICE sabresd_6dq make: Entering directory `/home/myzr/