【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

相关文章

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

基于Java开发一个极简版敏感词检测工具

《基于Java开发一个极简版敏感词检测工具》这篇文章主要为大家详细介绍了如何基于Java开发一个极简版敏感词检测工具,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录你是否还在为敏感词检测头疼一、极简版Java敏感词检测工具的3大核心优势1.1 优势1:DFA算法驱动,效率提升10

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按