首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android NDK -执行返回0的.so,但不工作

Android NDK是Android Native Development Kit的缩写,是一套用于开发Android应用的工具集,它允许开发者使用C和C++等本地语言编写Android应用的部分或全部代码。

当执行一个返回0的.so文件时,即执行成功但没有产生预期的结果,可能出现以下几种情况:

  1. 代码逻辑问题:检查.so文件中的代码逻辑是否正确。可能存在语法错误、逻辑错误或其他错误导致.so文件不工作。可以通过调试、日志输出等方式来查找问题所在。
  2. 系统兼容性问题:某些.so文件可能对特定的Android版本或设备有兼容性要求。检查.so文件是否与目标Android版本和设备兼容,如果不兼容,则需要进行相应的适配。
  3. 依赖库缺失或版本不匹配:.so文件可能依赖其他库文件,确保所需的依赖库存在且版本正确。可以通过检查.so文件的依赖关系和版本信息来确定是否存在此类问题。
  4. 资源访问问题:检查.so文件是否正确访问了所需的资源文件或系统权限。如果.so文件需要读写文件、网络访问或其他系统资源,需要确保相应权限已被授予。
  5. 编译配置问题:检查.so文件的编译配置是否正确。例如,检查编译选项、编译器版本、编译参数等,确保正确生成.so文件。

推荐的腾讯云相关产品:腾讯云提供了一系列云计算产品,适用于各种场景和需求,包括:

  1. 云服务器(Elastic Compute Cloud,简称CVM):提供稳定、可靠的云服务器实例,可根据需求弹性调整配置。
  2. 云数据库(TencentDB):提供关系型数据库(MySQL、SQL Server等)和NoSQL数据库(MongoDB、Redis等)服务,支持高可用、高性能的数据存储和管理。
  3. 云存储(Cloud Object Storage,简称COS):提供海量、安全、高可靠的对象存储服务,适用于图片、视频、文档等文件的存储和管理。
  4. 人工智能(AI)服务:腾讯云提供了一系列人工智能服务,如人脸识别、语音识别、机器翻译等,可用于开发智能化的应用和解决方案。
  5. 腾讯云CDN:提供全球加速、流量分发等功能,可提升网站和应用的访问速度和用户体验。

注意:以上只是一些建议的腾讯云产品,具体根据实际需求选择合适的产品。请查阅腾讯云官方网站(https://cloud.tencent.com/)获取更多详细信息和产品介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

NDK开发_编译cpp引用到 其它so, Android.mk 写法

如果我们编译so文件需要引用到其它so文件,那我们来看下这时候Android.mk 文件如何写。...一、不需要ndk编译 .cpp,直接是 so文件 切到 Project 视图,在java同级目录下 新建 jniLibs文件夹,再根据平台需要,在jniLibs目录下建 armeabi-v7/x86 ....文件夹, 下面的截图 根据平台需要建是armeabi-v7a文件夹,然后将相应 so文件复制到该目录下即可。编译运行工程后,相应so就打包进apk了。 ?...二、需要ndk 编译.cpp, 编译 .cpp 需要引用外部 .so 如下图所示,ndk 编译 util.cpp,需要引用到 libyuv2rgb.so ,我们看下 Android.mk中内容 ?...so 在 app/build/intermediates/ndk/ 目录下。

1.2K20

Android NDK编程(六)--- JNI中类参数传递与返回

前言 代码往往在不断写情况下学习到新东西,本以为NDK程序这块出完番外篇后应该就不用再出了,结果在使用过程中还是会有新东西加入,所以又有了今天这一篇。...price=0; qty=0; } //商品编码 public String incode; //商品名称 public String fname...; //价格 public float price; //数量 public int qty; } ---- 从JNI中得到返回信息 我们在VaccaeJNI类中加入一个静态方法...生成返回步骤: 用FindClass获取到我们CProduct类 用GetFieldID来定义类CProduct里面的属性信息 实例化我们类 通过SetXXXXXField方法全各个属性赋值...操作步骤: 用FindClass获取到我们CProduct类 用GetFieldID来定义类CProduct里面的属性信息 通过SetXXXXXField方法全各个属性赋值 返回类信息 从上面的步骤我们看到

