Android开发环境搭建记录201408

目的是采用android + ndk(JNI),使用c/c++编译生成opencv的相关函数的库。

默认jdk已安装好,JAVA_HOME, CLASSPATH, path已设置好。android开发的IDE有两种,Eclipse和Android Studio(http://developer.android.com/sdk/installing/studio.html),后者采用的gradle工具不了解,暂时就不试了。

1. Eclipse CDT + Cygwin环境

Eclipse c/c++开发环境,可以选择eclipse cdt版本下载,或者是Eclipse + CDT插件。

另外还需要有编译工具集/ toolchain,可以直接使用visual c++的命令行工具cl.exe等,或者使用windows下的GNU编译工具Cygwin 或 MinGW。后面两者的区别在于MinGW直接使用win32 API,而cygwin需要依赖单独的dll进行翻译一下,各有优缺点。

这里选用Cygwin64,安装的mirror选择edu站点,一般有IPV6地址,这样速度快不少。下面这个教程很不错:

Cygwin & MinGW (for Windows) How To Install and Get Started

需要注意的是,下载的时候得选上devel (development)目录下的 gcc, g++, gdb, make,这四个不在default选项中。另外后面编译遇到问题,又选择安装了 mingw的几个编译工具。

Eclipse c/c++项目属性里面有好几个地方可以设置编译的环境变量 include/library/path等,而且这些是不依赖系统环境变量设置的。也就是说如果不经常用命令行编译,可以不设置系统环境变量。

  • 首先是toolchain的选择。如果没有Microsoft Visual C++选项,则需要安装CDT Visual C++ support插件。

有两种方式安装这个插件,第一种通过 Eclispe Help -> Install New Software -> Juno - http://download.eclipse.org/releases/juno -> Programming Languages ->CDT Visual C++ support。

第二种现在eclipse官方的CDT插件包,里面包含了这个插件,其实也就是org.eclipse.cdt.msw.build_1.0.0.201406111759.jar等。

  • 这里需要注意的是Discovery Options选项,默认已勾选automate Discovery of paths and symbols。在Tool Chain Eidtor页面选择不同的toolchain的时候,这个功能可以自动设置相关的环境变量。这个功能简化了环境变量的设置,很实用。另外要知道,不同的配置(Debug / Release)使用单独的设置,包括toolchain

  • 第一处是 C/C++ Build -> Envrironment。不同的toolchain的environment不同,可以手动设置。

  • 第二处是 C/C++ Build -> Settings

  • 第三处是 C/C++ General -> Paths and Symbols

需要注意的是,路径中如果包含空格,应该用双引号括起来,否则可能会报错(类似Program 错误)。

  • VC++ 2010 环境变量设置 / MSVC setting

INCLUDE=
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include

LIB / LIBPATH =
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB or C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\LIB\amd64
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib or C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\x64

Path=

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN or C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

debug时候的一个路径映射问题,这个问题会导致debug找不到源文件,从而debug失败

eclipse+cygwin+cdt搭建c/c++开发环境

2. JNI相关

java docs里面有Java Native Interface Specification,可以了解个大概。JNI是个双向的接口,java调用c/c++程序可以,c/c++程序也可以通过jni创建JVM实例,从而运行java代码。

JNI主体还是C写的,C++只是在C的基础上进行语言特性方面的包装。JNI是在JVM里面实现的。

JNI编程最麻烦的地方在于java与C/C++数据类型的对应和转换,例如java.lang.String - jstring - char。

学习了下面这个教程,很长。

Java Programming Tutorial Java Native Interface (JNI)

  • java / c++代码的输出顺序错乱(printf后面手动调用fflush(stdout),C语言的问题)
  • jni.h的位置: %JAVA_HOME%\include
  • gcc-4没有编译选项mno-cygwin的解决办法

错误提示建议使用mingw编译工具——没错,只有这个方法。使用cygwin下载安装x86_64-w64-mingw32-gcc、x86_64-w64-mingw32-g++等

编译命令 makefile:

JAVA_HOME = C:\Java\jdk1.7.0_51

all: hello.dll myjni.dll

hello.dll: HelloJNI.o
    x86_64-w64-mingw32-gcc -Wl,--add-stdcall-alias -shared -o [email protected] $<

HelloJNI.o: HelloJNI.c com_zzfei_test_HelloJNI.h
    x86_64-w64-mingw32-gcc -D __int64="long long" -I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32" -o [email protected] -c $<

myjni.dll: MyJNI.o
#    x86_64-w64-mingw32-g++ -Wl,--add-stdcall-alias -shared -static-libstdc++ -static-libgcc -o [email protected] $<
    x86_64-w64-mingw32-g++ -Wl,--add-stdcall-alias -shared -o [email protected] $<

MyJNI.o: MyJNI.cpp com_zzfei_test_MyJNI.h
    x86_64-w64-mingw32-g++ -D __int64="long long" -I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32" -o [email protected] -c $<

clean:
    rm hello.dll HelloJNI.o myjni.dll MyJNI.o

# visual c++ compile command
# -LD Create .DLL
# -MD link with MSVCRT.LIB
# -Fe<file> name executable file

#cl MyJNI.cpp -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -Femyjni.dll -MD -LD
#cl HelloJNI.c -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -Fehello.dll -MD -LD

makefile的相关规则:GCC and Make Compiling, Linking and Building C/C++ Applications

最后两行注释的是使用vc++ 2010编译的命令,在开始菜单里选择Visual Studio x64 Win64 Command Prompt进入命令行可以自动设置环境变量。

  • 在Eclipse中添加javah工具按钮

参数如下

-v -classpath "${project_loc}/bin" -d "${project_loc}/jni" -jni ${java_type_name}

某些错误添加强制类型转换就可以了。

3. Android 开发环境

Android SDK Components

SDK Tools
http://developer.android.com/tools/sdk/tools-notes.html

Platform Tools
http://developer.android.com/tools/help/index.html

ADT Plugin (包含NDK plugin, CDT)?
http://developer.android.com/tools/sdk/eclipse-adt.html
http://developer.android.com/tools/help/adt.html

Build Tools
http://developer.android.com/tools/revisions/build-tools.html

NDK

从r7开始,Google的提供了一个ndk-build的脚本,可以直接用它编译,而不需要使用Cygwin了。

adt bundle:adt-bundle-windows-x86_64-20140702.zip里面的eclipse没有设置ndk路径选项,解决办法:

下载单独的ADT Plugin插件ADT-23.0.2.zip 并安装,或者复制里面的 com.android.ide.eclipse.ndk_23.0.2.1259578.jar (NDK plugin)到eclipse\plugins文件夹。

4. QQQ

  • ABI(Application Binary Interface)
  • modified UTF-8 以及 JNI中文编码
  • (*env)-> env->
  • dll size mingw cl & DLL related (EXPORT ...)
  • PE, elf
  • X86调用约定
  • c语言 函数入口 main
  • NDK与JNI的关系
  • Android Architecture & App workflow
  • ...

Android开发环境搭建记录201408

时间: 2024-10-20 18:39:56

Android开发环境搭建记录201408的相关文章

【Android开发-1】必做的事情,android开发环境搭建

前言:互联网移动端现在发展的速度越来越快了,各种App应用软件和手游的崛起,把移动端弄的丰富多彩:心情一激动,头脑一发热,就开始看视频.看书学习了.记得11年的时候有学习了下Android的开发,但是只是基础的学习了下,没认真深入学习.这次自己决定认真学习下,并用博客记录下,见证自己成长的过程. 一.准备工作 1.下载最新版jdk:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.下载Eclipse,选择Ec

Android开发环境搭建及常见问题解决方法

在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网的普及,手机操作系统已经是IOS和Android的天下了,什么winphone之类的可以说没它们什么事了.记得三年前做过一个简单的基于Android2.2的一个小应用.当时只是为了好玩,因而也没有相应的文档记录:后来由于工作原因也就没有继续讲Android开发进行下去.趁有时间再来折腾折腾Android的开发吧.想要开发Android的应用,首先需要安装Android的开发环境,下面记录了Androi

Android开发环境搭建与HelloWorld小程序

Android简介 一.本节知识点概述 1.Android概述 什么是Android?Android的发展. Android的四层体系架构 Android的应用开发体系 2.环境搭建resource Android集成开发环境下载与解压 Android集成开发环境目录说明 Eclipse工具的使用说明 AVD创建参数说明 启动AVD与DDMS说明 3.第一个Android项目HelloWord Eclipse中创建Android项目 Android项目目录说明 运行Android项目 4.扩展知

【下班后学Android】Android开发环境搭建

Android开发环境搭建方法: 方法一:百度搜索“Android开发环境搭建”:http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html. 博主在土耳其出差期间,按照该步骤安装,完全OK.但是,回国后,发现谷歌各种无法访问,不过先把JDK安装了吧. 方法二:国内资源:http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/android-platform-sdk-downloa

Android开发环境搭建

花了一天多的时间,终于把Android开发环境搭建出来了.现在稍作总结. android开发环境的搭建有四部曲:JDK-IDE-ADT-SDK. 需要以下工具: JDK:Java Development Kit.因为android应用层的程序是使用java语言编写的,所以JDK是必备的工具: IDE:integrated development environment. IDE的话采用很主流的JAVA开发环境Eclipse. ADT:Android Development Tools.这是Goo

[Android系列—] 1. Android 开发环境搭建与Hello World

前言 開始之前先熟悉几个名词: SDK -- Software Development Kit, 软件开发工具包.这个词并不陌生, JDK,就是Jave Development Kit,相同对于Android 来说也有Android SDK. Android SDK 提供了构建,測试和调试安卓应用的API 库和开发人员工具. ADT- Android Developer Tools.安卓开发人员工具, 事实上这里就是Eclipse 用于Android 开发的插件. 高速开发环境搭建 在搭建And

HTML5移动开发之路(24)—— PhoneGap Android开发环境搭建

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(24)-- PhoneGap Android开发环境搭建 有关JDK及Android开发环境的搭建请看我前面的博文:http://blog.csdn.net/dawanganban/article/details/9748497 一.下载PhoneGap 下载地址:http://phonegap.com/install/  我下载的是最新的PhoneGap 2.9.1 将下载好的PhoneGap解压缩,可以

android快速上手(二)android开发环境搭建及hello world

基本了解了java语法,下一步,我们一起开启hello world的神秘之旅. (一)android开发环境搭建 之前搭建android开发环境是件非常费力的事情,下载Eclipse,安装ADT等,如今android官方给我们提供了全套配置. https://developer.android.com/sdk/index.html 搭建android开发环境之前记得先安装jdk (二)开启Hello World之旅 (1)创建Hello World项目 安装完带ADT的Eclipse,打开Ecl

phonegap 开发指南系列(3) ----在Eclipse中Android开发环境搭建

  前提条件:已在Eclipse中安装好Android SDK 和 ADT. 1.下载PhoneGap,解压. 2.用Eclipse新建一个安卓项目. 3.将phoneGap解压包里的Android文件夹下的phonegap-1.0.0.js 复制到安卓项目的 /assets/www/ 目录下. 4.将phoneGap解压包里的Android文件夹下的phonegap-1.0.0.jar 复制到安卓项目的 /libs 目录下. 5.在/assets/www/目录下新建一个index.html,内