android的开发环境
① Android开发之Android开发环境搭建涉及的工具和开发包都有哪些
一、开发环境资料下载
1、JDK:下载JDK,JDK提供java编译环境,新版本的JDK自动包含了JRE,所以不用单独下载JRE了,JRE提供Java运行环境。
2、Eclipse:下载Eclipse,Eclipse是Java的IDE开发工具。
3、Android SDK:下载Android SDK,Android SDK提供Android应用开发环境和工具。
4、ADT:下载ADT,ADT是Eclipse的一个Android开发工具插件,Android的SDK需要配合ADT使用。
5、Android NDK:下载Android NDK,Android NDK提供Android本地C/C++开发环境和工具。实际上,Andriod环境安装并不需要一一下载上面介绍的那些个工具包。Google是个好同学,它为我们打包了一个开发工具集合——ADT-BUNDLE集成包,里面包含了Eclipse、Android SDK、Android ADT,下载ADT-BUNDLE。
② Android学习之Build环境介绍
这里略过对android在手机上的文件系统框架的阐述(google或者都能帮助你找到对应的信息),主要看google是如何把生成合适的rootfs的工作整合到它的build体系当中,同时,会顺带看一下CyanogenMod中对应各种机型的build机制。
首先,来看一下Android的build系统中,使用到的编译选项和相关工具
具体的目录在:mydroid/build/tools/下
|-- acp
这是一个稍微改良的cp命令,用来应付在windows/MAC/linux下的cp命令的缺陷,其中的README很值得一看!
|-- adbs
这是一个用来查看crash问题的工具,详细请看《Android调试工具之adbs》
|-- Android.mk
|-- apicheck
用来进行发布前的API检查(参见mydroid/build/core/tasks/apicheck.mk),是否新编译的系统中有破坏API兼容性或是非法的API
这里的代码是用Java写的用来检查编译时生成的API相关信息的xml文件(mydroid/framework/base/api/中),可以参考里面对于xml文件解析的代码
|-- apriori
实现prelink的工具,简单介绍参见(mydroid/bionic/linker/README.TXT)
|-- atree
为android SDK服务的一个工具,用来按照指定xxx.atree文件中的内容进行一些文件操作
|-- bin2asm
不太明白具体的用处,应该是用来应付mac上编译android一些与gcc相关的问题
|-- buildinfo.sh
生成target中的各种xxx.prop文件,如system.prop, build.prop等
|-- check_builds.sh
包装了diff,用来看2个发布版本之间变化
|-- check_prereq
device上进行ota升级时的工具之一
|-- compare_fileslist.py
与check_builds.sh配合完成版本比较的脚本
|-- droiddoc
Android更具javadoc的一些移植
|-- mp-package-stats
简单的查看一个jar/apk文件内的dex和其它文件的大小信息
|-- event_log_tags.py
处理event-log-tags的内容,关于event-log-tags文件的意义参见《Android学习之event-log-tags是神马》
|-- fileslist.py
简化的列出指定目录下所有文件及大小的脚本 -- 可以放入自己的工具库了使用:)
|-- findleaves.py
在指定目录中(可多个)找指定文件的脚本 -- 可以放入自己的工具库了使用:)
|-- fixlinebreaks.sh
把windows中的换行改为linux下的 -- 可以放入自己的工具库了使用:大散芦)
|-- fs_config
列出指定文件夹滚带及文件的权限
|-- fs_get_stats
得到指定文件夹下文件的简单stats信息
|-- iself
判断文件是否是ELF格式
|-- isprelinked
判断文件是否是prelink过的
|-- java-event-log-tags.py
处理event-log-tags的内容,关于event-log-tags文件的意义参见《Android学习之event-log-tags是神马》
|-- kcm
key character map的工具, 相关资料参照:
|-- lsd
!!!!!! ???
|-- merge-event-log-tags.py
处理event-log-tags的内容,关于event-log-tags文件的意掘野义参见《Android学习之event-log-tags是神马》
|-- mktarball.sh
与fs_get_stats配合而执行的打包工具
|-- print_mole_licenses.sh
显示当前目录下所有mole信息
|-- releasetools
-- check_target_files_signatures
|-- common.py
|-- edify_generator.py
|-- img_from_target_files
|-- ota_from_target_files
`-- sign_target_files_apks
|-- rgb2565
rgb转换工具
|-- signapk
命令行下对jar包签名的工具
|-- soslim
Android定制的编译工具之一,简单介绍参见(mydroid/bionic/linker/README.TXT)
|-- warn.py
解析Android系统编译log的工具
`-- zipalign
zipfile的对齐工具,参见该文件夹下的README.TXT
#p#副标题#e#
在来看看Android编译系统中定义的一些通用XXX.mk文件
mydroid/build/core/
|-- armelflib.x
|-- armelf.x
|-- armelf.xsc
|-- base_rules.mk
|-- binary.mk
|-- build_id.mk
|-- build-system.html
|-- checktree
|-- cleanbuild.mk
|-- cleanspec.mk
|-- clear_vars.mk
|-- combo
|-- config.mk
|-- _headers.mk
|-- definitions.mk
|-- device.mk
|-- dex_preopt.mk
|-- distdir.mk
|-- droiddoc.mk
|-- mpvar.mk
|-- dynamic_binary.mk
|-- envsetup.mk
|-- executable.mk
|-- filter_symbols.sh
|-- find-jdk-tools-jar.sh
|-- help.mk
|-- host_executable.mk
|-- host_java_library.mk
|-- host_native_test.mk
|-- host_prebuilt.mk
|-- host_shared_library.mk
|-- host_static_library.mk
|-- java_library.mk
|-- java.mk
|-- legacy_prebuilts.mk
|-- main.mk
|-- Makefile
|-- multi_prebuilt.mk
|-- native_test.mk
|-- node_fns.mk
|-- notice_files.mk
|-- package.mk
|-- pathmap.mk |-- phony_package.mk
|-- prebuilt.mk
|-- process_wrapper_gdb.cmds
|-- process_wrapper_gdb.sh
|-- process_wrapper.sh
|-- proct_config.mk
|-- proct.mk
|-- proguard.flags
|-- proguard_tests.flags
|-- raw_executable.mk
|-- raw_static_library.mk
|-- root.mk
|-- shared_library.mk
|-- static_java_library.mk
|-- static_library.mk
|-- tasks
|-- user_tags.mk
`-- version_defaults.mk
#p#副标题#e#
这里,目录在mydroid/build/core/tasks/有一些特别的task
|-- apicheck.mk, 判断api是否符合AOSP的规范
|-- cts.mk cts测试, 可以在代码根目录, make cts, 编译结束之后,进入out/host/linux-x86/bin/下,执行cts命令
|-- ide.mk IDE开发环境
|-- proct-graph.mk
`-- sdk-addon.mk
NDK的build环境没有包含在标注难得AOSP的/build/目录下
而是在mydroid/ndk/build下
$ cd ndk/build/tools
$ export ANDROID_NDK_ROOT=aosp-root/ndk
$ ./make-release --help
一些小技巧
如何显示每次编译所包含的所有xxx.mk文件
找到build/core/main.mk
把include $(subdir_makefiles)替换为
[plain] view plain $(foreach subdir_makefile, $(subdir_makefiles),
$(info Including $(subdir_makefile))
$(eval include $(subdir_makefile)))
subdir_makefile :=
如果遇见API相关的PACKAGING/checkapi-current-timestamp] Error 38
需要执行:make update-api
如何在AOSP代码目录之外编译
[plain] view plain # Paths and settings
TARGET_PRODUCT = generic
ANDROID_ROOT = /home/karim/android/aosp-2.3.x
BIONIC_LIBC = $(ANDROID_ROOT)/bionic/libc
PRODUCT_OUT = $(ANDROID_ROOT)/out/target/proct/$(TARGET_PRODUCT)
CROSS_COMPILE =
$(ANDROID_ROOT)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi-
# Tool names
AS = $(CROSS_COMPILE)as
AR = $(CROSS_COMPILE)ar
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
LD = $(CROSS_COMPILE)ld
NM = $(CROSS_COMPILE)nm
OBJCOPY = $(CROSS_COMPILE)obj
OBJDUMP = $(CROSS_COMPILE)objmp
RANLIB = $(CROSS_COMPILE)ranlib
READELF = $(CROSS_COMPILE)readelf
SIZE = $(CROSS_COMPILE)size
STRINGS = $(CROSS_COMPILE)strings
STRIP = $(CROSS_COMPILE)strip
export AS AR CC CPP LD NM OBJCOPY OBJDUMP RANLIB READELF
SIZE STRINGS STRIP
# Build settings
CFLAGS = -O2 -Wall -fno-short-enums
HEADER_OPS = -I$(BIONIC_LIBC)/arch-arm/include
-I$(BIONIC_LIBC)/kernel/common
-I$(BIONIC_LIBC)/kernel/arch-arm
LDFLAGS = -nostdlib -Wl,-dynamic-linker,/system/bin/linker
$(PRODUCT_OUT)/obj/lib/crtbegin_dynamic.o
$(PRODUCT_OUT)/obj/lib/crtend_android.o
-L$(PRODUCT_OUT)/obj/lib -lc -ldl
# Installation variables
EXEC_NAME = example-app
INSTALL = install
INSTALL_DIR = $(PRODUCT_OUT)/system/bin
# Files needed for the build
OBJS = example-app.o
# Make rules
all: example-app
.c.o:
$(CC) $(CFLAGS) $(HEADER_OPS) -c {1}lt;
example-app: ${OBJS}
$(CC) -o $(EXEC_NAME) ${OBJS} $(LDFLAGS)
install: example-app
test -d $(INSTALL_DIR) || $(INSTALL) -d -m 755 $(INSTALL_DIR)
$(INSTALL) -m 755 $(EXEC_NAME) $(INSTALL_DIR)
clean:
rm -f *.o $(EXEC_NAME) core
distclean:
rm -f *~
rm -f *.o $(EXEC_NAME) core
如何增加一个新的设备
[plain] view plain $ cd ~/android/aosp-2.3.x
$ . build/envsetup.sh
$ mkdir -p device/acme/coyotepad
$ cd device/acme/coyotepad
进入AndroidProcts.mk
PRODUCT_MAKEFILES :=
$(LOCAL_DIR)/full_coyotepad.mk
对于full_coyotepad.mk
$(call inherit-proct, $(SRC_TARGET_DIR)/proct/languages_full.mk)
$(call inherit-proct, $(SRC_TARGET_DIR)/proct/full.mk)
DEVICE_PACKAGE_OVERLAYS :=
PRODUCT_PACKAGES +=
PRODUCT_COPY_FILES +=
PRODUCT_NAME := full_coyotepad
PRODUCT_DEVICE := coyotepad
PRODUCT_MODEL := Full Android on CoyotePad, meep-meep
在BoardConfig.mk中
TARGET_NO_KERNEL := true
TARGET_NO_BOOTLOADER := true
TARGET_CPU_ABI := armeabi
BOARD_USES_GENERIC_AUDIO := true
USE_CAMERA_STUB := true
打开vendorsetup.sh
add_lunch_combo full_coyotepad-eng
#p#副标题#e#
③ 如何搭建android开发环境_如何搭建一个Android开发环境
我的第一个Android程序
今天给大家分享一下我的第一个Android项目:helloword
首先我们开发Android程序需要一个开发环境,下面先分享一下环境搭建的方法
Android开发环境搭建非常简单,google为我们提供了一套洞吵完整的开发工具包下载
点击DownloadtheSDK就会出现下面的页面,选择同意以上条款,并根据自己的系统选择对应的版本,我的电脑是32位的所以就选择了32-bit的,然后点击下面蓝色的按钮就可以开始下载啦~~
下载好了之后呢是一个510M的压缩文件,选择好目录解桐茄压缩之后能我们会得到
这三个东西,这里呢我们看到了我们熟悉的Eclipse文件夹了,没错,这个文件夹下呢就是我们的开发工具啦,但是不要着急,但开始之前呢,局颤察我们需要先配置一下我们的环境变量
将SDK下的platform-tools和tools两个文件夹的完整路径呢配置到我们的环境变量PATH中
我的系统是window7的,配置环境变量的方法呢:右击我的电脑->属性->高级设置->环境变量->双击Path将连个文件夹的路径追加进去,注意中间要用分号隔开,点击确定。
配置好所有的环境变量后,打开我们的Eclipse文件夹下的eclipse.exe,第一次打开会弹出一个对话框,设置我们的工作路径,也就是我们保存项目的地方
经过加载之后呢,我们就看到操作界面了。
首先先创建一个Android的虚拟机,点击window下的AndroidVirtualDevicesManager选项
就可以看到我们的Android虚拟机管理界面了
点击new新建一个虚拟机
选择好后点击确定,一个虚拟机就创建好了,选择我们创建好,选中我创建好的虚拟机,start
加载界面
完成后就能看到我们的虚拟机啦~经过漫长的启动终于看到虚拟机界面了。
准备工作都做好了,下面开始创建一个Android项目啦,万能的helloword,哈哈!
虚拟机最小化,进入Eclipse界面,菜单栏File->new->Androidapplicationproject,新建一个Android项目
接着会出现一个界面,选择一些参数
接下来就是一路next然后finish,一个新的Android项目就建好了
接着在界面会看到Eclipse的界面了
右击我们的项目,runas->选择Androidapplication,就可以运行到我们的虚拟机上
④ 安卓APP的主要开发原理以及其主要过程是什么
开发原理:
Android应用程序是用Java语言编写的。编译过后的字节码,以及应用程序要求的其他数据和资源文件,通过aapt工具被绑定在一起,称为 Android包,这是一个带.apk后缀的档案文件。这个文件也是用户下载到他们设备上的文件。所有的代码在一个单一的.apk文件中,组成一个“应用程序”。
主要过程:
1、需求分析:
大部分创业型项目在这个阶段只是一些比较抽象的想法。有一份相对完善的需求文档,不仅有助于创业者自身对项目的理解和周全性分析,如果项目是交由设计公司去完成的话,也更有利于对方准确把握项目的定位和商业模式,以便给出专业的建议和解决方案。
2、原型设计
接下来会根据上面提到的具体需求文档,项目经理进行会进行原型图的设计。
3、UI设计
原型图经过反复推敲修正后,UI 设计师会进行UI界面相关的配色设计、功能具象化处理、交互设计、以及各种机型、系统的适配。UI 设计师经过多次与项目经理沟通修改后,最终的到定稿的高保真设计图。
4、开发
经过以上几个过程之后,会正式进入到开发阶段。
5、测试调试
APP 功能开发完成之后,测试人员会对整项目进行系统性测试。这个环节会调动起项目组内所有人相关人员。而测试这个环节的重要性不亚于前期功能的规划,如果团队没有经过专业系统性训练的测试人员,很可能会导致项目出现与设计初衷存在落差,以及遗漏下一些逻辑上的坑。
6、发布app
经过至少两轮的内部测试以及小范围外测(或者完成满足测试要求的周期)后,会进行最终版本的上架。
(4)android的开发环境扩展阅读
APP开发工具
1、MOTODEV Studio for Android
MOTODEV Studio for Android,这是基于Android的开发环境,为开发者们提供新的MOTODEV App Accelerator Program使他们可以开发出更适合摩托罗拉Android手机的应用程序。
2、J2ME开发插件 Mobile Tools for Java
Mobile Tools for Java (MTJ) 是Nokia公司开发的一款 Eclipse插件,用于支持 Java 手机应用程序开发。其前身就是大名鼎鼎的 EclipseME。
3、apk文件修改工具 Root Tools
RootTools是一个新的工具软件,Android开发者可以在这一工具软件的支持下,对.apk格式的文件进行再次修改,让程序表现更加出色,满足用户的需求。Root Tools里面自带有很多工具,比如BusyBox,它里面集成压缩了很多Linux的工具和命令,这样软件开发者在对....
4、IDEA的Android开发插件 idea-android
idea-android 是在 IDEA 集成开发环境中开发 Android 应用程序的插件。
参考资料
网络-app开发
⑤ 除了Android Studio还可以使用什么环境开发Andorid应用
可以用eclipse、ADTBundle做开发。
AndroidStudio是谷歌推出的一个Android集成开发工具,基于IntelliJIDEA.类似EclipseADT,AndroidStudio提供了集成的Android开发工具用于开发和调试。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
adtbundle是一款已集成了开发环境的android开发工具,并且包含了adt插件、sdktools和eclipse,功能比androidstudio功能强大。
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试,然后进行编写再提交程序。