NDK

Android—JNI调用简单实例解析

随声附和 提交于 2019-12-01 04:39:27
转自: http://www.cnblogs.com/sevenyuan/p/4202759.html 感谢原作者的细心整理! 1. 在Eclipse中创建项目:TestJNI 2. 新创建一个class:TestJNI.java package com.wwj.jni; public class TestJNI { public native boolean Init(); public native int Add(int x, int y); public native void Destory(); } 以上代码声明三个本地方法。 3. 编译JNI 找到Android项目中bin目录下,会有classes文件夹,Eclipse自动为我们生成的字节码文件就在这个目录下。 我们在该路径下,使用javah命令,生成我们想要得到的.h头文件,如下图所示: 执行javah -jni com.wwj.jni.TestJNI命令之后,会在classes目录下生成头文件:com_wwj_jni_TestJNI.h 将它复制到jni文件夹下,打开如下: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_wwj_jni_TestJNI */ #ifndef

解决\"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android\"错误

瘦欲@ 提交于 2019-12-01 01:25:36
2018-10-10 22:47:29 vocanicy 阅读数 71740 更多 分类专栏: 学习笔记 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/vocanicy/article/details/83004626 今天安装了Android Studio 3.2,打开一个旧工程,编译提示"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android" 网上也有解决办法,就是下载旧版的NDK,将其中的toolchain复制到新版的NDK中 但是感觉这种方式,不是解决的正道。 经过对新版NDK的研究,发现NDK的更新记录里有一段话 This version of the NDK is incompatible with the Android Gradle plugin version 3.0 or older. If you see an error like `No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

Android: NDK编程入门笔记

让人想犯罪 __ 提交于 2019-12-01 01:15:01
为何要用到NDK? 概括来说主要分为以下几种情况: 1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。 2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。 3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。 下面就介绍下Android NDK的入门学习过程: 入门的最好办法就是学习Android自带的例子, 这里就通过学习Android的NDK自带的demo程序:hello-jni来达到这个目的。 一、 开发环境的搭建 android的NDK开发需要在linux下进行: 因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。 安装android-ndk开发包,这个开发包可以在google android 官网下载: 通过这个开发包的工具才能将android jni 的C/C++的代码编译成库 android应用程序开发环境: 包括eclipse、java、 android sdk、 adt等。 如何下载和安装android-ndk我这里就不啰嗦了,安装完之后,需要将android-ndk的路劲加到环境变量PATH中: sudo gedit /etc/environment

[Android]关于Native函数的debug

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-01 00:05:28
先占坑,有空发。 环境:WIN7 + eclipse + android sdk4.3 + ndk r9b 需求:安卓程序通过jni调用C代码,并对C代码进行debug。 纠结:1、使用真机,直接无法启动 2、使用模拟器,能够启动,但是无法进入debug ----------------------------------------------------------------- 由于新版本的ndk对native代码的debug功能支持的已经比较完善,环境搭建已经比较简单了,依稀记得之前为了搭建能够debug native代码的环境,愣是花了接近一个周的时间,各种试,各种不对,各种纠结囧。 1、在eclipse下配置正确的sdk以及ndk路径(我直接在google下载配置好的eclipse:adt-bundle-windows-x86_64) 2、新建android工程,右键工程->Android Tools->Add Native Support,eclipse自动创建jni文件夹,并且有一个cpp文件(如HelloJni.cpp)和Android.mk文件 3、写一个测试类TestClass public class TestClass { public String getStr() { String s = getStrFromNative(); return s; }

android NDK 二、编译方法

大憨熊 提交于 2019-12-01 00:05:11
1、NDK 一中已经提到,使用eclipse中的配置 ,自动编译 2、手动编译(推荐) 打开bash.exe(即启动cygwin) 使用cd $NDK 进入/cygdrive/e/android-ndk-r5/ 用cd进入到对应的目录; 进入对应的目录,使用 $NDK/ndk-build 编译得到结果,例如 1、 我们选择ndk自带的例子hello-jni,我的位于E:\android-ndk-r5\samples\hello-jni(根据你具体的安装位置而定), 2、 运行cygwin,输入命令cd /cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:\android-ndk-r5\samples\hello-jni目录。 3、 输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序) 4、 此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦! 注意 $NDK是cygwin 模拟器中配置的环境变量,值为/cygdrive/e/android-ndk-r5;ndk-build为脚本,位置在/android-ndk-r5目录下 来源: oschina 链接:

android ndk profiler 分析本地代码

徘徊边缘 提交于 2019-12-01 00:04:42
写一写前两天用android ndk profiler 分析本地代码的过程,在此记录一下,防止以后忘记 步骤: 1、官网下载android ndk profile : https://code.google.com/p/android-ndk-profiler 2、更改Android.mk, 加载android ndk profiler模块。 其实这个步骤的详细过程官网已经有了,基本按官网的说明来做就可以了: http://code.google.com/p/android-ndk-profiler/wiki/Usage <!-- lang: shell --> # compile with profiling LOCAL_CFLAGS := -pg LOCAL_STATIC_LIBRARIES := android-ndk-profiler # at the end of Android.mk $(call import-module,android-ndk-profiler) 看我的android.mk: <!-- lang: shell --> LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # compile with profiling LOCAL_CFLAGS := -pg LOCAL_STATIC

android -------- Eclipse下的NDK配置环境

北城以北 提交于 2019-12-01 00:03:52
NDK 全称是Native Development Kit,是一个让开发人员在Android应用中嵌入使用本地代码编写的组件的工具集 原生开发工具包 (NDK) 是一组可让您在 Android 应用中利用 C 和 C++ 代码的工具。 可用以从您自己的源代码构建,或者利用现有的预构建库。 相关介绍请看博客: NDK下载地址: https://developer.android.google.cn/ndk/downloads/index.html 下载完成后解压 在Eclipse中指定NDK路径 打开Eclipse--->windwos---->preference--->Android---->NDK 注意这里进入到 build目录,不然你会发现Eclipse可能会有错误提示。 之后就是配置环境变量了 第一步:先创建一个根目录的系统环境变量NDK_ROOT 输入ndk安装路径 第二步:将NDK路径加入到变量Path中, %NDK_ROOT%; 之后就是验证是否成功了 Window+R --> cmd 打开控制台 输入ndk-build验证 恭喜你,你的NDK环境搭建成功了。 来源: oschina 链接: https://my.oschina.net/u/2945455/blog/1800099

Android NDK &apos;std::string&apos; has not been declared

允我心安 提交于 2019-11-30 23:15:22
最近使用NDK, 在C++头文件中加入 #include <string> ndk-build后报错 x.h: fatal error: string: No such file or directory 试着换成 #include <string.h> ndk-build后继续报错 x.h: error: 'std::string' has not been declared 真是郁闷, 后来在网上搜索了一大圈, 原来是需要让Android NDK支持STL Import STL libraries to the Android NDK code > This is a quick tip for those who are beginning to write native Android code. > As one may have noticed, it isn’t possible to use containers like, string, vector, list inside the NDK samples. > These are all part of the STL (Standard Template Library), and are expected to be available when writing C++ code. > The

linux 随手记命令

六月ゝ 毕业季﹏ 提交于 2019-11-30 11:28:14
1. linux ip限制 使用hosts.allow和hosts.deny来设置ip白名单和黑名单,/etc/目录下 2. linux-06bq:/etc/samba # useradd sunjing linux-06bq:/usr/local/services/samba/bin # ./smbpasswd -a sunjing 也可以 sudo pdbedit -a XX 设置smb 密码 3. samba /etc/samba/smb.conf # /etc/init.d/smbd restart sudo service smbd restart pdbedit -L list all user 4. cmd javah 是在jdk目录里面 javah 帮助生成jni接口文件,再在接口文件基础上实现方法即可 ndk 需要自己从官网单独下载,AS上通过sdk更新出来的ndk不知道是做什么用的,绕了一天的弯路,才回忆起以前是怎么编译ndk的 下载ndk http://wear.techbrood.com/tools/sdk/ndk/ 解压出来,可以将Ndk目录所在设置到环境变量中 PATH E:\Android\sdk\android-ndk32-r10b\android-ndk-r10b 在cmd窗口ndk-build即可检查环境变量是否生效 ndk 编译 G:

Android Studio 使用NDK编译jni

落爺英雄遲暮 提交于 2019-11-30 10:50:52
试用了Android Studio一段时间,发现这东西不支持C/C++,而且创建工程也只能创建Android的工程.这可苦恼死我了.... 网上找了找,大多人都说是AndroidStudio和Eclipse之间来回切换..这不悲剧吗? 在AndroidStuido的Setting-Plugins中发现有C/C++的插件,安装后发现自己能力有限,不会玩这东西.. 每次要打开C文件点击Tools-Cpp Support-Do compile for selected c/c++ file to compile.才能编译 编译过程发现有这样一个文件"C:\Users\Administrator.Mutour-pc\.AndroidStudioPreview\system\tmp\gcc4139693535478647149.bat" 打开 发现很简单的几句话: set PATH=$PATH$;c:\cygwin\bin gcc 很显然,编译失败......... 想到Eclipse中编译NDK时的设置 " http://my.oschina.net/mutour/blog/98535 " 修改该文件如下:(其实跟命令行编译一样...) set PATH=$PATH$;E:\cygwin\bin bash.exe --login -c "cd $(cygpath -u 'E: