目录
由于工作原因,需要将工程传递给一些新人小朋友,交互过程中,发现有几个典型的问题值得记录分享一下,以资来者。
Androdi Studio 导入工程步骤
AS导入工程常用的有两种途径一种是通过本地工程导入,还有一种是从远端的版本管理仓拉取工程。
本地工程导入
本地工程导入比较简单,点击菜单File
,然后找到Open...
点击,便可以得到下图。
在目录栏目输入你本地工程所在地址,便可以看到你的本地工程名,而且还是一个Android机器人的图标,选中后点击OK
即可完成本地工程导入。
需要说明的是,这种导入方式的前提是本地工程也是有Android Studio IDE 开发的,如果不是的话,需要使用File
-New
-Import project...
进行导入。
新版的AS会帮你自动替换一些本地SDK的路径什么的,基本上一路点Yes就可以了。
远端库导入
远端库拉取工程的方法也不复杂,只是在导入前我们要进行一下用户配置。
首先通过File
-Settings
进入IDE设置页找到Version Control
里的对应仓平台,我由于没有科学上网,所以选择了Gitee平台,如果’Settings’中没有这个选项,从上面Plugins里面下一个插件即可。
通过小加号增加自己在该平台的用户,然后就可以直接从该平台拉取代码了。
然后,通过File
-New
-Project from Version Control...
单击导入,如下图。
将我们需要的需要的远程仓地址填入URL中(如:git@gitee.com:kiba03/DeveloperLab.git),再点击Clone按钮即可完成导入。
检查点&修改方案
local.properties
导入了新的工程到AS中后,新版的IDE会自动帮你替换相关的SDK地址等。保险起见,还是检查一下为好。
local.properites
是工程的本地配置文件,一般会存有SDK的地址,其他的本地配置建议另建一个目录比较好。所以,外部导入的新工程可能这个地方还会是之前的设备的SDK地址,这块首先要改成自己的,如果不知道的话,本地新建一个工程,同样目录下找到local.properties复制过来即可。
## This file must *NOT* be checked into Version Control Systems, # as it contains information specific to your local configuration. # # Location of the SDK. This is only used by Gradle. # For customization when using a Version Control System, please read the # header note. #Mon Aug 30 23:04:19 CST 2021 sdk.dir=C\:\\Users\\kiba\\AppData\\Local\\Android\\Sdk
Gradle版本
gradle是一个类似maven的打包框架,对于Android初学者而言比较头疼,经常是被gradle版本对不上而导致工程导入失败。作为菜鸟,一口气解决gradle报出的所有疑难杂症,显然是不现实的,但起码要学会查看项目的gradle版本。
右键单击项目根目录,菜单中选择Open Module Settings
在Project栏目先我们可以看到,当前工程的gradle插件版本为4.1.1,gradle版本为6.5。
新导入的工程无法编译九成就是工程gradle版本不支持导致的。如果科学上网的话,可以通过ide自动帮你从官网下载,如果没有,则极有可能下载超时。这个时候就是通过这个版本号到百度查找对应的下载包,然后修改gradle-wrapper.properties
中的distributionUrl
字段为本地目录
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
Android版本
当导入成功了工程,并能启动编译并且安装到测试机了。你的导入工作基本上完成了90%,下面跑一下基本功能吧。有时候最后一步也无法顺利完成,APP在启动中crash了。。。
这个时候用logcat查看崩溃日志是最直接的方法。除了这个外,还可以考虑查看一下当前测试机Android版本和工程的Android版本是否匹配,有些时候Android版本的不匹配会导致接口调用失败,从而导致APP crash。
打开AndroidManifest.xml
文件,可以看到类似下列代码。
android { compileSdkVersion 30 buildToolsVersion "30.0.3" defaultConfig { applicationId "com.example.developerlab" minSdkVersion 28 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }
其中‘compileSdkVersion’表示编译Android SDK版本,minSdkVersion
表示APP运行要求的手机最低安卓版本,targetSdkVersion
表示目标手机Android版本。一般情况下,要想APP能够流畅的在手机上运行,手机Android版本一定要大于等于Android版本。
Android 10的版本号为29,Android 11为30,其他的版本号可以查阅Google官网
如果发现当前测设备Android版本低于工程需要,别纠结了立刻换测试机,因为即使你通过修改代码解决了一个api兼容问题,后面还可能有无数个api兼容问题等着你呢。尽可能避免这种劝退事件的发生。