文章目录

  • 安卓开发环境
    • 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工程详解相关推荐

  1. android的helloworld工程目录学习

    android的helloworld工程目录学习 Android工程的主要目录有src.gen.Android X.X.bin.res等文件夹. 1.     Src文件夹 Src文件夹包含java源 ...

  2. Android Gradle 自定义Task 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  3. 导出jar插件_Fluttify输出的Flutter插件工程详解

    系列文章: yohom:Fluttify输出的Flutter插件工程详解​zhuanlan.zhihu.com yohom:开发Flutter插件必备原生SDK->Dart接口生成引擎`Flut ...

  4. Android JNI作用及其详解

    Android JNI作用及其详解 Java Native Interface (JNI)标准是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程接口,它使得在 J ...

  5. Android 源码编译详解【合集篇】

    Android 源码编译详解[一]:服务器硬件配置及机型推荐 做 Android系统开发多年,开发环境都是入职就搭建好了,入职时拿个账号密码就直接开始搞开发了,年初换了新公司,所有的项目都是刚起步,一 ...

  6. Linux下Android ADB驱动安装详解

    Developing with cocos2d-x for android on Linux http://blog.plicatibu.com/developing-with-cocos2d-x-f ...

  7. Android 换肤方案详解(一)

    引言 在我们的开发中,也许有些项目会有换肤的需求,这个时候会比较头疼怎么做才能做到一键换肤呢?大家肯定是希望只要一行代码就能调用最好.下面我们先分析一下换肤的本质是什么? 原理 换肤,其本质无非就是更 ...

  8. Android NFC卡实例详解

    Android NFC卡实例详解 公司最近在做一个NFC卡片的工程,经过几天的时间,终于写了一个Demo出来,在此记录下在此过程中遇到的问题.由于之前本人是做iOS的,Android写起来并不是那么的 ...

  9. android jar 包 意见反馈功能,android重点jar包详解.docx

    android重点jar包详解 深入理解View(一):从setContentView谈起 我们都知道?MVC,在Android中,这个?V?即指View,那我们今天就来探探View的究竟.在onCr ...

最新文章

  1. R语言ggplot2可视化:ggplot2可视化密度图(显示数据密集区域)、ggplot2可视化密度图(对数坐标):log10比例的收入密度图突出了在常规密度图中很难看到的收入分布细节
  2. 模拟上帝之手的对抗博弈——GAN背后的数学原理
  3. GPU Gems1 - 24 高质量的过滤
  4. P6563-[SBCOI2020]一直在你身旁【dp,单调队列】
  5. java 线程池 初始大小_为什么tomcat的默认线程池大小如此之大? - java
  6. POJ 3614 Sunscreen
  7. 怎么安装aptdaemon模块_模块化扩容,米特拉轻商用空气能热水震撼亮相
  8. GIS中的基本概念收集
  9. 目的路径太长如哈删除_win7系统删除文件夹提示“无法访问此文件夹 路径太长”如何解决...
  10. 关于OptiStruct提问的一些建议
  11. openstack RPM打包
  12. win10 远程桌面由于以下原因之一无法连接到远程计算机
  13. 计算机一直显示配置更新失败怎么办,电脑更新新系统的时候出现配置更新失败问题怎么办...
  14. 微信短信显示服务器解包异常,图解微信常见帐号异常处理办法
  15. 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
  16. [英文邮件写作技巧] 表达感谢,提出问题,描述附件
  17. python向excel写数据_Python向excel中写入数据的方法 方法简单
  18. 论文阅读《Characterizing BDS signal-in-space performance from integrity perspective》1
  19. 使用QImage生成纯透明png图片
  20. 程序员面试揭秘之程序员靠什么途径去美国工作?

热门文章

  1. Postman:Postman(HTTP的测试工具)使用方法详细攻略
  2. CV之YOLOv3:基于Tensorflow框架利用YOLOv3算法对热播新剧《庆余年》实现目标检测
  3. 成功解决read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and wil
  4. ML之4PolyR:利用四次多项式回归4PolyR模型+两种正则化(Lasso/Ridge)在披萨数据集上拟合(train)、价格回归预测(test)
  5. NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容—利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类
  6. TF之AutoML框架:AutoML框架的简介、特点、使用方法详细攻略
  7. Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
  8. Java遍历指定文件夹,在屏幕打印所有以abc结尾的文件
  9. http和https的一种能力?
  10. appium+python自动化33-解锁九宫格(TouchAction)