Android JNI HelloWorld

本次操作的原则:能少做一步绝不多做,把可能碰到的坑都踩一次。
把碰到的问题尽可能详尽的解释清除。
所以这应该是一个冗长的博客。 
尽量写清楚重点把,下次看的时候选择性阅读把。 

  • 开发环境
    • Ubuntu16.04
    • AndroidStudio 2.3

注意
如果在系统命令行界面 提示:
command not found
请考虑环境变量的配置是否完善


一、创建一个Android project

二、创建native方法

package com.example.tom.jnitest_3;

/**
 * Created by tom on 17-6-18.
 */
public class JniTest {
   
    static{
        System.loadLibrary("MyJNI");//本字段和下边的设置相对应
    }
    public  static native String SayHello();
}

三、编译项目

本步骤的终极目标是把包含native方法的.java文件编译为.class文件。
本步骤方法有二

  1. **笔者采用此方法**make project(Ctrl+F9)——编译整个项目
    • 这样在/项目路径/module路径/build/intermediates/classes/debug可以找到.class文件
  2. 也可以使用最原始的方法:javac(可以在系统控制台也可以在AndroidStudio 的Terminal窗口进行)
    • cd命令进入.java文件所在位置
    • 执行javac JniTest.class命令。

四、生成.h头文件(生成和native方法相对应的C接口)

本步骤涉及命令 javah

tom@tom-Vostro-2421:~$ 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
  -cp <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).
tom@tom-Vostro-2421:~$ 

本步骤方法有二:(承接步骤三)

  1. cd命令进入/项目路径/module路径/build/intermediates/classes/debug目录下(注意一定要锁定到debug目录)

    • 观察步骤二中JniTest类的包名。
    • 执行命令 :

      //javah开始关注
      tom@tom-Vostro-2421:/media/tom/other/workspace/android_workspace_as/JniTest_3/app/build/intermediates/classes/debug$ javah -d /media/tom/other/workspace/android_workspace_as/JniTest_3/app/src/main/jni -jni com.example.tom.jnitest_3.JniTest
    • 命令解析-d /media/tom/other/workspace/android_workspace_as/JniTest

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值