1.保证AS中安装了ndk cmake 等插件 如没有可以通过AS中的Android SDK -> SDK Tools 勾选 在线下载安装
  2.创建一个Android 项目Demo项目即可 
  3.添加Java2CJNI.java 注意此文件的包名类名
 
 public class Java2CJNI {    //static {    //    System.loadLibrary("Java2C");    //}    public native String java2C();}

   // System.loadLibrary("Java2C");//}public native String java2C();}注意此文件中的            static {

System.loadLibrary("Java2C");
} 先注释掉 后面在编译生成.so库时再添加

4.生成.h文件
先将Java2CJNI.java 运用javac生成.class 文件再通过javah 命令生成.h
javac F:\AndroidStudio\MyJDK2\app\src\main\java\com\example\revo\myjdk\Java2CJNI.java
javah -classpath D:\androidstudy\app\build\intermediates\classes\debug -jni com.example.revo.myjdk.Java2CJNI
最后在代码目录如果看到com_example_revo_myjdk_Java2CJNI.h文件说明已成功
5.创建jni目录 拷贝com_example_revo_myjdk_Java2CJNI.h 同时创建.c文件
//// Created by Administrator on 2018/5/24.//#include "com_example_revo_myjdk_Java2CJNI.h"JNIEXPORT jstring JNICALL Java_com_example_revo_myjdk_Java2CJNI_java2C  (JNIEnv *env, jobject instance){  return (*env)->NewStringUTF(env, "I am From Native C");}
       6.build.gradle文件和gradle.properties 的修改
注意build.gradle 文件为app目录下的
defaultConfig {
        applicationId "com.example.revo.myjdk"
        minSdkVersion 27
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk {
            moduleName "Java2C"                 //生成的库名
            abiFilters  "armeabi-v7a", "x86"    //指定的平台类型,如果不写,则默认会生成全平台的
        }
    }
gradle.properties文件中增加如下一行android.useDeprecatedNdk=true
点击Rebuild project 如果出现类似android.deprecatedNdkCompileLease=1527128725578等错误请在gradle.properties文件中增加如下一行
添加 android.deprecatedNdkCompileLease=1527128725578 注释掉android.useDeprecatedNdk=true
7.再次Rebuild project 如果成功 在MyJDK2\app\build\intermediates\ndk\debug\lib\armeabi-v7a
  和MyJDK2\app\build\intermediates\ndk\debug\lib\x86目录均会出现libJava2C.so文件
  为了使用.so库中的函数记得将 
  public class Java2CJNI {
static {
System.loadLibrary("Java2C");
}
public native String java2C();
}
static {
System.loadLibrary("Java2C");
}注释部分去掉    

    8.总结如果熟练或者说提高效率 4 5 步骤可以省略不用他们生成.h 直接新建jni文件 添加.c文件

    可通过下面链接直接下载源码:

    下载源码

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. android 命令行 sqlite3 not found 解决方案
  6. 安卓项目构建与编译
  7. android相关插件下载以及安装
  8. Android(安卓)Audio 创建AudioTrack对象
  9. Android(安卓)SDK安装是连接不上问题

随机推荐

  1. centos7.2离线安装mysql5.7.18.tar.gz
  2. CentOS7下二进制安装mysql 5.7.23
  3. 查看mysql当前连接数的方法详解
  4. mysql 5.5.56免安装版配置方法
  5. mysql自联去重的一些笔记记录
  6. mysql踩坑之limit与sum函数混合使用问题
  7. MLSQL Stack如何让流调试更加简单详解
  8. 新手把mysql装进docker中碰到的各种问题
  9. MySQL复制机制原理讲解
  10. HeidiSQL工具导出导入MySQL数据