这篇文章主要围绕Android开发入门环境快速搭建实战教程和android开发环境搭建步骤展开,旨在为您提供一份详细的参考资料。我们将全面介绍Android开发入门环境快速搭建实战教程的优缺点,解答a
这篇文章主要围绕Android开发入门环境快速搭建实战教程和android 开发环境搭建步骤展开,旨在为您提供一份详细的参考资料。我们将全面介绍Android开发入门环境快速搭建实战教程的优缺点,解答android 开发环境搭建步骤的相关问题,同时也会为您带来Android Library上传到JCenter仓库实践,android开发入门和实战、Android NDK 开发入门环境配置与小例子、Android OpenCV(四十一),androidapp开发入门与项目实战、Android 开发入门教程 --Android 应用程序结构分析的实用方法。
本文目录一览:- Android开发入门环境快速搭建实战教程(android 开发环境搭建步骤)
- Android Library上传到JCenter仓库实践,android开发入门和实战
- Android NDK 开发入门环境配置与小例子
- Android OpenCV(四十一),androidapp开发入门与项目实战
- Android 开发入门教程 --Android 应用程序结构分析
Android开发入门环境快速搭建实战教程(android 开发环境搭建步骤)
前言
很多朋友都想开始自己的Android开发之旅,但是遇到困难重重。从最开始接触Android开发,从搭建开发环境就花了我大部分时间。所以,作为Android开发第一步,开发环境的搭建,显得基础而重要,下面介绍一种快速搭建Android开发环境的方法,以帮助更多朋友快速上手。话不多说了,来一起看看详细的介绍吧。
方法如下:
在开始之前,我们首先需要了解,当前开发android使用的主流开发平台为eclipse,因此本文讨论的是基于eclipse来做的。
具体需要的各个文件(软件)如下:
Eclipse:Eclipse是Java 的集成开发环境(IDE),当然Eclipse也可以作为其他开发语言的集成开发环境,如C,C++,PHP,和Ruby等。Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
JDK:(Java Development Kit) 是 Java语言的软件开发工具包;JDK是Java的核心,包含了Java的运行环境(Java Runtime Environment),一堆Java工具和给开发者开发应用程序时调用的java类库。
简单区分:一个是开发平台,一个是java开发软件包
Android SDK:(Software Development Kit): 一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。在Android中,他为开发者提供了库文件以及其他开发所用到的工具。简单理解为开发工具包集合,是整体开发中所用到的工具包(简单区分:SDK是android的软件包而jdk是java的软件包)
ADT:(Android Development Tools): 目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具。adt只是一个eclipse的插件,里面可以设置sdk路径
下面列出各个版本之间的对应关系
|
SDK |
ADT |
1.1 |
系统自带 |
0.8.0 |
1.5 |
R3/R6或更高 |
0.9.1 |
1.6 |
R3/R4/R6或更高 |
0.9.3 |
2.0 |
R3或更高 |
0.9.4 |
2.2 |
R6/R12或更高 |
0.9.6 |
2.3 |
R8或更高 |
8.0.1 |
3.0 |
R10/R12或更高 |
9.0.0 |
3.1 |
R11/R12或更高 |
11.0.0 |
3.2 |
R12或更高 |
12.0.0 |
4.0 |
R14或更高 |
14.0.0 |
4.1 |
R20或更高 |
20.0.0 |
4.2 |
R20或更高 |
20.0.0 |
4.2.2 |
|
21.0.0 |
... |
R21或更高 |
R21或更高 |
对这些产品熟悉后,再进行具体的安装工作:
1、安装JDK
从Oracle官网(http://www.Oracle.com/technetwork/Java/javase/downloads/index.html)下载JDk后,双击进行安装,会在相应目录下出现两个文件夹,一个代表jdk一个代表jre。安装完成后就是设置环境变量;
JAVA_HOME:先设置这个系统变量名称,变量值为JDK在你电脑上的安装路径:D:\Program Files\Java\jdk1.8.0_65。创建好后则可以利用%JAVA_HOME%作为JDK安装目录的统一引用路径。
PATH:PATH属性一般计算机中本身就已经存在了,可直接编辑,在原来变量后追加:;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。
CLAsspATH:设置系统变量名为:CLAsspATH 变量值为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;注意变量值字符串前面有一个"."表示当前目录,设置CLAsspATH 的目的,在于告诉Java执行环境,在哪些目录下可以找到您所要执行的Java程序所需要的类或者包。注:用eclipse开发的时候可以不设置classpath,因为eclipse已有相关的配置。
2、安装eclipse
完成了jdk的安装配置后,就要进行开发平台eclipse的安装,这种软件的安装网上教程很多,在此不再赘述,下载可到eclipse官网(http://www.eclipse.org/downloads/)注:至此已经完成了开发普通JAVA应用程序的环境配置
3、安装ADT插件
(1)启动eclipse,在菜单栏上选择Help->Install New Software
(2)单击右上角的Add按钮
(3)在"Add Repository"对话框中,单击"Archive"
(4)选择下载的adt-22.0.0.zip文件并单击"确认"。
(5)在Name(名称)处输入"ADT ",单击“Finish”
(6)在软件对话框中,选中"Developer Tools"复选框,然后点击"Next"
(7)在下一个窗口中,您会看到一个要下载的工具列表。单击“Next”
(8)阅读并接受许可协议,然后单击“Finish”
(9)安装完成后,重新启动Eclipse
4、使用SDK
由于google现在在国内基本上已经被墙了,所以想要在线下载更新Android SDK基本上是件很困难的事,因此可以选择使用别人已经下载好的SDK进行配置就好(前提你安装了ADT插件):
(1)启动Eclipse,选择windows>preferences>android
(2)将下载的Android SDK的zip文件解压缩,可以看到有SDK Manager.exe等文件。
(3)在选项卡中选择"browse",选择上面解压的目录,点击确定
(4)由于本文是使用别人下载好的SDK因此可能在做完上面的步骤后,无法出现启动SDK manager的快捷按钮,需要手动开启;选择windows->Customize Perspective,在弹出窗口中打开Action set Availability选项卡,选中Android SDK and AVD Manager复选框即可。
5、创建虚拟Android设备
(1)启动AVD Manager(Android virtual Devices)
(2)点击New创建新的虚拟设备,可以根据自己的需要进行一些性能的设置。
(3)选择创建的虚拟Android设备,点击Start启动当前虚拟Android设备实际效果如下
最后推荐一个Android开发网站:http://tools.android-studio.org/index.PHP/sdk
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。
Android Library上传到JCenter仓库实践,android开发入门和实战
这里示例创建一个myutils的包,如下图所示:
ok,这个时候你创建好了package,后面就可以准备我们开发好的Library,然后上传到maven仓库,继续耐心看下面的步骤。
创建一个Android Library
===================
新建一个android project,然后new 一个module,选择android library,项目结构如下:
这里我只是为了演示,创建了一个简单的类:
应用bintray插件
===========
如果想通过bintrayUpload命令上传library就必须引用相应的插件,配置如下:
dependencies {
classpath ‘com.android.tools.build:gradle:2.0.0’
classpath ‘com.github.dcendents:android-maven-gradle-plugin:latest.release’
classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6’
}
然后在我们的Library工程的build.gradle引用插件,如下所示:
apply plugin: ‘com.android.library’
apply plugin: ‘com.github.dcendents.android-maven’
apply plugin: ‘com.jfrog.bintray’
其中com.android.library是android的插件,表示它是一个android library。
应用成功后,你会看到插件生成的task,如下图所示:
通过这个task,我们可以将我们的library上传到maven仓库当中,现在还不行,我们还得继续完成我们的配置。
build.gradle配置
==============
我们需要在library工程的build.gradle配置我们的相应的信息,下面是示例代码:
apply plugin: ‘com.android.library’
apply plugin: ‘com.github.dcendents.android-maven’
apply plugin: ‘com.jfrog.bintray’
// 这个version是区分library版本的,因此当我们需要更新library时记得修改这个version
version = “1.0.0”
android {
compileSdkVersion 19
buildToolsversion “23.0.3”
resourcePrefix “devilwwj_”
defaultConfig {
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName version
}
lintOptions {
abortOnError false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
}
}
}
dependencies {
compile filetree(dir: ‘libs’, include: [’*.jar’])
testCompile ‘junit:junit:4.12’
}
def siteUrl = ‘https://github.com/devilWwj/Android-Tech’ // 项目的主页
def gitUrl = ‘https://github.com/devilWwj/Android-Tech.git’ // Git仓库的url
group = “com.devilwwj.library” // Maven Group ID for the artifact,一般填你唯一的包名
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging ‘aar’
// Add your description here
description ‘my utils for test’
name ‘Android Commonly used utils’ //项目描述
url siteUrl
// Set your license
licenses {
license {
name ‘The Apache Software License, Version 2.0’
url ‘http://www.apache.org/licenses/LICENSE-2.0.txt’
}
}
developers {
developer { // 开发者信息
id ‘YOUR_ID’
name ‘YOUR NAME’
email ‘YOUR EMAIL’
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = ‘sources’
}
task javadoc(type: Javadoc) {
options.encoding = ‘UTF-8’
source = ‘src/main/java’
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = ‘javadoc’
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
Properties properties = new Properties()
// 加载本地配置
properties.load(project.rootProject.file(‘local.properties’).newDataInputStream())
bintray {
user = properties.getProperty(“bintray.user”)
key = properties.getProperty(“bintray.apikey”)
configurations = [‘archives’]
pkg {
repo = “maven” //发布到Bintray的那个仓库里,默认账户有四个库,我们这里上传到maven库
name = “myutils” //发布到Bintray上的项目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = [“Apache-2.0”]
publish = true
}
}
你还需要在local.properties中定义两行代码:
总结
【Android 详细知识点思维脑图(技能树)】
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。
这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
详细整理在GitHub:Android架构视频+BAT面试专题PDF+学习笔记
识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
[外链图片转存中…(img-qOGAFS7x-1646135424050)]
详细整理在GitHub:Android架构视频+BAT面试专题PDF+学习笔记
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
Android NDK 开发入门环境配置与小例子
NDK:Native Development Kit原生开发工具
NDK能干什么:NDK使得在android中,java可以调用C函数库。
为什么要用NDK:我们都知道,java是半解释型语言,很容易被反汇编后拿到源代码文件,在开发一些重要协议时,我们为了安全起见,使用C语言来编写这些重要的部分,来增大系统的安全性。还有,在一些接近硬件环境下,相信大家都清楚C与java的优劣。顺带提一下:NDK并不能显著提升应用效率。why?我们都觉得C语言比起java来说效率要高出很多,一方面,随着jdk的不断更新,java的效率也随之提高;另一方面,即便使用C语言编码提高了应用效率,但是在java与C相互调用时平白又增大了开销。
对于这些问题,这里就不多说了,希望详细了解的,请各位自行搜索。
NDK开发,第一步,当然是搭建环境
首先,去http://developer.android.com/tools/sdk/ndk/index.html下载你对应平台的开发工具
以上内容来自
ndk有什么用想必要用的人都知道, 但是像其他工具一样。ndk的开发需要搭建环境,搭建环境这个东西,找不到路子就很麻烦,找到了路子就很容易。以前想学习android上opencv开发,但是当时一直找不到好路子搭建ndk,然后就不了了之了。
今天又来了兴趣搭建ndk,在历经的一段波折之后,终于如愿以偿了。
现在就和大家分享一下我的经历。
1.首先下载了NDK之后,直接解压到指定的目录就可一了,例如我的ndk主目录是 E:\android-ndk-r9d
本来老版本是需要安装cygwin的,但是新版本的可以不用装cygwin(我的是 ndk-r9d),直接用ndk的ndk-build.cmd(cygwin安装比较麻烦,等待时间也很久,有兴趣的同学可以自行百度,http://www.cygwin.com/)
2.然后就是将ndk的主目录添加到eclipse中,如下图
window->preferences->android->ndk
至此,eclipse就可以使用ndk了,如果是想使用命令行模式下使用ndk,可以将ndk目录添加到环境变量中
例如我的是 NDK_HOME = E:\android-ndk-r9d 然后在Path最后面添加%NDK_HOME%(注意与前面的变量用分好隔开)
打开cmd,输入ndk-build 出现下面字样说明成功
C:\Users\Tomorrow>ndk-build
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
E:\android-ndk-r9d\build/core/build-local.mk:148: *** Android NDK: Aborting Stop.
然后就是我们的小例子时间
创建android工程TestJni
一切默认,创建完成之后,右键工程,选中Andriod Tools -> Add Native Support..(最下面)
接下来会让你给你的本地库起一个名字 我的是 test-jni,点击确定,ok
这个操作会自动地帮你的工程添加ndk所需的文件夹目录,并且生成对应的.mk .cpp文件(看以前的教程总是要手动添加,蛋疼不已。。)如下图,是不是很方便呢~~哈哈
接下来就是我们的java代码了
package com.xmt.testjni;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class TestJni extends Activity {
static{
System.loadLibrary("test-jni");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView t = new TextView(this);
t.setText(stringFromJNI());
setContentView(t);
}
public native String stringFromJNI();
}
代码很简单,主要就是这个
static{
System.loadLibrary("test-jni");
}
和
public native String stringFromJNI();
链接库名字一定要对应,要不然找不到
ok,java这边写完了,再看 jni目录下的文件
首先是Android.mk,这个例子很简单,也没有这么文件直接默认
LOCAL_PATH := $(call my-dir)//当前路径
include $(CLEAR_VARS)
LOCAL_MODULE := test-jni //要生成的.so库名
LOCAL_SRC_FILES := test-jni.cpp //你的.cpp文件名字
include $(BUILD_SHARED_LIBRARY)
接下来是cpp文件 (开始的时候只有#include<jni.h>)
#include <jni.h>
extern "C"
{
jstring Java_com_xmt_testjni_TestJni_stringFromJNI(JNIEnv *env ,
jobject thiz){
return env->NewStringUTF("Hello from test-jni !");
}
}
上面的代码就是返回一个字符串,但是有几点需要注意(我也是找了很久才知道。。。)
首先,一般会提示你找不带 jni.h (我的是警告),说明你的工程还没添加include目录,如果你看着不爽,想去掉他,就右键工程->属性->c/c++ Genenral->paths and symbols 选中里面的includes标签页,选择c/c++ 然后点击add
输入 ${NDK_HOME}:/platforms/android-14/arch-arm/usr/include(${NDK_HOME}是你的ndk主目录)
然后点击确定,之后在清理一下项目,然后构建一下项目,警告就没了~:)
第二点就是那个
extern "C"{//你的方法}
不能少(我看ndk samples下面那个hello-jni的cpp就没有,我模仿它写,就一直报
java.lang.UnsatisfiedLinkError:Native method not found:com.xmt.testjni.TestJni.stringFromJNI......错误,这个错误我找了好久才知道问题所在T^T)
第三就方法的名字
Java_com_xmt_testjni_TestJni_stringFromJNI//必须是 Java_packagename_classname_methodname格式
最后就是那个
env->NewStringUTF("Hello from test-jni !");
//ndk samples下面那个hello-jni里面是(*env),.c文件可以那样写,.cpp文件那样会报错
然后就大功告成~
运行你的项目,就会出现类似下面的画面
ok,配置和例子都到这里(如有什么不对的地方请给我留言~觉得好的话就点个赞吧~还是第一次写呢)
Android OpenCV(四十一),androidapp开发入门与项目实战
FLOODFILL_FIXED_RANGE:如果设置为这个标识符,就会考虑当前像素与种子之间的差,否则就考虑当前像素与其邻域像素的差。
FLOODFILL_MASK_ONLY,如果设置为这个标识符,函数不会去填充改变原始图像,而是去填充掩膜图像。也就是忽略第三个参数newVal
。
// C++: enum FloodFillFlags
public static final int
FLOODFILL_FIXED_RANGE = 1 << 16,
FLOODFILL_MASK_ONLY = 1 << 17;
所以, flag 可以用 按位或,即‘|’
连接起来。例如想用 4 邻域填充,并填充固定像素范围,填充掩码而不是填充原图,以及设置填充值为 250,那么输入的参数为
4 or (250 shl 8) or Imgproc.FLOODFILL_FIXED_RANGE or Imgproc.FLOODFILL_MASK_ONLY
操作
/**
- 图像分割–漫水填充法
- author: yidong
- 2020/11/7
*/
class FloodFillActivity : AppCompatActivity() {
private val mBinding by lazy { ActivityFloodFillBinding.inflate(layoutInflater) }
private lateinit var mMenuDialog: BottomSheetDialog
private lateinit var mMenuDialogBinding: LayoutFloodFillMenuBinding
private var mConnectionType = 4
private var mFloodFillFlag = 0
private var mScalarNumber = 250 shl 8
private lateinit var mRgb: Mat
private var loDiff = 0.0
set(value) {
field = value
doFloodFill()
}
private var upDiff = 0.0
set(value) {
field = value
doFloodFill()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(mBinding.root)
val bgr = Utils.loadResource(this, R.drawable.wedding)
mRgb = Mat()
Imgproc.cvtColor(bgr, mRgb, Imgproc.COLOR_BGR2RGB)
mBinding.ivLena.showMat(mRgb)
mBinding.sbLow.setonSeekBarchangelistener(object : SeekBar.OnSeekBarchangelistener {
override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
mBinding.tvLoDiff.text = p1.toString()
loDiff = p1.todouble()
}
override fun onStartTrackingTouch(p0: SeekBar?) {
}
override fun onStopTrackingTouch(p0: SeekBar?) {
}
})
mBinding.sbUp.setonSeekBarchangelistener(object : SeekBar.OnSeekBarchangelistener {
override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
mBinding.tvUpDiff.text = p1.toString()
upDiff = p1.todouble()
}
override fun onStartTrackingTouch(p0: SeekBar?) {
}
override fun onStopTrackingTouch(p0: SeekBar?) {
}
})
mBinding.btFlag.setonClickListener {
showMenuDialog()
}
doFloodFill()
}
private fun doFloodFill() {
val tmp = mRgb.clone()
val maskers = Mat(mRgb.rows() + 2, mRgb.cols() + 2, CV_8UC1, Scalar.all(0.0))
Imgproc.floodFill(
tmp,
maskers,
Point(7.0, 7.0),
Scalar(65.0, 105.0, 225.0),
Rect(),
Scalar.all(loDiff),
Scalar.all(upDiff),
mConnectionType or mFloodFillFlag or mScalarNumber
)
if (mFloodFillFlag and Imgproc.FLOODFILL_MASK_ONLY == Imgproc.FLOODFILL_MASK_ONLY) {
mBinding.ivResult.showMat(maskers)
} else {
mBinding.ivResult.showMat(tmp)
}
tmp.release()
maskers.release()
}
private fun showMenuDialog() {
if (!this::mMenuDialog.isInitialized) {
mMenuDialog = BottomSheetDialog(this)
mMenuDialogBinding = LayoutFloodFillMenuBinding.inflate(layoutInflater)
mMenuDialog.setContentView(mMenuDialogBinding.root)
mMenuDialog.setondismissListener {
mConnectionType =
if (mMenuDialogBinding.rgFirst.checkedRadioButtonId == R.id.rb_8) {
8
} else {
4
}
mFloodFillFlag = if (mMenuDialogBinding.cbFixed.isChecked) {
mFloodFillFlag or Imgproc.FLOODFILL_FIXED_RANGE
} else {
mFloodFillFlag and Imgproc.FLOODFILL_FIXED_RANGE.inv()
}
mFloodFillFlag = if (mMenuDialogBinding.cbMaskOnly.isChecked) {
mFloodFillFlag or Imgproc.FLOODFILL_MASK_ONLY
} else {
mFloodFillFlag and Imgproc.FLOODFILL_MASK_ONLY.inv()
}
try {
mScalarNumber = mMenuDialogBinding.etScalar.text.toString().toInt(10) shl 8
} catch (e: NumberFormatException) {
e.printstacktrace()
}
doFloodFill()
}
}
mMenuDialog.show()
}
最后
光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:
这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想PDF文档,内容详细,把Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架这些知识点从源码分析到实战应用都讲的简单明了。
由于文档内容过多,篇幅受限,只能截图展示部分,更为了不影响阅读,这份文档已经打包在GitHub,有需要的朋友可以直接点此处前往免费下载。
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
%E9%AB%98%E8%96%AA%EF%BC%81.md)。**
[外链图片转存中…(img-cj6liyaS-1644026124673)]
[外链图片转存中…(img-72EfiHLI-1644026124674)]
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!
Android 开发入门教程 --Android 应用程序结构分析
一、新建 HelloWorld 项目:1、打开 Eclipse,点击 “File”->"New"->"Project"-Android Application Project"":
在弹出的 “New Android Application” 窗体中输入相应的应用名称、项目名称、包名称,并选择相应的 SDK 版本和应用主题:
选择项目保存位置,一路 “next” 完成项目创建:
创建后的项目:
在创建后的项目名称上右键单击选择 “Run As”->“Android Application” 运行刚创建的项目:
运行结果:
二、应用程序目录结构简析:
1、应用程序目录结构:
2、各部分说明:
Activity 文件:双击目录中的 “MainActivity.java”,可以看到 MainActivity 的代码:

1 package android.basic.helloandroid;
2
3 import android.os.Bundle;
4 import android.app.Activity;
5 import android.view.Menu;
6
7 public class MainActivity extends Activity {
8
9 @Override
10 protected void onCreate(Bundle savedInstanceState) {
11 super.onCreate(savedInstanceState);
12 setContentView(R.layout.activity_main);
13 }
14
15 @Override
16 public boolean onCreateOptionsMenu(Menu menu) {
17 // Inflate the menu; this adds items to the action bar if it is present.
18 getMenuInflater().inflate(R.menu.activity_main, menu);
19 return true;
20 }
21
22 }

从代码中可以看到 MainActivity 继承于 Activity 类,Activity 是 Android 中的视图部分,负责处理界面显示。在 MainActivity 里面重写了父类的 onCreate 方法和 onCreateOptionsMenu 方法,在重写的 onCreate 方法里方法 setContentView (R.layout.activity_main) 给 MainActivity 设置了要显示的视图 R.layout.activity_main,视图由 R 类寻找并加载(感觉很像 mvc,Activity 相当于 Controller 而要显示的 layout 就相当于具体的页面)。
R 文件:在 MainActivity 的 setContentView (R.layout.activity_main) 方法中我们用 R.layout.activity_main 指定了要显示的视图,在应用程序目录结构的截图中可以看到 R 文件位于 gen 目录下面,双击显示代码:

1 /* AUTO-GENERATED FILE. DO NOT MODIFY.
2 *
3 * This class was automatically generated by the
4 * aapt tool from the resource data it found. It
5 * should not be modified by hand.
6 */
7
8 package android.basic.helloandroid;
9
10 public final class R {
11 public static final class attr {
12 }
13 public static final class drawable {
14 public static final int ic_launcher=0x7f020000;
15 }
16 public static final class id {
17 public static final int menu_settings=0x7f070000;
18 }
19 public static final class layout {
20 public static final int activity_main=0x7f030000;
21 }
22 public static final class menu {
23 public static final int activity_main=0x7f060000;
24 }
25 public static final class string {
26 public static final int app_name=0x7f040000;
27 public static final int hello_world=0x7f040001;
28 public static final int menu_settings=0x7f040002;
29 }
30 public static final class style {
31 /**
32 Base application theme, dependent on API level. This theme is replaced
33 by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
34
35
36 Theme customizations available in newer API levels can go in
37 res/values-vXX/styles.xml, while customizations related to
38 backward-compatibility can go here.
39
40
41 Base application theme for API 11+. This theme completely replaces
42 AppBaseTheme from res/values/styles.xml on API 11+ devices.
43
44 API 11 theme customizations can go here.
45
46 Base application theme for API 14+. This theme completely replaces
47 AppBaseTheme from BOTH res/values/styles.xml and
48 res/values-v11/styles.xml on API 14+ devices.
49
50 API 14 theme customizations can go here.
51 */
52 public static final int AppBaseTheme=0x7f050000;
53 /** Application theme.
54 All customizations that are NOT specific to a particular API-level can go here.
55 */
56 public static final int AppTheme=0x7f050001;
57 }
58 }

从代码中可以看到 R 文件里面有很多类,每个类里面又有很多变量,这些类和变量在我们添加、删除控件或资源文件(图片、声音等)由开发工具自动帮我们维护的,由它来调用应用程序的各种资源,在代码第一句的注释中也说明了 “AUTO-GENERATED FILE. DO NOT MODIFY”。
layout 文件:res/layout/activity_main.xml – 布局文件,双击 activity_main.xml 会进入可视化编辑界面,在这里你可以根据需要选择相应的控件:
也可以点击红框部分进入文本编辑界面直接写对应控件的代码(从截图代码文件可以看到该 layout 由一个相对布局和一个文本框组成):
AndroidManifest 文件:在应用程序目录截图中倒数第四个可以看到一个 AndroidManifest.xml 文件,它是应用程序的配置文件包含在每个安卓应用程序中,它向系统描述了本程序所包括的组件、所实现的功能、所能处理的数据、要请求的资源等,可以近似看做网站中的 Web.conig 文件,同样它也可以由可视化编辑器或文本编辑器编辑:
Android.jar 文件:Android.jar 内部常用包作用概述,如下图所示:
可以看到 Android.jar 里面包含了很多包,常见包的作用如下:
android.app----------- 提供高层的程序模型、提供基本的运行环境
android.content------- 包含各种的对设备上的数据进行访问和发布的类
android.database------ 通过内容提供者浏览和操作数据库
android.graphics------- 底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.
android.location------- 定位和相关服务的类
android.media--------- 提供一些类管理多种音频、视频的媒体接口
android.net------------ 提供帮助网络访问的类,超过通常的 java.net.* 接口
android.os------------- 提供了系统服务、消息传输、IPC 机制
android.opengl-------- 提供 OpenGL 的工具
android.provider------- 提供类访问 Android 的内容提供者
android.telephony----- 提供与拨打电话相关的 API 交互
android.view----------- 提供基础的用户界面接口框架
android.util------------ 涉及工具性的方法,例如时间日期的操作
android.webkit--------- 默认浏览器操作接口
android.widget--------- 包含各种 UI 元素(大部分是可见的)在应用程序的屏幕中使用
关于Android开发入门环境快速搭建实战教程和android 开发环境搭建步骤的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android Library上传到JCenter仓库实践,android开发入门和实战、Android NDK 开发入门环境配置与小例子、Android OpenCV(四十一),androidapp开发入门与项目实战、Android 开发入门教程 --Android 应用程序结构分析等相关内容,可以在本站寻找。
本文标签: