zoukankan      html  css  js  c++  java
  • ubuntu下整合eclipse和javah生成jni头文件开发android的native程序(转)

    本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的javah命令,第二种为整合javah到eclipse里面。推荐第二种方式,方便快捷,随时修改随时生成

    0:前提和条件:

    1:ubuntu64位系统

    2:android-ndk-r8e已经安装好,并且配置到eclipse里面

    3:android-sdk-linux已经安装好,并且配置到eclipse里面

    1:第一种命令行模式

    1:如图,我的项目结构是这样,我的

    如图,采用eclipse自动生成的jni文件夹中,可以看到Android.mk和hello.cpp,此时hello.cpp中什么都没有,下面我们利用终端命令进入到项目文件夹,然后进入到bin/classes文件夹(之所以不在项目目录下而进入到bin/classes文件夹部分原因是因为在这里面可以很方便的用tab键敲出类名,不至于出错),结构如图:

    利用tab键敲出这个,然后再去掉后面的class和替换/为.走起

    其中-d为生成的目录文件夹,替换为下图,然后回车

    可以进入jni文件夹看到生成了.h头文件

    查看文件为

    [html] view plaincopy
     
    1. /* DO NOT EDIT THIS FILE - it is machine generated */  
    2. #include <jni.h>  
    3. /* Header for class com_hello_word_HellowordActivity */  
    4.   
    5. #ifndef _Included_com_hello_word_HellowordActivity  
    6. #define _Included_com_hello_word_HellowordActivity  
    7. #ifdef __cplusplus  
    8. extern "C" {  
    9. #endif  
    10. /*  
    11.  * Class:     com_hello_word_HellowordActivity  
    12.  * Method:    sayHello  
    13.  * Signature: ()Ljava/lang/String;  
    14.  */  
    15. JNIEXPORT jstring JNICALL Java_com_hello_word_HellowordActivity_sayHello  
    16.   (JNIEnv *, jobject);  
    17.   
    18. #ifdef __cplusplus  
    19. }  
    20. #endif  
    21. #endif  
    生成的头文件是正确的

    2:第二种方式:整合ecipse和javah命令

    1:如图所示:在点击鼠标位置的下拉三角,在ubuntu下截图,在图上画很费劲,选择第二项externel tools configurations

    2:出现对话框,然后几点说明:

    1:name写javah就行了

    2:Location为你的javah所在目录

    3:Working Directory如图填写就行

    4:Arguments如图填写

    最后apply就行,

    然后鼠标放在那个HellowordActiviry.java上面,注意不是项目上

    然后点击刚才那个按钮,点这个绿色的,不是右面的三角,然后你就会看到jni目录下出现了头文件,

    同样也是正确的代码

    [html] view plaincopy
     
    1. /* DO NOT EDIT THIS FILE - it is machine generated */  
    2. #include <jni.h>  
    3. /* Header for class com_hello_word_HellowordActivity */  
    4.   
    5. #ifndef _Included_com_hello_word_HellowordActivity  
    6. #define _Included_com_hello_word_HellowordActivity  
    7. #ifdef __cplusplus  
    8. extern "C" {  
    9. #endif  
    10. /*  
    11.  * Class:     com_hello_word_HellowordActivity  
    12.  * Method:    sayHello  
    13.  * Signature: ()Ljava/lang/String;  
    14.  */  
    15. JNIEXPORT jstring JNICALL Java_com_hello_word_HellowordActivity_sayHello  
    16.   (JNIEnv *, jobject);  
    17.   
    18. #ifdef __cplusplus  
    19. }  
    20. #endif  
    21. #endif  

    转自:http://blog.csdn.net/jiuyueguang/article/details/9404237

  • 相关阅读:
    centos7 安装配置手册
    常用mysql统计信息(mysql5.6)
    yum将需要安装的软件依赖下载到本地
    impala使用指南
    redis集群配置
    VIM
    Vim自动补全插件----YouCompleteMe安装与配置
    vim中自动格式化代码
    vscode_插件_shell格式化工具安装
    Anaconda+vscode 搭建开发环境
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/4538522.html
Copyright © 2011-2022 走看看