【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

相关文章

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加