002 Android之helloworld工程详解
文章目录
- 安卓开发环境
- Android SDK
- adb
- 创建第一个hello world工程
- hello world工程详解
- manifests清单文件
- java源码
- res资源
- 安卓文件目录总结
安卓开发环境
Android SDK
SDK中包含Android开发的编译环境
- build-tools:编译工具
- docs:文档
- sources:源码
- system-images:系统镜像
- platfrom-tools:平台工具
- adb工具:android debug brige 安卓调试桥(D:\Android\sdk\platform-tools)
- AVD Manager.exe:安卓虚拟设备管理器
- SDK Manager.exe:SDK管理器
- monitor.exe:安卓设备监视器(D:\Android\sdk\tools\lib\monitor-x86_64)
adb
adb是安卓开发与调试的必备工具
命令 | 说明 |
---|---|
adb device | 列出所有设备 |
adb install hello.apk | 安装hello.apk |
adb install -s emulator -5554 D:/hello.apk | 安装应用到指定模拟器 |
adb uninstall hello.apk | 卸载hello.apk |
adb pull | 获取模拟器中的文件 |
adb push | 向模拟器中写文件 |
adb shell | 进入模拟器的shell模式 |
adb reboot | 重启设备 |
adb logcat | 查看日志 |
emulate -avd advname | 启动模拟器 |
创建第一个hello world工程
开发工具:Andriod Studio
选择Start a new Android Studio project
应用名称和域名可以自行修改
样式选择适应手机
Activity选择空
名称默认,点击完成
点击运行
选择设备
可以看到刚创建的app运行成功
hello world工程详解
当工程创建完成以后,左侧会有一个目录,这个目录是Android Studio虚拟出来的,和磁盘上的目录是不一样的。这个虚拟目录将安卓项目做了一个分类
- manifests 清单文件
- java 源代码
- res 资源
manifests清单文件
- package
manifests 下面只有一个文件AndroidManifest.xml,每一个项目的清单文件名字都是固定的。文件采用xml格式。其中有一个属性特别重要
package="com.example.a87321.myapplication"
这个属性指定了包名,包名在安卓系统中是不允许重复的。
- application
<application
/application>
application的属性,主要是对整个app进行设置
android:icon="@mipmap/ic_launcher"
其中艾特代表引用资源,艾特后边是资源类型。格式为@资源类型/资源名称
图标保存在ic_launcher的位置,有6个不同尺寸图片,为了适应不同的分辨率。
再看下面一个xml
android:label="@string/app_name"
这里引用的是一个字符串资源
其中字符串保存在values->strings.xml里,修改了这个字符串的值就相当于是修改了app的名称
- activity
<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
- activity是界面组件
- android:name 指定界面组件对应的类名,.省略了包名
- intent-filter指定的是这个类的一些属性
- action.MAIN代表入口
- category.LAUNCHER是启动器
- 如果activity中有action.MAIN和category.LAUNCHER说明当前类就是入口类
java源码
后两个文件夹用于测试,基本用不到,我们点开MainActivity
package com.example.a87321.myapplication;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
}
其中MainActivity继承AppCompatActivity
其中MainActivity的祖先类是Context,某些方法参数是Context,我们就可以传入Activity类型的对象或者是this
super.onCreate(savedInstanceState);
在重写的onCreate方法中,首先调用了父类的onCreate函数
setContentView(R.layout.activity_main);
然后设置当前类所需要的资源ID,将代码和资源建立关系。R.layout.activity_main是一个资源ID
按住Ctrl键可以看到上面有一个资源ID,这个值是安卓编译器生成的,与资源文件一一对应
String str=getString(R.string.app_name);
我们也可以用这种方式去访问资源中的字符串
然后按鼠标左键单击资源ID可以跳转到当前的资源
点击下面的Text可以切换到xml页面,这个界面相当于是安卓的可视化编辑界面
res资源
layout:布局
drawable:图片
mipmap:图标
values:字符串 颜色 尺寸等
安卓文件目录总结
安卓app的目录结构分为三大块
- manifests清单文件,主要作用是配置整个app,是安卓逆向分析中最重要的文件
- java是源代码
- res是资源文件
002 Android之helloworld工程详解相关推荐
- android的helloworld工程目录学习
android的helloworld工程目录学习 Android工程的主要目录有src.gen.Android X.X.bin.res等文件夹. 1. Src文件夹 Src文件夹包含java源 ...
- Android Gradle 自定义Task 详解
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...
- 导出jar插件_Fluttify输出的Flutter插件工程详解
系列文章: yohom:Fluttify输出的Flutter插件工程详解zhuanlan.zhihu.com yohom:开发Flutter插件必备原生SDK->Dart接口生成引擎`Flut ...
- Android JNI作用及其详解
Android JNI作用及其详解 Java Native Interface (JNI)标准是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 J ...
- Android 源码编译详解【合集篇】
Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...
- Linux下Android ADB驱动安装详解
Developing with cocos2d-x for android on Linux http://blog.plicatibu.com/developing-with-cocos2d-x-f ...
- Android 换肤方案详解(一)
引言 在我们的开发中,也许有些项目会有换肤的需求,这个时候会比较头疼怎么做才能做到一键换肤呢?大家肯定是希望只要一行代码就能调用最好.下面我们先分析一下换肤的本质是什么? 原理 换肤,其本质无非就是更 ...
- Android NFC卡实例详解
Android NFC卡实例详解 公司最近在做一个NFC卡片的工程,经过几天的时间,终于写了一个Demo出来,在此记录下在此过程中遇到的问题.由于之前本人是做iOS的,Android写起来并不是那么的 ...
- android jar 包 意见反馈功能,android重点jar包详解.docx
android重点jar包详解 深入理解View(一):从setContentView谈起 我们都知道?MVC,在Android中,这个?V?即指View,那我们今天就来探探View的究竟.在onCr ...
最新文章
- R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)、ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节
- 模拟上帝之手的对抗博弈——GAN背后的数学原理
- GPU Gems1 - 24 高质量的过滤
- P6563-[SBCOI2020]一直在你身旁【dp,单调队列】
- java 线程池 初始大小_为什么tomcat的默认线程池大小如此之大? - java
- POJ 3614 Sunscreen
- 怎么安装aptdaemon模块_模块化扩容,米特拉轻商用空气能热水震撼亮相
- GIS中的基本概念收集
- 目的路径太长如哈删除_win7系统删除文件夹提示“无法访问此文件夹 路径太长”如何解决...
- 关于OptiStruct提问的一些建议
- openstack RPM打包
- win10 远程桌面由于以下原因之一无法连接到远程计算机
- 计算机一直显示配置更新失败怎么办,电脑更新新系统的时候出现配置更新失败问题怎么办...
- 微信短信显示服务器解包异常,图解微信常见帐号异常处理办法
- 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
- [英文邮件写作技巧] 表达感谢,提出问题,描述附件
- python向excel写数据_Python向excel中写入数据的方法 方法简单
- 论文阅读《Characterizing BDS signal-in-space performance from integrity perspective》1
- 使用QImage生成纯透明png图片
- 程序员面试揭秘之程序员靠什么途径去美国工作?
热门文章
- Postman:Postman(HTTP的测试工具)使用方法详细攻略
- CV之YOLOv3:基于Tensorflow框架利用YOLOv3算法对热播新剧《庆余年》实现目标检测
- 成功解决read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and wil
- ML之4PolyR:利用四次多项式回归4PolyR模型+两种正则化(Lasso/Ridge)在披萨数据集上拟合(train)、价格回归预测(test)
- NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容—利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类
- TF之AutoML框架:AutoML框架的简介、特点、使用方法详细攻略
- Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
- Java遍历指定文件夹,在屏幕打印所有以abc结尾的文件
- http和https的一种能力?
- appium+python自动化33-解锁九宫格(TouchAction)