NDK

Caused by: java.io.IOException: error=2, No such file or directory

匿名 (未验证) 提交于 2019-12-02 21:53:52
Caused by: java.io.IOException: error=2, No such file or directory 本着尝鲜的心态,最近把 Android studio 升级到了 Android Studio 3.1.2 ,升级之后项目突然不能正常编译运行了,报: :app:transformNativeLibsWithStripDebugSymbolForDebug Caused by: java.io.IOException: error=2, No such file or directory 详细报错信息: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug' . at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java: 100 ) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute

Android NDK Couldn't load indLibrary

匆匆过客 提交于 2019-12-02 21:47:44
前言: 1. so加载失败的常规原因是so未放到正确路径, 一般新手会遇到。如果你是新手, 查看常规解决方式: http://blog.csdn.net/yy1300326388/article/details/46291417 2. 本文适合已经Google多次, 且确定所有so路径正确, 但是还是报错没加载到so的无厘头bug情况. 本文所有内容均针对该情况进行描述. 其他情况就擅用搜索吧. 详细描述: 如果你遇到的情况是[2], 可能就是你最新 添加的依赖项目中可能包含多种架构支持 , 比如"arm-v8", "armeabi", "armeabi-v7a", "x86", "mips", 但是你的app中只有部分架构支持"armeabi"; 如果你此刻运行在"arm-v8"的手机上肯定就报错了, 因为你的apk中其实有了"arm-v8"目录, 但是里面没有对应的so. 找到你的apk文件, 用apktool解包, 找到你的so目录, 就会发现有多个目录, 但是里面的so数目不一样, 有些目录缺少个别so. 解决方法: 在项目的build.gradle中指定需要兼容的架构, 代码如下: defaultConfig { ndk { abiFilters "armeabi", "armeabi-v7a", "x86" } } 加了这个后再次编译成apk,

ADT 23.0.2 缺少NDK PATH 问题解决

耗尽温柔 提交于 2019-12-02 19:36:21
升级了ADT版本,遇到一个大问题: Windows -> Preferences -> Android ->NDK 找不到了。。 我是从 http://developer.android.com/sdk/index.html 下载了最新的 adt-bundle for mac(截止到2014年9月1日是最新的)。 文件名称:adt-bundle-mac-x86_64-20140702.zip ADT版本:ADT 23.0.2 Eclipse版本:Juno 装好之后,在 Windows -> Preferences -> Android -> 中竟然没有NDK选项。 折腾了很长时间,解决办法是:下载最新的ADT(ADT-23.0.3.zip),重新安装,重启,Windows -> Preferences -> Android -> NDK 出现。 下载地址: http://developer.android.com/sdk/installing/installing-adt.html 我觉得这应该是 ADT 23.0.2 一个BUG,Google也发现了这个问题,并在 ADT 23.0.3 中解决了,真是一个坑。。 来源: oschina 链接: https://my.oschina.net/u/85712/blog/308668

解决NDK出现error: exception handling disabled, use ...

限于喜欢 提交于 2019-12-02 18:54:35
本文出自: http://drovik.com/html/8410924155.html 问题来源: UDT的android平台移植过程中,在用NDK编译buffer.cpp文件时出现error: exception handling disabled, use -fexceptions to enable。 问题解决: 此问题的出现是编译器的异常异常捕获被禁用了,需要在Android.mk文件中开启。在Android.mk文件中添加: LOCAL_CPPFLAGS += -fexceptions就可以了。或者在Application.mk文件中添加APP_CPPFLAGS += -fexceptions 也是可以的。 补充: Android NDK r5对C++的支持情况 android平台提供了一个最小化的C++运行库(/system/lib/libstdc++)以及与之对应的头文件。 1、C++的异常支持: 从NDK r5就开始NDK的工具链就开始支持了C++的异常控制,只不过为了通用性的原因,所有的C++原文件被编译的时候都是默认的是-fno-exceptions,即不不支持异常控制的。 使用-fexceptions标记可以开启异常控制。所以你只需要在你的每个模块的Android.mk中添加LOCAL_CPPFLAGS += -fexceptions就可以了。 更简单的是

android的NDK和java进行本地socket通信

自闭症网瘾萝莉.ら 提交于 2019-12-02 18:51:32
关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过《android使用socket使底层和framework通信》 这篇文章,美中不足的是作者只贴出一些关键的代码片段而并没有放出源码。我这里还是以一个能实际运行的例子为基础来讲,这样也方便大家学习。 首先看一下效果,如下图。我填写姓名"Potter",选择性别"Mr"然后点击发送,底层socket收到消息后将消息直接返回给我,我将返回的结果(Mr.Potter)直接显示在Result。 编写socket服务端代码,生成可执行脚本htfsk。 #define SOCKET_NAME "htfsk" #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/wait.h> #include <sys/un.h> #include <cutils/sockets.h> #include <utils/Log.h> #include <android/log.h> int main(){ char log[200]; int

Android 之 JNI 开发 详解

