文章目录
- 安卓开发环境
- 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 {
@Override
protected 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是资源文件