【android开发记录片】2.基于Eclipse的JNI开发环境的搭建(cygwin+NDK)

2024-01-30 15:18

本文主要是介绍【android开发记录片】2.基于Eclipse的JNI开发环境的搭建(cygwin+NDK),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(很久没有更新android方面的文章,其实最大的原因是没有油水可以更新了=.=)


好,步入正题。

今天在新电脑上搭建android开发环境。

因为已经有了SDK,我将SDK解压到相关目录,这里是:D:\software\java\android\android-sdk-windows

D:\software\java\android 目录结构如下:

看名称就很明显了哈。

sdk-windows 是sdk目录

AVD 是手机模拟器的目录


然后配置环境变量,方便eclipse找到模拟器的配置:


打开eclipse,如果还没有 ADT ,就先安装一个,提供一个在线安装ADT的好例子:ADT在线安装


在线更新到的 ADT 是最新的,这里有可能需要更新一下SDK,就我的情况而言,因为我的SDK只有到 2.3 ,所以安装好ADT后花了20分钟更新了 Android 4.1(API 16),网速是 300KB/s 。

然后就可以运行一个AVD测试。详细可以看我的上一篇Android开发记录:http://blog.csdn.net/ssrc0604hx/article/details/7272402


这里讲一下怎么安装 JNI 的开发环境。

这里需要用到 cygwin ,NDK。

具体的可以看这个(神帖!):基于 Android NDK 的学习之旅-----环境搭建


我主要是讲一下:


1.工程  BUILDER 这里,按照上面的文章说的设置builder,每次代码保存、工程文件变动就会自动编译成so文件,这其实是不需要的。一般我们就要他在测试运行时编译就好了。

那修改这里:


这样,就不会频繁地编译了。


2。从c/c++ 中返回中文时候

总结下,2种方法比较好用,直接在c或c++转编码比较麻烦,一直没有找到解决方案:
1.把jni里用到的.c文件或者.cpp文件要改成utf-8的文件类型,可以用记事本打开,另存为的时候就知道编码了。
2.把文字转换成 jbyteArray形式返回到java层,再用

String result = new String(byte[],"Utf-8");

来转换。C++类似下面的代码:

char * location = "你好";jbyte *by = (jbyte*)location;jbyteArray jarray = env->NewByteArray(strlen(location));env->SetByteArrayRegion(jarray,0,strlen(location),by);return jarray;

3. 生成的 so 文件是在 工程的: libs 目录下。

eclipse 打包成  apk 时,会将 libs 目录也打包进 APK中,就样就可以在应用中调用我们的 本地库了。



最后,就可以开始你自己的android jni 应用 了。



这篇关于【android开发记录片】2.基于Eclipse的JNI开发环境的搭建(cygwin+NDK)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660657

相关文章

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

Android开发环境配置避坑指南

《Android开发环境配置避坑指南》本文主要介绍了Android开发环境配置过程中遇到的问题及解决方案,包括VPN注意事项、工具版本统一、Gerrit邮箱配置、Git拉取和提交代码、MergevsR... 目录网络环境:VPN 注意事项工具版本统一:android Studio & JDKGerrit的邮

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi