APP运行环境
APP是在手机上运行的一类应用软件,而应用软件依附于操作系统。
为了提供App开发的功能测试环境,一种办法是利用Android Studio创建内置的模拟器,然后启动内置模拟器,再在模拟器上运行App应用 具体步骤参考我这篇博客模拟器创建
另一种办法是使用真实手机测试App,该办法在实际开发中更为常见,由于模拟器本身跑在电脑上面,占用电脑的CPU和内存,会拖累电脑的运行速度,况且模拟器仅仅是模拟而已,无法完全验证App的所有功能,因此最终都得通过真机测试才可以
下面介绍真机调试的五个步骤
1:使用数据线把手机连到电脑上
把手机数据线的一段接到电脑的USB接口即可
2:在电脑上安装手机的驱动程序
一般电脑会把手机当作USB存储设备一样安装驱动,大多是情况会自动安装成功,如果遇到少数情况安装失败,需要先安装**手机助手,由助手软件下载对应驱动
3:打开手机的开发者选项并启用USB调试(重要!!!)
手机出厂后默认关闭开发者选项,需要开启开发者选项才能调试App,打开手机的设置菜单,进入系统-关于手机-版本信息页面 一般会有好几个版本项,每个版本项都点击几次,总会有某个版本点击后出现“你将开启开发者模式”的提示(每个手机不一样 这个大家随缘)继续点击该版本开启开发者模式,然后退出并重新进入设置页面。此时就能在系统菜单下找到开发者选项或开发人员选项了,进入开发者选项页面。启用“开发者选项”和“USB调试”两处开关,允许手机通过USB接口安装调试应用
4:将连接的手机设为文件传输模式,并允许计算机进行USB调试
手机通过USB数据线连接电脑后,下面要选中传输文件的选项,因为充电模式不支持调试App
选完之后弹出第二个窗口,要勾选始终允许使用
5:手机要能正常使用
锁屏状态下 Android Studio向手机安装App的行为可能会被拦截,所以要保证手机处于解锁状态 才能顺利通过电脑安装App到手机上
有的手机还要求插入SIM卡才能调试App,还有的手机要求登录会员等等,总之遇到问题可以多上网搜搜,在评论区留言大家一起解决
App的开发语言
1:Java
Java是Android开发的主要编程语言,创建新项目时语言一般选择Java
2:Kotlin
它时谷歌官方力推的一种编程语言,它与Java同样基于JVM且完全兼容Java语言,一旦创建新项目时语言选择Kotlin,项目就会自动加载它的插件
3:C/C++
设计图像与音视频处理等复杂运算的场合,Java等解释型语言的性能瓶颈就暴露出来了,所以借助于JNI(Java Native Interface java原生接口)技术允许Java代码调用C/C++编写的程序。
4:XML
全程为可扩展标记语言,是一种标记语言,类似于HTML
5:App连接的数据库
App上是无法连接MYSQL Oracle等企业级的数据库的,Android内置了专门的数据库名为SQLite,它遵循关系数据库的设计理念,语法类似于Mysql,但是SQLite无须单独安装,因为它已经内嵌到应用进程当中,所以App无须配置连接信息。
App的工程结构
1:app模块
(1):manifests子目录
下面只有一个XML文件 即AndroidManifest.xml它是App的运行配置文件
(2):java子目录
下面有三个包,第一个包存放当前模块的Java源代码,后面两个包存放测试用的Java代码
(3):res子目录
存放当前模块的资源文件
2:Gradle Scripts
下面主要是工程的编译配置文件
编译配置文件build.gradle
由于官方的谷歌仓库位于国外,下载速度相对较慢,因此可以在repositories节点添加阿里云的仓库地址,加快下载速度 代码如下
buildscript{ repositories{ maven{url 'https://maven.aliyun.com/repository/jcenter'} maven{url 'https://maven.aliyun.com/repository/google'} maven{url 'https://maven.aliyun.com/repository/gradle-plugin'} maven{url 'https://maven.aliyun.com/repository/public'} google() mavenCentral() } dependencies{ classpath'com.android.tools.build:gradle:4.1.0' } }
模块级别的build.gradle对应于具体模块 下面给出注释,方便大家理解每个参数的用途
apply plugin: 'com.android.application' android { // 指定编译用的SDK版本号。比如30表示使用Android 11.0编译 compileSdkVersion 30 // 指定编译工具的版本号。这里的头两位数字必须与compileSdkVersion保持一致,具体的版本号可在sdk安装目录的“sdk\build-tools”下找到 buildToolsVersion "30.0.2" defaultConfig { // 指定该模块的应用编号,也就是App的包名 applicationId "com.example.chapter02" // 指定App适合运行的最小SDK版本号。比如19表示至少要在Android 4.4上运行 minSdkVersion 19 // 指定目标设备的SDK版本号。表示App最希望在哪个版本的Android上运行 targetSdkVersion 30 // 指定App的应用版本号 versionCode 1 // 指定App的应用版本名称 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } // 指定App编译的依赖信息 dependencies { // 指定引用jar包的路径 implementation fileTree(dir: 'libs', include: ['*.jar']) // 指定编译Android的高版本支持库。如AppCompatActivity必须指定编译appcompat库 //appcompat库各版本见 https://mvnrepository.com/artifact/androidx.appcompat/appcompat implementation 'androidx.appcompat:appcompat:1.2.0' // 指定单元测试编译用的junit版本号 testImplementation 'junit:junit:4.13' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }
运行配置文件AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MyApplication" tools:targetApi="31"> <activity android:name=".Main2Activity"> </activity> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.lib_name" android:value="" /> </activity> </application> </manifest>
部分属性说明如下
android:allowBackup 是否允许备份
android:icon 指定App在手机屏幕上显示的图标
android:label 指定App在手机屏幕上显示的名称
android:roundIcon:指定App的圆角图标
android:supportsRtl 是否支持阿拉伯语这种从右往左的语言
android:theme 指定App的显示风格
运行效果如下 "Hello World"