自古美人都是妖i 提交于 2019-12-02 18:50:16
NDK项目源码地址 : -- 第一个JNI示例程序下载 : GitHub - https://github.com/han1202012/NDKHelloworld.git 一. JNI介绍 1. JNI引入 JNI概念 : Java本地接口, Java Native Interface , 它是一个 协议 , 该协议用来沟通Java代码和外部的本地C/C++代码, 通过该协议 Java代码可以调用外部的本地代码, 外部的C/C++ 代码可以调用Java代码; C和Java的侧重 : -- C语言 : C语言中最重要的是 函数 function; -- Java语言 : Java中最重要的是 JVM, class类, 以及class中的方法; C与Java如何交流 : -- JNI规范 : C语言与Java语言交流需要一个适配器, 中间件, 即 JNI, JNI提供了一种规范; -- C语言中调用Java方法 : 可以让我们在C代码中找到Java代码class中的方法, 并且调用该方法; -- Java语言中调用C语言方法 : 同时也可以在Java代码中, 将一个C语言的方法映射到Java的某个方法上; -- JNI桥梁作用 : JNI提供了一个桥梁, 打通了C语言和Java语言之间的障碍; 2. Android中的应用程序框架 正常情况下的Android框架 : 最 顶层 是

Go 和 Android 集成实战

狂风中的少年 提交于 2019-12-02 17:45:47
看到这个标题,你可能会问,为什么要在 Android 中运行 Go,直接使用 Java 不挺好吗? 是的,如果你有现成很强大的 Java 团队,这没有问题,但并不是所有团队都是如此。而且我在这里想强调的是 Android 与 Go 的集合,即在 Android 程序中使用 Go 而不是完全用 Go 来写 Android 程序。 我能想到在 Android 中用 Go 的一些原因: 团队熟悉 Go, 对 Java/Android 了解不多。 已经有现成的 Go 核心代码,比如开源类库: libp2p,turn/stun 类库等。 自己服务的 SDK 其核心逻辑复杂,繁琐,涉及大量网络或并发的操作。 能够在 Android 上使用 Go 代码,得益于 Go 强大的交叉编译能力,那该如何在 Android 上使用我们的 Go 库呢,接下来我将通过一个简单的示例来讲解。 实例教程 本例是在 Android 程序中使用 Go 编译的一个简单动态库来实现对网站测速的简单例子。 思路: Go 交叉编译为 Android 平台支持的 so 文件。 在 Android 中使用 JNA 调用该 so 文件。 依赖: Go NDK r20 JNA 5.4.0 说明: 演示环境为 Mac。 编写 Go 测试代码 编写 speedtester 的核心代码,实现对任意网站访问速度的检测: package

每周总结20130814——Android NDK环境的搭建和使用,YUV420SP格式图像的处理

十年热恋 提交于 2019-12-02 16:51:17
Windows下搭建Android NDK开发环境 更新:比较新的版本的Android NDK都自带基本的GNU工具链,所以不用安装庞大的cygwin或者MSYS了,直接解压NDK然后在Eclipse里配置编译器就可以了。 ———————————————————————————————————— Android NDK需要使用Linux下的make、gdb等开发工具,因此要安装一个模拟的Linux环境。这里选择最常用的cygwin。MSYS应该也可以,不过没有亲自试过,留给有求证精神并鄙视cygwin的庞大和缓慢的Coder去验证! cygwin有自己的安装器,相当于Linux发行版下的包管理器,用来管理软件。打开后选择从网络安装,选择一个合适的镜像,偷懒的话直接把Devel分类下的软件全部选上,点击下一步后这个包管理器会自己解决各种乱七八糟的依赖关系,给你下载安装几个G的软件包。如果有洁癖或者网络不给力,可以自己慢慢选择要装哪些软件,这样装的东西会少很多。顺便吐槽一句,cygwin的这个图形化包管理器体验真是渣,快装完的时候有个选项没看清,手贱点了一下上一步,我再次点击下一步的时候它就给我卸载又重新安装配置了一遍,于是又多花了十几分钟。。。有没有省事点的像aptitude这样牛气哄哄的工具? 装完cygwin后还要简单地配置一下。首先请下载最新版本的Android NDK并解压

android app中使用JNI

醉酒当歌 提交于 2019-12-02 00:58:18
JNI提供了一种机制,使得在Java 代码中可以使用 C/C++ 的本地层代码,这种使用主要是指在 Java 代码中调用 C/C++ 代码。这种机制为我们开启了一扇门,一扇将Java 代码与广阔的 C/C++ 本地层连接起来的门。 基于 android-ndk-r8d 提供的sample 程序——android-ndk-r8d/samples/hello-jni 的代码,我们来看一下,如何在 android 应用开发中使用 JNI。 首先来看在 Java 代码中需要做些什么事情: package com.example.hellojni; import android.app.Activity; import android.widget.TextView; import android.os.Bundle; public class HelloJni extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* Create a TextView and set its content. * the text

CMake下,某些选项的后调整

给你一囗甜甜゛ 提交于 2019-12-01 19:31:50
编译安卓NDK库时,发现在R15的NDK编译出来的库,总是带了-g选项,导致附带调试,文件过大。 搜索一番后,结论是NDK的文件中有问题: https://github.com/android/ndk/issues/243 R15版本的android.toolchain.cmake中,并未区分Release与RelWithDebInfo两种情况,直接附带-g选项 这种情况下,如果修改android.toolchain.cmake当然是大动干戈了,想想办法,CMake中的String派上用场了 在工程的CMakeLists.txt中添加如下选项: 再编译时,-g选项就会去除了 来源: https://www.cnblogs.com/eaglexmw/p/11714637.html