Android-Studio配置运行小米便签
1.下载Android Studio
官网地址:Android Studio
安装教程:Android Studio 安装教程
默认下载即可,选定好SDK
的下载地址即可。
1.1配置 Gradle 地址(建议)
在下载之后,可以配置一下Gradle的地址,这样在后续import
项目时,出错后,方便修改。
在Settings -> Build -> Build Tools -> Gradle
中可以修改Gradle的仓库地址
2.项目 clone
小米便签项目仓库地址: 小米便签
git clone
或者直接直接下载压缩包都可
3. import 项目
此处不能新建项目,直接把文件放入Android Studio,会有你意想不到的报错~
使用import
的方式,通过Gradle
的方式编译整个项目。
在sync
的过程中,会有各种各样、莫名其妙的报错,部分报错的解决办法,见第5部分的报错解决
出现如下图所示即为,sync
成功
3.1 Gradle 项目
gradle是基于Apache Maven概念的项目自动化构建开源工具。他是使用一种基于groovy的 特定领域语言来声明项目配置,抛弃了基于XML
的各种繁琐配置。
gradle都是基于groovy的,但是由于其提供了一整套DSL,所以在开发gradle脚本时几乎脱离了groovy的感知。我们在这里将gradle当做一个独立的部署工具。
工作流程:
- 解析setting.gradle文件然后去遍历根目录,检查子项目是否满足规定。
- 解析每个子project的gradle,然后根据Task去构建项目之间的有向无环图。
- 直接执行,涉及到刷新下载依赖,以及build构建发布包等等。
4.创建虚拟机,运行项目
在sync
结束后,点击右上角的build
锤子按钮编译整个项目
出现如下图所示,即为编译成功
创建虚拟机,选择Device Manager
点击create device -> Pixel 2
选择好镜像,下载即可完成虚拟机的配置
运行项目即可看到小米便签
5.报错解决
5.1 Gradle xxxxx not found 或者 Connect time out
修改build.gradle:notes
(全局的配置文件),添加google()
用于加速下载,’classpath’修改为所需要的版本
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. |
修改 gradle-wrapper.properties
,distributionUrl
改为自己需要的版本,将-all
同意修改为-bin
1 | #Mon Nov 27 16:26:33 CST 2023 |
修改后,再次sync
,若仍然报错not found
,则去gradle下载,找到自己对应的版本,下载后,放入你上面配置的gradle地址下\gradle\wrapper\dists
下对应的gradle文件夹下面,将其中的其他文件删除,放入下载好的压缩包即可。
若再次报错,检查自己之前使用idea
破解版时,使用的脚本,这些脚本执行后,会生成带中文路径的环境变量,导致报错。执行uninstall
脚本文件,然后再次sync
,此时大概率是没有问题了。
5.2 版本不匹配
版本不匹配问题在报错信息提示中,有明确的指示
1.JDK版本与Gradle不匹配
按照需要的版本修改jdk或者gradle,详见gradle官方配置文档。(推荐修改JDK)
2.compileSdkVersion与targetSdkVersion版本不一致
设置为一致即可
1 | apply plugin: 'com.android.application' |
5.3 httpclient报错
此处报错问题是由于项目中缺少httpclient
依赖,去maven仓库下载jar
包,导入即可。
Files -> Project Structure -> Dependency
5.4 switch case中 R.id 报错
将普通Android
工程转成Library
工程后,常量发生变化
1 | //Library工程的R文件 |
由于Library工程的可以包含资源文件,编译会生成R文件,多个Library中可能出现id冲突的问题。为了解决这个问题谷歌将Library工程R文件才从静态常量变为非常量。
然而switch语句的case中 必须是常量,而此时的R.id.xxx为非常量,所以报错了。
修改switch语句为if else语句。Android studio中提供快速切换方法。如下:
选中“switch”,ALt+Enter同时选中,弹出对话框,选择“Replace ‘switch’ with ‘if’”
5.5 Cannot resolve method ‘setLatestEventInfo’ in ‘Notification’
原因:在低于API Level 11版本,也就是Android 2.3.3以下的系统中,setLatestEventInfo()函数是唯一的实现方法;而在高于API Level 11的版本中setLatestEventInfo()函数已经被弃用了,于是我们需要根据现有的Android版本进行相应地重写该函数
1 | private void showNotification(int tickerId, String content) { |
5.6 小米菜单栏无法显示
只需修改res/values/styles.xml
最后一部分如下即可。
1 | <style name="NoteActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid"> |