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();
        
    }
  • 相关阅读:
    MFC学习篇(二):error LNK2005 及其解决方法
    MFC学习篇(一):用OpenCV显示视频
    记一次mysql安装!
    常用数据对应关系及简单介绍
    docker
    月份及星期 缩写
    java 面对对象笔记
    linux小案例 定时备份数据库
    rpm_yum_开发工具的安装
    shell入门
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5633631.html
Copyright © 2011-2022 走看看