- 在第一次安装Android studio 时遇到的问题
在创建项目时出现了SDK Missming,可能是一直在next,没给出时间联网下载更新
解决办法:
的解决方案,但是没有作用,结果如下:
后将软件进行了卸载,卸载流程参考博主:
https://blog.csdn.net/qq_40364358/article/details/85223081
重新安装成功后;
创建了第一个项目HelloWord,语言设计kotlin
问题一:
解决办法是: file –setting - tools - server Certificates 中Accept non-trusted certificates
问题二:
解决办法:
最终的解决方案是:删除生成的配置文件
Idea 在关闭时不会删除配置文件,因为在下载外部的信息(刚刚访问的是谷歌),所以使用了proxy,现在使用各种资源是在公司的库中进行访问下载,虽然是已经不再使用proxy,但是Idea在关闭时不会删除配置文件,所以在使用时,还是访问配置文件,配置文件中写了账号密码,所以还是使用proxy访问google。
将build.gradle中的buildscript中的仓库信息改为自己公司内部使用的。
问题三:无法创建模拟器,没有可使用操作系统版本,因为没有系统权限,需要申请后才可以使用USB接口,
现在的可使用如下:
申请了权限后:
运行结果:
因为申请了权限,使用了USB接口,使用真机进行测试,图如下:
2.HelloWord Demo分析
对于这个项目目录来说,是project结构模式的,
前两个是我们不需要进行更改的,是Android Studio自动生成的文件。
App这个目录中,就是我们主要开发所在的目录,项目中的代码、资源都在这里。Gradle中包含gradle wapper【这个是做什么用的?】的配置文件,使用gradle wapper不再需要将gradle下载好,会自动根据本地的缓存情况决定是否要联网下载【这里我是因为使用的公司的库,所以不需要联网下载,有公司的镜像库】,Android Studio默认使用的是gradle wapper,如果想要使用的是离线的,可以进行更改,具体更改可以查找一下。
.gitignore 是将指定的文件或者是目录排除在版本控制之外【为什么是控制在版本之外,有什么作用?】
.build.gradle 是全局gradle的构建脚本,一般不需要更改【这个构建脚本有什么作用?】
Gradle.properties 是全局gradle的配置文件,这里配置将会影响项目中的gradle编译脚本。
Gradlew 和gradlew.bat 这里两个文件是为了能在命令行中执行gradle命令。
Local.properties 是SDK的路径信息,内容一般是自动生成的,如果说你的路径发生了更改,则就在这里更改内容。
Setting.gradle 是指明了这个项目引入了哪些模块,通常是模块的引入是自动完成的。【什么是引入模块,是指的是一个项目可能是不同人开发不同模块,然后放在一起吗?】
这是我们使用的,
libs就是放我们引入的第三方jar包,如果需要某一个就添加进来,
AndroidTest 是写App的测试用例,可以在这里编写一些自动化测试。
Main-Java就是编写代码,创建会自动生成一个MainActivity.kt文件。
Main-res就是放使用的各种资源
Test使用来编写UNIT测试 用例的。
guard-ruels.pro是混淆规则,就是说为了保护项目,然后使用混淆功能保护。
3.理解代码
所有编写的Activity都要在xml中进行配置,不然访问不了,
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
中间的两个是说明这个是入口的Activity,是从这个Activity进入的。
Acvtivity是门面,所有App上能看到的都是在Activity.kt中进行编写的,所以我的理解是类似于前端的页面。只不过是用kotlin进行编写的。
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这一部分是Activity的内容,mainActivity继承AppCompatActivity,AppCompatActivity继承Activity,Activity是基类,所有自定义的Activity都必须继承Activity或者它的子类,才能拥有Activity的特性。AppCompatActivity是一个向下兼容的Activity【有什么具体的啥作用?】
Oncreate()方法是任何一个Activity创建时必须要执行的方法,而且Android是要求逻辑和视图分离的,所以并不在Activity中进行界面的编写,而是在activity_main进行界面的编写,然后通过setContentView将其引进来。
而activity_main是在res中的layout中。