C调用Java代码 图文详解

环境搭建

1. android studio2021.2.1

2. JDK版本1.8

一、创建一个android项目 

File ——> New ——> New Project ——> Empty Activity

创建后如下图所示

 二、C调用java代码过程

2.1 写java类代码

创建一个java的JNI类,写触发C代码,让C调用java的cCallJava()方法

    /**
     * 触发C代码让其调用cCallJava()方法
     */
    public native void callbackCCallJava();

    public void cCallJava(){
        System.out.println("C调用到了java的方法cCallJava");
    }

2.2 生成对应的C代码的头文件

(1)AS打开Terminal窗口

点击底部导航栏Terminal

 (2) 用命令打开JNI类所在的目录

 在Terminal窗口中输入cd app\src\main\java\com\zaq\ccalljava,按键盘Enter键

 (3)用命令生成头文件

javac -encoding utf8 -h . JNI.java(注意:-encoding utf8 指定源文件编码格式,-h后面有个点, 点 前后面都有个空格,点的意思是头文件生成在当前目录下

执行后过会会自动生成一个jni头文件com_zaq_ccalljave_JNI.h,如下图所示:

 2.3 设置编译方式ndk-build相关配置

(1)在main下创建一个jni文件夹

 (2) 把头文件移到jni文件夹下,删除JNI.class

(3)在jni下创建C/C++ Source File,命名为Test.c。

(4)在jni下创建文件Android.mk

Android.mk里面的内容

#表示Android.mk所在目录
LOCAL_PATH := $(call my-dir)

#CLEAR_VARS变量指向特殊 GNU Makefile,用于清除部分LOCAL_变量
include $(CLEAR_VARS)

#模块名称
LOCAL_MODULE    := javacallc
#构建系统用于生成模块的源文件列表
LOCAL_SRC_FILES := Test.c

#BUILD_SHARED_LIBRARY 表示.so动态库
#BUILD_STATIC_LIBRARY 表示.a静态库
include $(BUILD_SHARED_LIBRARY)

 (5)在gradle.build中的配置,生成so库文件

①android里面的defaultConfig配置

//定义ndkBuild默认配置属性
 externalNativeBuild {
     ndkBuild {
         cppFlags ""
     }
 }
 ndk {
     // 生成指定CPU平台对应的so库文件
     abiFilters "arm64-v8a"
 }

②跟defaultConfig同级的配置

//定义ndkBuild对应的Android.mk路径(重要)
externalNativeBuild {
    ndkBuild{
        path file("src/main/jni/Android.mk")
    }
}

 查看so生成文件

重新Rebuild Project,即点击状态栏的 File ——> Rebuild Project

so文件的最终命名是lib+ccalljava(Android,mk文件里面的模块名称).so,即:libccalljava.so

最终生成so库文件的路径如下:

 2.4 T代码的实现

(1)Test.c代码实现调用java方法

#include "com_zaq_ccalljava_JNI.h"
#include <jni.h>
#include <stdlib.h>
#include <stdio.h>

/**
 * 调用java代码中JNI类里面的public void cCallJava()
 * @param env
 * @param jobj
 */
JNIEXPORT void JNICALL Java_com_zaq_ccalljava_JNI_callbackCCallJava
        (JNIEnv *env, jobject jobj){
    // 1.得到字节码
    // jclass      (*FindClass)(JNIEnv*, const char*);
    jclass jclazz=(*env)->FindClass(env,"com/zaq/ccalljava/JNI");

    // 2.得到方法
    // jmethodID   (*GetMethodID)(JNIEnv*, jclass, const char*, const char*);
    jmethodID jmethodIDs=(*env)->GetMethodID(env,jclazz,"cCallJava", "()V");

    // 3.实例化该类
    // jobject     (*AllocObject)(JNIEnv*, jclass);
    jobject obj=(*env)->AllocObject(env,jclazz);

    // 4.调用方法
    // void        (*CallVoidMethod)(JNIEnv*, jobject, jmethodID, ...);
    (*env)->CallVoidMethod(env,obj,jmethodIDs);// 可成功调用JNI类中的public void cCallJava()
}

 (2)MainActivity调动JNI类的方法

 (3)JNI类加载so文件

(4)运行安装apk,点击按钮有日志输出,说明C成功调用java方法 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
压缩文件 收集的常见的专业问题解决办法.rar 2006-11-01 21:10 94792 91186 常见的专业问题解决办法\CSS语法一览表.pdf 2009-03-05 14:06 155509 34856 常见的专业问题解决办法\html中rel与rev的关系(转载)_我的幅度.mht 2009-03-05 19:33 232863 45314 常见的专业问题解决办法\Html标签大全_破巢.mht 2006-11-01 21:11 107135 101736 常见的专业问题解决办法\HTML语法一览表.pdf 2000-12-29 09:23 53412 5232 常见的专业问题解决办法\HTML语言参考\HTM1.HTM 2000-12-29 09:23 22961 3263 常见的专业问题解决办法\HTML语言参考\HTM2.HTM 2009-01-16 17:08 1494866 1050112 常见的专业问题解决办法\JavaScript特效代码集.rar 2006-11-01 21:11 95888 88773 常见的专业问题解决办法\JavaScript语法一览表.pdf 2009-02-24 08:39 1423088 975149 常见的专业问题解决办法\Java中多态变量的讨论和总结.mht 2009-02-24 08:52 156256 34316 常见的专业问题解决办法\Java中的强制类型转换_Believe ┭┮ YourSelf.mht 2009-02-24 08:31 61003 61003 常见的专业问题解决办法\Java容器类List、ArrayList、Vector及map、HashTable、HashMap的使用与区别.rar 2009-02-24 08:29 40960 13763 常见的专业问题解决办法\java容器类介绍.doc 2009-02-24 08:42 165165 37065 常见的专业问题解决办法\Java核心技术学习笔记--异常和调试_Believe ┭┮ YourSelf.mht 2009-03-20 16:36 142683 39110 常见的专业问题解决办法\JR - 专题论坛问题 - eclipse??如何设置代理啊.mht 2009-03-10 17:37 462569 194709 常见的专业问题解决办法\JSP实例:动态生成验证码.mht 2009-03-10 17:52 185677 39758 常见的专业问题解决办法\jsp数字验证码代码详解 - 我爱跑IT---技术专区.mht 2009-03-10 17:22 192548 40484 常见的专业问题解决办法\JSP验证码代码的实现_娟行天下.mht 2009-02-24 08:40 156913 33699 常见的专业问题解决办法\JS对select控件的操作汇总整理.mht 2009-02-24 08:40 173330 36602 常见的专业问题解决办法\Js获取当前日期时间及其它操作_Believe ┭┮ YourSelf.mht 2009-03-09 09:42 159485 36202 常见的专业问题解决办法\MYSQL命令备忘_心心相惜.mht 2009-02-24 09:01 165033 37357 常见的专业问题解决办法\MySql的配置_Believe ┭┮ YourSelf.mht 2009-02-24 08:43 452690 186879 常见的专业问题解决办法\Rational Rose 2003 下载、破解及安装方法图文)_Believe ┭┮ YourSelf.mht 2009-02-24 08:36 171617 47585 常见的专业问题解决办法\Spring框架与AOP思想的研究与应用.mht 2009-02-24 08:37 190012 61182 常见的专业问题解决办法\Spring框架快速入门之简介.mht 2009-01-16 08:16 281434 266693 常见的专业问题解决办法\sql导入excel.rar 2009-03-10 11:12 181976 38906 常见的专业问题解决办法\struts的验证码实现_17号的空间.mht 2009-03-10 11:13 377530 94291 常见的专业问题解决办法\struts验证码 - Struts - Java - JavaEye论坛.mht 2007-10-20 11:27 427008 296205 常见的专业问题解决办法\swing程序设计.doc 2007-12-25 20:21 1504314 1493642 常见的专业问题解决办法\Tomcat.chm 2009-02-21 15:33 979 696 常见的专业问题解决办法\U盘新玩法.txt 2009-03-16 17:34 93262 24870 常见的专业问题解决办法\[急]hibernate中的Session什么时候关闭?_百度知道.mht 2009-03-18 09:07 2303315 1322088 常见的专业问题解决办法\[教程]红旗Linux5_0桌面正式版光盘安装=图解教程=Unix-Linux - 系统之家论坛.mht 2009-02-24 08:43 151144 33570 常见的专业问题解决办法\“在静态方法中不能调用非静态的方法和引用非静态的成员变量”如何理解?_Believe ┭┮ YourSelf.mht 2009-03-03 20:16 487640 194474 常见的专业问题解决办法\代理知识大全~~~【申精】精品软件 - 玄殿社区 —打造游戏娱乐温馨家园.mht 2009-03-17 12:00 166432 35921 常见的专业问题解决办法\最新VM虚拟机6_0版_可可_KEY.mht 2009-03-19 08:29 99829 27128 常见的专业问题解决办法\求网页设计,屏蔽右键的代码?_百度知道.mht 2009-03-09 09:38 132723 34712 常见的专业问题解决办法\百度_网盾工程吧_MySQL导出导入命令.mht 2003-06-20 20:49 153581 146314 常见的专业问题解决办法\精通swing程序设计.chm 2009-02-26 16:33 177152 37861 常见的专业问题解决办法\网页常用的jsp 脚本.doc 2009-03-20 16:37 254350 86752 常见的专业问题解决办法\解决Struts中ApplicationResources_properties文件不支持中文问题_微科工作室 QQ:28790953____.mht 2009-02-25 08:45 文件夹 文件夹 常见的专业问题解决办法\HTML语言参考 2009-03-21 14:55 文件夹 文件夹 常见的专业问题解决办法 # # 总计 大小 压缩后大小 文件数 # 13349124 7429458 42
第1 章 JSP 简介................................................................................10 1.1 什么是JSP........................................10 1.2 JSP 页面..........................................10 1.3 JSP 的运行原理....................................12 1.4 安装配置JSP 运行环境.............................16 1.5 JSP 页面的测试...................................20 1.6 JSP 与Java Servlet 的关系........................23 第2 章 JSP 语法.................................................................................25 2.1 JSP 页面的基本结构................................25 2.2 变量和方法的声明.................................29 2.2.1 声明变量.......................................................................29 2.2.2 声明方法.......................................................................32 2.2.3 声明类...........................................................................37 2.3 Java 程序片......................................40 2.4 表达式...........................................45 2.5 JSP 中的注释......................................46 2.6 JSP 指令标签.....................................49 2.6.1 page 指令......................................................................49 II 2.6.2 include 指令标签........................................................54 2.7 JSP 动作标签.....................................59 2.7.1 include 动作标签........................................................59 2.7.2 param 动作标签.............................................................64 2.7.3 forward 动作标签........................................................65 2.7.4 plugin 动作标签..........................................................69 2.7.5 useBean 动作标签........................................................75 第3 章 JSP 内置对象........................................................................76 3.1 request 对象.....................................77 3.1.1 获取客户提交的信息....................................................78 3.1.2 处理汉字信息................................................................83 3.1.3 常用方法举例................................................................85 3.1.4 用户注册.......................................................................93 3.1.5 获取HTML 表单提交的数据........................................101 3.1.6 表格.............................................................................112 3.2 response 对象...................................116 3.2.1 动态响应contentType 属性......................................116 3.2.2 response 的HTTP 文件头...........................................122 3.2.3 response 重定向.........................................................124 III 3.2.4 response 的状态行.....................................................125 3.3 session 对象.....................................132 3.3.1 session 对象的Id......................................................132 3.3.2 session 对象与URL 重写...........................................135 3.3.3 session 对象的常用方法: .......................................140 3.3.4 计数器.........................................................................150 3.4 application 对象.................................153 3.4.1 application 对象的常用方法..................................153 3.4.2 用application 制作留言板......................................155 3.5 out 对象........................................160 第4 章 JSP 中的文件操作...............................................................166 4.1 File 类.........................................166 4.1.1 获取文件的属性..........................................................166 4.1.2 创建目录.....................................................................169 4.1.3 删除文件和目录..........................................................174 4.2 使用字节流读写文件..............................175 4.2.1 FileInputStream 和FileOutputStream 类.............177 4.2.2 BufferedInputStream 和BufferedOutputStream 类179 4.3 使用字符流读写文件..............................183 IV 4.3.1 FileReader 和FileWriter 类..................................184 4.3.2 BufferedReader 和BufferedWriter 类....................185 4.4 回压字符流......................................193 4.5 数据流..........................................196 4.6 对象流..........................................204 4.7 RandomAccessFile 类..............................214 4.8 文件上传........................................223 4.9 文件下载........................................232 4.10 分页读取文件....................................235 4.11 标准化考试......................................240 第5 章 JSP 中使用数据库...............................................................251 5.1 数据源..........................................251 5.2 JDBC-ODBC 桥接器.................................258 5.3 查询记录........................................259 5.3.1 顺序查询.....................................................................262 5.3.2 游动查询.....................................................................266 5.3.3 随机查询.....................................................................271 5.3.4 参数查询.....................................................................275 5.3.5 排序查询.....................................................................282 V 5.3.6 分析结果集查询..........................................................286 5.3.7 使用统配符查询..........................................................289 5.4 更新记录........................................290 5.5 添加记录........................................297 5.6 删除记录........................................305 5.7 分页显示记录....................................311 5.8 连接数据库的其它方式............................315 5.8.1 连接Oracle 数据库....................................................315 5.8.2 连接MySql 数据库......................................................318 5.9 查询Excel 电子表格..............................319 5.10 使用同步连接....................................323 5.11 网上投票........................................327 5.12 成绩录入查询系统................................336 第6 章 JSP 与JavaBeans ................................................................362 6.1 编写javabeans 和使用javabeans...................363 6.1.1 编写beans...................................................................363 6.1.2 使用beans...................................................................364 6.2 beans 的存放目录.................................372 6.3 获取和修改beans 的属性..........................376 VI 6.3.1 getProperty 动作标签...............................................376 6.3.2 setProperty 动作标签...............................................379 6.4 beans 的辅助类...................................389 6.5 带包名的beans...................................393 6.6 JSP 与beans 结合的简单例子.......................397 6.6.1 三角形beans...............................................................397 6.6.2 计数器beans...............................................................400 6.6.3 购物车beans...............................................................402 6.6.4 读文件 beans..............................................................412 6.6.5 写文件beans...............................................................420 6.6.6 查询数据库beans.......................................................428 6.6.7 猜数字beans...............................................................432 6.6.8 标准化考试 beans......................................................437 6.6.9 日期 beans..................................................................446 6.6.10 分页显示记录beans ..................................................450 第7 章 基于会员制的网络交友.......................................................461 7.1 系统设计.......................................461 7.2 数据库设计及连接................................462 7.3 页面管理........................................464 VII 7.4 各个页面的设计..................................466 7.4.1 会员注册.....................................................................467 7.4.2 会员登录.....................................................................479 7.4.3 浏览会员.....................................................................486 7.4.4 查找会员.....................................................................495 7.4.5 留言板.........................................................................502 7.4.6 查看公共留言..............................................................514 7.4.7 查看私人留言..............................................................521 7.4.8 修改密码.....................................................................532 7.4.9 修改个人信息..............................................................537 第8 章 网上书店..............................................................................543 8.1 系统设计.......................................543 8.2 数据库设计及连接................................544 8.3 页面管理........................................546 8.4 各个页面的设计..................................547 8.4.1 用户注册.....................................................................548 8.4.2 用户登录.....................................................................557 8.4.3 用户订购.....................................................................565 8.4.4 查看订单.....................................................................578 VIII 8.4.5 修改订单.....................................................................581 8.4.6 浏览书目.....................................................................591 8.4.7 修改密码.....................................................................601 8.4.8 修改个人信息..............................................................606 第9 章 Java Servlet ....................................................................612 9.1 S ERVLET工作原理..................................612 9.1.1 Servlet 的生命周期..................................................612 9.1.2 init 方法:.................................................................613 9.1.3 service 方法...............................................................614 9.1.4 destroy 方法...............................................................614 9.2 编译和安装SERVLET ................................615 9.2.1 简单的servlet 例子..................................................615 9.2.2 编译servlet...............................................................616 9.2.3 存放servlet 的目录..................................................617 9.2.4 运行servlet...............................................................618 9.2.5 带包名的servlet.......................................................620 9.3 通过JSP 页面调用SERVLET ..........................621 9.3.1 通过表单向servlet 提交数据..................................621 9.3.2 通过超链接访问servlet ...........................................624 IX 9.4 SERVLET的共享变量................................625 9.5 H TTPSERVLET 类....................................629 9.5.1 doGet 方法和doPost 方法.........................................629 9.5.2 处理HTTP 请求头及表单信息....................................637 9.5.3 设置响应的HTTP 头....................................................646 9.6 用SERVLET读写文件................................651 9.6.1 读取文件的内容..........................................................652 9.6.2 写文件.........................................................................659 9.7 用SERVLET访问数据库..............................663 9.7.1 数据库记录查询..........................................................664 9.7.2 使用共享连接..............................................................672 9.8 会话管理........................................676 9.8.1 获取用户的会话..........................................................676 9.8.2 购物车.........................................................................680 9.8.3 猜数字.........................................................................687 jsp 9个内置对象详解,访问原理
第1章 androi简介 1.1 初识android 1.1.1 历史背景 1.1.2 android特性 1.1.3 android组件结构 1.1.4 android应用程序框架 1.1.5 android的竞争优势 1.1.6 android模拟器 1.2 搭建android开发环境 1.2.1 准备工作 1.2.2 windows系统下的搭建过程 1.2.3 linux系统下的搭建过程 1.3 常见问题汇总 1.4 使用本书的配套实例 1.5 小结 第2章 android开发必备 2.1 android体系结构 2.1.1 各种库和android运行环境 2.1.2 应用程序框架 2.1.3 操作系统层 2.1.4 应用程序 2.2 android应用程序组成 2.2.1 activity 2.2.2 intent和intent filter 2.2.3 service介绍 2.2.4 broadcastintentreceiver 2.2.5 contentprovider 2.3 android应用项目文件组成 2.3.1 androidmanifest.xml文件 2.3.2 src目录 2.3.3 常量的定义文件 2.4 程序生命周期 2.4.1 android周期 2.4.2 android进程 2.5 activity的生命周期 2.5.1 activity状态 2.5.2 剖析activity 2.6 android进程和线程 2.6.1 进程 2.6.2 线程 2.6.3 远程调用(remote procedure calls) 2.7 intent消息传递 2.8 intent广播事件 2.8.1 广播事件 2.8.2 使用broadcast receiver监听广播 2.8.3 android本地广播 2.9 小结 第3章 设备界面演练 3.1 文字标签处理 3.2 改变屏幕窗口元素的背景颜色 3.3 改变textview的文字颜色 3.4 实现textview文字的替换 3.5 获取手机分辨率 3.6 样式修饰处理 3.7 按钮事件响应 3.8 页面间的转换 3.9 activity调用 3.10 多个activity间的数据传递 3.11 将数据返回到前一个activity 3.12 对话框交互处理 3.13 文字颜色置换 3.14 文字字体设置 3.15 拖动相片特效 3.16 简易计算器 3.17 about信息 3.18 加载中的程序 3.19 选择对话框 3.20 主题变换 3.21 小结 第4章 andfosd控件演练 4.1 实现文本处理 4.2 将背景图片作为按钮 4.3 用toast实现提示 4.4 用checkbox实现一个简单的物品清单 4.5 实现同意条款效果 4.6 radiogroup选择 4.7 imageview相框 4.8 spinner选择处理 4.9 gallery相簿 4.10 用.iava.io.file实现文件搜索 4.11 置换imagebutton按钮 4.12 实现autocompletetextview输入提示 4.13 实现analogclock时钟 4.14 时间选择 4.15 progressbar和handler进度条 4.16 动态排版处理 4.17 listactivity布局- 4.17.1 listactivity介绍 4.17.2 使用listactivity 4.18 matrix实现图片缩放 4.19 bitmap和matrix图片旋转 4.20 加载手机存储卡中的文件 4.21 小结 第5章 交互式服务 5.1 textview的花样 5.2 拨打电话程序 5.3 短信发送程序 5.4 e-mail发送程序 5.5 实现手机震动效果 5.6 图文提醒效果 5.7 状态栏提醒 5.8 检索通讯录 5.8.1 实现原理 5.8.2 contentprovider介绍 5.8.3 具体实现 5.9 文件管理 5.10 还原手机桌面 5.11 置换背景图 5.12 修改和删除文件 5.12.1 实现原理 5.12.2 java i/o基本类库介绍 5.12.3 具体实现 5.13 获取file和cache的路径 5.14 wi-fi服务 5.14.1 wi-fi简介 5.14.2 实现原理 5.14.3 具体实现 5.15 获取sim卡内信息 5.15.1 sim卡简介 5.15.2 实现原理 5.15.3 具体实现 5.16 触屏拨号 5.17 获取正在运行的程序 5.18 变换屏幕的方向 5.19 获取设备信息 5.20 小结 第6章 手机自动服务 6.1 实现短信提醒 6.2 剩余电量提醒 6.3 短信群发 6.4 短信e

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值