先说javah万年坑

javah语法:

Usage:

javah [options] <classes>

where [options] include:

-o <file>                Output file (only one of -d or -o may be used)

-d <dir>                 Output directory

-v  -verbose             Enable verbose output

-h  --help  -?           Print this message

-version                 Print version information

-jni                     Generate JNI-style header file (default)

-force                   Always write output files

-classpath <path>        Path from which to load classes

-bootclasspath <path>    Path from which to load bootstrap classes

<classes> are specified with their fully qualified names

(for example, java.lang.Object).

在MainActivity中函数

  public static native String stringFromJNI(); 
先make project 生成 class文件,然后如下:
mac与windows下 javah的使用不尽相同:

注意HelloJni.class是个二进制文件,假设当前文件夹目录是aa   那么其下就是  com\example\hellojni\HelloJni.class的结构

在classpath 类路径下   编译 com.example.hellojni.HelloJni 变成 .h文件

windows下 (;)

javah -classpath .;F:\\aa\\android.jar -d jni com.example.hellojni.HelloJni

mac下(:)

javah -classpath .:/Users/wyj/Desktop/a/android.jar -d jj com.example.hellojni.HelloJni

否则就一直报错说找不到

写好Android.mk文件

 LOCAL_PATH := $(call my-dir)

 include $(CLEAR_VARS)

 LOCAL_MODULE    := hello
LOCAL_SRC_FILES := hello.c include $(BUILD_SHARED_LIBRARY)

解决了javah之后,在命令提示符中切换到jni的上一级目录 输入命令ndk-build  编译出 *.so文件

在android studio中 把相应的 armeabi/*.so  文件结构

在main中建立 jniLibs文件夹  然后把 armeabi/*.so 拷贝进去 然后就可以访问了。

在  jniLibs.srcDirs = ['xxx']  //这里xxx代表一个目录。可以改变jniLibs的读取路径 ,   默认的 jniLibs结构是 src/main/jniLibs

ndk生成的so文件 只能 给 具有该目录包结构的 *.java 用,放到其它工程中 包不对应则不能用。

例如:.c文件中的函数为

  JNIEXPORT jstring JNICALL Java_com_example_wyj_myapplication_MainActivity_stringFromJNI 

能够使用的类的结构 必须是 com.example.wyj.myapplication 文件包结构的 MainActivity类 下面的 stringFromJNI 函数才能被用
放入其它工程如果不是遵从这个结构的 会报错,函数找不到, 当然*.so可以加载。 使用的时候 在MainActivity.java中
     public static native String  stringFromJNI();
static {
System.loadLibrary("hello");
}

ndk android studio万年坑的更多相关文章

  1. Android SDK Android NDK Android Studio 官方下载地址

    2016.12 Android Studio Windows Includes Android SDK https://dl.google.com/dl/android/studio/install/ ...

  2. Android SDK Android NDK Android Studio 官方下载地址<转>

    转自:http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html 2016.10Android Studio 2.2.1.0https ...

  3. Android Studio采坑记录

    折腾了几个月的Android Studio,终于在今天被我搞定了 ( ̄▽ ̄)~* 开贴记录下,免得下次再次采坑 先说下我之前电脑的环境配置吧,sdk是几年前在网上下载别人整理出来的包,一直没有更新过 ...

  4. android studio 编译NDK android studio 生成.so文件

    详细配置使用请移步:https://www.jianshu.com/p/4c7d9a10933b android studio NDK 编译 第一步: app/build.gradle下面 添加代码: ...

  5. Android Studio 首坑 Gradle sync failed: Cause: error in opening zip file 的错误

    前言 今天安装Android studio 2.3.1时发生了一个错误,安装完成后创建第一个Hello World项目是报错.经过这个百度后,结果没有一个靠谱的.将拆解经过记录一下. 环境: 操作系统 ...

  6. [android ndk] -android studio中编译生成so文件

    1.android.useDeprecatedNdk=true Error:Execution failed for task ':app:compileDebugNdk'.> Error: N ...

  7. Android Studio踩坑记

    1. 模拟器在管理器中可以运行,但是点击run时死活找不到:    在sdk的/platform-tools/目录下找到adb.exe工具    打开cmd,输入下面两条命令    adb kill- ...

  8. Android Studio中JNI -- 1 -- 配置方法

    1.配置NDK 1.1 下载NDK Android Studio 1.2 配 android-ndk-r10e,不同版本的Studio需要配置不同的ndk,下载完成后,随便解压放至某个文件目录下 1. ...

  9. Android Studio gradle配置详解

    android gradle配置详解 AppExtension类及其属性 可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候 ...

随机推荐

  1. 15款Chrome浏览器插件让设计师告别拖延症

    秋高气爽,分享一大波有效帮助设计师提高工作效率的Chrome浏览器扩展程序! 高效是另一种王道 无论是在工作中,还是在生活中,有些词我们说来就满满正能量,而另外一些话提起就很沮丧,后者如拖延症,前者如 ...

  2. mysql提权笔记

    最近小菜遇到mysql提权,总是会搞错,就记记笔记吧!以后方便用 先说手工吧! mysql<5.0,导出路径随意:5.0<=mysql<5.1,则需要导出至目标服务器的系统目录(如: ...

  3. OpenJudge计算概论-循环移动

    /*=============================================================================== 循环移动 总时间限制: 1000ms ...

  4. Tkinter颜色方案举例

    效果图: 示例代码: # _*_ coding: utf-8 _*_ from Tkinter import * colors = '''#FFB6C1 LightPink 浅粉红 ,#FFC0CB ...

  5. chrome比较好用的网站整页(超长网页)截图插件

    chrome比较好用的网站整页(超长网页)截图插件:fireshot capture 试用过比较好用

  6. ZooKeeper伪分布集群安装及使用 RMI+ZooKeeper实现远程调用框架

    使用 RMI + ZooKeeper 实现远程调用框架,包括ZooKeeper伪集群安装和代码实现两部分.  一.ZooKeeper伪集群安装: 1>获取ZooKeeper安装包 下载地址:ht ...

  7. Format可能存在的坑

    import java.text.MessageFormat; public class TestFormat { public static void main(String[] args) { / ...

  8. maven时候Embedded error: error in opening zip file

    maven时候Embedded error: error in opening zip file 用 mvn clean install -Dmaven.test.skip=true -Denv=re ...

  9. hadoop(二):hdfs HA原理及安装

    早期的hadoop版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用.为了解决这个问题,出现了一堆针对HDFS HA的解决方案(如:Linux ...

  10. 【web】 亿级Web系统搭建——单机到分布式集群

      当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架 ...