1.5K10
  • AndroidNDK开发初体验

    它可以自动地将so和Java应用一起打包,极大地减轻了开发人员打包工作。 ARM 早起Android只支持ARMv5CPU架构,而发展到现在,支持一下7种架构: ?...在法律允许范围内 我们不作任何担保,这包含但不限于任何商业适售性以及针对特 定目的适用性担保。...make-.c.jpg 执行完改命令会在main/jni目录下生成对应头文件 ?...在Android.mk这个文件当中我们定义生成so名称,生成so对应cpp文件路径和so输出路径。 lib目录下我们可以看到各种类型CPU架构下so文件。...文件生成so时候可能会遇到这样问题: 解决办法1: 将Android.mk文件copy到jni目录下和.h与.cpp文件放在同一级目录,然后在该目录下执行ndk-build。

    1.3K40

    Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★

    目标进程 中 /system/lib/libc.so 动态库中 mmap 函数地址 ) 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so...三 | 等待远程函数执行完毕 | 寄存器获取返回值 ) 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取 linker 中 dlopen 函数地址 并 通过 远程调用...执行该函数 ) 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入 libbridge.so 动态库中 load 函数地址 并 通过 远程调用 执行该函数 )...进程注入工具开发 ( 远程调用 | x86 架构返回值获取 | arm 架构远程调用 ) 【Android 逆向】Android 进程注入工具开发 ( 远程进程 注入动态库 文件操作 | Android...0x06 0x02 0x7B 0x41 0x08 10 个字节内存特征 , 获取到一个内存地址 ; 5、修改内存 执行 .

    2.1K20

    NDK 是什么 | FFmpeg 5.0 编译 so

    其实 JNI 含义是 Java Native Interface ,这种接口允许 Java 和其他语言进行交互,包括但不限于 C/C++ 。...其余东西暂时对我们来说并没有什么太大意义,现在我们目的是通过这个源码通过 NDK 来编译成在 Android 中可以使用动态链接库 so 文件。...其实在 Android 开发中,NDK 作用也是如此,核心价值也是把其他语言编译成Android 平台可以访问 so 而已。所以也不要觉得 NDK 有多么神秘,就是一个工具集而已。...'] } } //... } 另外添加 jniLibs.srcDirs 指向为了解决下面的异常,而且 jniLibs.srcDirs 指向什么目录都无所谓,但不加引入 so 时就会报错...最后用官网几句话收尾:Android NDK 是一组使您能将 C 或 C++(“原生代码”)嵌入到 Android 应用中工具。

    1.4K21

    Android 逆向】修改运行中 Android 进程内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

    , 游戏进程肯定有对应内存空间 ; 使用 注入工具 将 一个 libnative.so 动态库 , 注入到游戏运行进程对应内存中 , 注入成功后 , 在运行内存中就存在了该 libnative.so...动态库 ; libnative.so 动态库作用是 跨进程接收 外部 另外一个进程 cmd 指令 , cmd 会告知 libnative.so 动态库 , 要搜索以及修改内存细节 , 如要搜索什么特征内存..., 以及修改指定内存地址指定数据 ; 具体工作流程 : 通过 IDA 内存分析工具找到要修改代码特征 ; 使用 cmd 工具远程通知 注入到 被调试进程中 libnative.so 动态库 ;...libnative.so 动态库 搜索 代码特征 , 并返回内存地址 ; 使用 cmd 工具向 libnative.so 动态库 发送修改 指定内存 指定 n 字节数据 ; 二、编译内存调试动态库以及调试程序...; Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd

    86110

    Android Studio2.2下NDK开发初试

    很久没更博了,这次来记录一下如何在Android Studio2.2中进行NDK开发吧,NDK开发嘛,就是将C/C++代码编译成so类库,供java调用(当然c调用java也是可以),还记得以前没有...IDE时候,需要在linux环境编译,非常麻烦,光是看完教程就不想弄了,但不得不说Android Studio是Android开发神器,它将一切都弄的如此简单。...-8 APP_CFLAGS += -DSTDC_HEADERS 下一步,需要在appbuild.gradle中说明ndk-buildmk文件在哪里,在android范围内添加 externalNativeBuild...下面是as生成hello-jni.c,我已经写好了返回值。...,需要注意是,c代码中函数名相信很多人都已经发现了,和我们在java代码中声明native不同,长了一大串,它格式其实是 JNIEXPORT 返回值类型 JNICALL Java_java类包名

    96950

    Android 增加JNI

    需要交互本地代码 实现在 Java中声明Native方法 编译.so库文件 通过Java命令执行 Java程序,最终实现Java调用本地代码 如 Java 需要与 C++ 交互,那么就用C++实现...,并自动将so和应用一起打包成 APK 即可通过NDKAndroid中 使用 JNI与本地代码(如C、C++)交互 应用场景:在Android场景下 使用JNI 即 Android开发功能需要本地代码...; // 上述代码是返回一个String类型"Hello i am from JNI!"...下面我讲解一下JNI类型与Java类型对应关系介绍 步骤4:创建Android.mk文件 作用:指定源码编译配置信息 如工作目录,编译模块名称,参与编译文件等 具体使用 Android.mk...LOCAL_PATH := $(call my-dir) // 设置工作目录,而my-dir则会返回Android.mk文件所在目录 include $(CLEAR_VARS

    1.5K40

    opencv集成opencv_contrib编译生成Android工程

    )文件之前,我们要回到文章开头部分,我们需要配置好系统环境变量,这样我们才能在系统环境下执行ndk相关编译命令,如果您环境变量还没有配置,那么可以参考下文章开头部分,如果已经做好这部分工作,那么咱们继续...接下来,我们还要创建如下两个文件:Android.mk 和 Applicatoin.mk (非必要) 创建Android.mk Android.mk文件用来指定源码编译配置信息,例如工作目录,编译模块名称...:= hello_jni.cinclude LOCAL_PATH:设置工作目录,而my-dir则会返回Android.mk文件所在目录。...假设我们配置好了Android.mk文件,那么接下来我们就可以执行如下命令来生成.so文件了,我们假设开发NDK目录为默认目录: cdsrc/main/jni/ndk-build 如果顺利,那么你将会看到.../jniLibs指定具体输出目录 当你得到了.so文件,那么接下来就是在java文件中调用执行即可,如果想了解更多ndk-build命令内容,可参见:Android ndk-build 使用文档 --

    2.5K10

    Android:JNI 与 NDK到底是什么?(含实例教学)

    Java需要交互本地代码 实现在 Java中声明Native方法 如 Java 需要与 C++ 交互,那么就用C++实现 JavaNative方法 编译.so库文件 通过Java命令执行 Java...+动态库,并自动将so和应用一起打包成 APK 即可通过 NDKAndroid中 使用 JNI与本地代码(如C、C++)交互 应用场景:在Android场景下 使用JNI 即 Android...; // 上述代码是返回一个String类型"Hello i am from JNI!"...步骤4:创建Android.mk文件 作用:指定源码编译配置信息 如工作目录,编译模块名称,参与编译文件等 具体使用 Android.mk LOCAL_PATH :=...$(call my-dir) // 设置工作目录,而my-dir则会返回Android.mk文件所在目录 include $(CLEAR_VARS) // 清除几乎所有以LOCAL

    3.4K21

    jni和ndk详解

    NDK其实多了一个把.so和.apk打包工具,这个是很重要。 而JNI开发并没有打包,只是把.so文件放到文件系统特定位置。...NDK可以自动地将 so 和 Java 应用一起打包,极大地减轻了开发人员打包工作。 2、NDK 提供了一份稳定、功能有限API头文件声明。...问:NDK带来什么 1、NDK 发布,使“Java+C”开发方式终于转正,成为官方支持开发方式。 使用NDK ,我们可以将要求高性能应用逻辑使用 C 开发,从而提高应用程序执行效率。...使用NDK ,我们可以将需要保密应用逻辑使用 C 开发。毕竟, Java 包都是可以反编译NDK促使专业 so 组件商出现。...(乐观猜想,要视乎 Android 用户数量) 2、NDK 将是Android平台支持C开发开端。 NDK提供了开发工具集合,使开发人员可以便捷地开发、发布C组件。

    1K90

    FFmpeg开发笔记(五十九)Linux编译ijkplayerAndroid平台so

    mount -o remount,size=2G /tmp二、安装AndroidSDK和NDK依次执行下列命令下载并安装AndroidSDK,注意不要用太高版本SDK,因为ijkplayer没有适配高版本.../sdkmanager "build-tools;28.0.3" "platforms;android-28"依次执行下列命令下载并安装AndroidNDK,注意不要用太高版本NDK,因为ijkplayer..._64.zipunzip android-ndk-r10e-linux-x86_64.zip执行下面的环境变量设置命令,分别设置SDK环境变量ANDROID_SDK,以及NDK环境变量ANDROID_NDK.../init-android.sh然后依次执行下列命令,分别编译ijkplayer需要openssl库和ffmpeg库,以及ijkplayerso库。...把包含三个so文件在内整个libs目录复制到App工程libs目录,即可完整ijkplayerso库导入工作

    15910

    Android JNI(一)——NDK与JNI基础

    那么NDK作用,就是Google为了提供给开发者一个在Java中调用C/C++代码一个工作。...NDK本身其实就是一个交叉工作链,包含了Android一些库文件,然后,NDK为了方便使用,提供了一些脚本,使得更容易编译C/C++代码。...ndkso.png 从上图这个Android系统框架来看,我们上层通过JNI来调用NDK,使用这个工具可以很方便编写和调试JNI代码。...因为C语言不跨平台,在Mac系统下使用NDK编译在Linux下能执行函数库——so文件。其本质就是一堆C、C++头文件和实现文件打包成一个库。...这就是为什么C/C++编译后代码无论在任何平台上都能执行。不过,一些早期版本并不支持二进制兼容。二进制兼容性是一种程序兼容性类型,允许一个程序在不改变其可执行文件条件下在不同编译环境中工作

    2.8K32

    Android 应用开发】Android 开发 之 JNI入门 - NDK从入门到精通

    生成 动态库 so 文件 : 进入 Android.mk 所在目录, 在该目录执行 ndk ndk-build 命令; -- e....交叉编译库文件 C代码执行 : C代码被编译成库文件之后, 才能执行, 库文件分为动态库 和静态库 两种; -- 动态库 : unix环境下.so 后缀是动态库, windows环境下.dll 后缀是动态库...linux平台编译出在arm平台下执行二进制库文件; NDK版本介绍 : android-ndk-windows 是在windows系统中cygwin使用, android-ndk-linux 是在...解压 : android-ndk-r9c 目录就是NDK目录; 执行以下NDK目录下 ndk-build 命令 : ...., 执行脚本也是不同, 不同平台会引用不同头文件, 编译时候一定注意 sdk 与 ndk 版本要一致; so文件在内存中位置 : apk文件安装到手机上之后, .so动态库文件存在在 data/

    3.3K11

    Android开发笔记(六十九)JNI实战

    NDK NDK用途 NDK全称为Native Development Kit,意即原生开发工具,NDK允许开发者在APP中通过C/C++代码执行部分程序。...虽然JNI是java平台标准,但要想在Android上使用JNI,还得配合NDK才行。 NDK提供了C/C++标准库头文件,以及标准库动态链接文件(主要是.a文件和.so文件)。...而JNI是在自己工程下面编写JNI接口C/C++代码以及mk编译文件,代码中要包含NDK头文件,然后mk文件又依据规则把标准库链接进去,编译通过形成最终so动态库文件。...JNI开发步骤 下面是本人总结jni开发步骤: 1、首先确保NDK环境搭建完成,并且Android工程已经添加了NDK支持。...JNI编码注意事项 下面是本人在实际开发中,总结出来几个注意事项(不完整,在实际工作中持续更新): 1、每个接口必须写在不同c文件中,同时要修改Android.mk,在LOCAL_SRC_FILES

    93240
    领券