zoukankan      html  css  js  c++  java
  • Android jni简便开发流程

    Android jni helloworld》中介绍了开发jni helloworld的步骤,本文将介绍jni简便开发流程

    ① 写java代码 native 声明本地方法

    ② 添加本地支持 右键单击项目->andorid tools->add native surport

    如果发现 finish不能点击,需要给工作空间配置ndk目录的位置

    window->preferences->左侧选择android->ndk 把ndk解压的目录指定进来

    右键单击项目->andorid tools->add native surport

    点击“Finish”,自动生成

    ③ 如果写的是.cpp的文件 先修改一下生成的.cpp文件的扩展名 不要忘了 相应修改Android.mk文件中LOCAL_SRC_FILES的值

    ④ javah生成头文件 在生成的头文件中拷贝c的函数名到.c的文件

    运行cmd

    切换到项目src目录:cd /d F:workspace_sdk42_简便开发流程src

    输入:javah com.wuyudong.simpleprocess.MainActivity

    src中自动生成“com_wuyudong_simpleprocess_MainActivity.h”文件

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class com_wuyudong_simpleprocess_MainActivity */
    
    #ifndef _Included_com_wuyudong_simpleprocess_MainActivity
    #define _Included_com_wuyudong_simpleprocess_MainActivity
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     com_wuyudong_simpleprocess_MainActivity
     * Method:    helliFromC
     * Signature: ()Ljava/lang/String;
     */
    JNIEXPORT jstring JNICALL Java_com_wuyudong_simpleprocess_MainActivity_helliFromC
      (JNIEnv *, jobject);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    将其中的代码copy到hello.c中

    ⑤ 解决CDT插件报错的问题

    右键单击项目选择 properties 选测 c/c++ general->paths and symbols->include选项卡下->点击add..->file system 选择ndk目录下 platforms文件夹 对应平台下(项目支持的最小版本)

    usr 目录下 arch-arm -> include 确定后 会解决代码提示和报错的问题

    ⑥编写C函数 如果需要单独编译一下c代码就在c/c++视图中找到小锤子图标

    如果想直接运行到模拟器上 就不用锤子了

    ⑦ java代码中不要忘了 system.loadlibrary();

    最后的代码如下:

    package com.wuyudong.simpleprocess;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
        
        static{
            System.loadLibrary("hello");
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        
        public void click(View v) {
            Toast.makeText(getApplicationContext(), helloFromC(), 0).show();
            
            
        }
        
        public native String helloFromC();
        
    }
  • 相关阅读:
    【leetcode_easy_array】1010. Pairs of Songs With Total Durations Divisible by 60
    【leetcode_easy_array】1013. Partition Array Into Three Parts With Equal Sum
    【leetcode_easy_array】1122. Relative Sort Array
    【opencv基础】opencv中cv::Mat和eigen数据之间的转换
    【c++基础】测试SocketCAN的收发功能
    SRM系统与ERP系统之间存在什么联系(转)
    使用IDEA搭建一个简单的SpringBoot项目——详细过程(转)
    SpringBoot(一):使用IDEA快速搭建一个SpringBoot项目(详细)
    IntelliJ IDEA创建maven web项目(IDEA新手适用)(转)
    Maven的安装与配置(转)
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5633631.html
Copyright © 2011-2022 走看看