Android&gradle配置(以小米便签为例)
写在最前
以下所涉及到的某些部分需要翻越中国长城防火墙,请确保你有此能力,本文作者不提供相关技术支持。且本文所有涉及境外网站的图片均来自网络,本人只负责讲解。
Android studio安装及配置
安装
Download Android Studio & App Tools - Android Developers (google.cn)
访问IDE官网,点击下载。
有可能运行安装程序后会出现资源管理器假死,是因为使用了smart screen(也许),不过无论如何不用担心,等一会就好了。开始安装。
这里改一下你的安装路径,默认会是C盘。如果你不分区,那当我没说,如果你分区但是也什么都装C盘,那也当我没说。
安装完毕后,如果是第一次安装,会让你选择配置文件,无所谓,无视。
这里看你自己,你想给谷歌发使用数据就发,不想就不发。不发其实也行,不影响结果,隐私早都泄露没了。但是仍然推荐选择不发送。至此安装完毕。
配置
此时IDE会时不时弹出这样的对话框,意思是访问不到安卓SDK的add-on列表,需要配代理。但是我试了试,目前网上的代理方法都没有,最后结果还是这样,所以你不需要管,直接关闭就行。再弹就再关。
来到这个关键步骤,不要选standard,这样会把SDK给你装在默认的C盘。选择下方的custom,进行自定义安装。
选一个喜欢的UI,无所谓,和Jetbrains家的IDE是一样的,可以在plugin market自己找喜欢的
这步有几个注意点:
- 首先在下方更改你的SDK安装位置,选一个你喜欢的地方,不要和IDE安在一个文件夹里
- 其次不要让路径含有中文或空格等特殊字符。并且路径尽可能保持较短
在这里上面有几个可选项,可能会遇到点击但是无效的情况,可以尝试先关闭整个IDE重启电脑。并检查路径。但是默认的就可以,没关系。所以这步看自己喜好即可。
之后确认设定,开始进行SDK的下载及安装。完成后点击Finish即可。至此IDE配置结束。
Gradle配置
Gradle介绍
你如果写JVM系语言,大概率就知道Maven,不知道也无所谓,不影响你完成配置,但是你理解就可能慢一点。Gradle也是一个构建自动化工具,但是比Maven在国外的流行更多一点,国内流行Maven多一些。二者是兼容的。所以如果你配过maven,那gradle就很好配。
下载
接下来的内容就需要注意了,如果不详细了解有关的内容,很容易踩坑,不像IDE装起来是傻瓜式的
Gradle | Releases
首先访问上述网站,下载gradle发行版。本文以7.6.1版本为例。不建议低于此版本
点击二进制文件下载,下载gradle到本地,并且解压出来。
要的是这样的文件夹,点进去就是这些文件,不是直接解压出来的那种嵌套式的。
将解压出来的gradle文件夹放到你想要的分区,之后配环境变量。
在你的用户变量也好,系统变量也好,里面添加一条如上图所示的变量。变量值填写你本机的gradle目录。
之后在你的Path环境变量中添加这样一条记录。这样就配置完毕了。
打开你的powershell或者是cmd,输入上述指令,如果出现这样的内容,那么就是安装完毕了。
下面进行换源
找到如下目录:
在目录中创建名为init.gradle
的文件,文件内容为:
allprojects {
repositories {
maven {url 'file:///F:/gradleRepository'} //此处请修改为你自己的本地仓库路径,没有就新建一个文件夹充当gradle仓库
mavenLocal()
maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
mavenCentral()
}
buildscript {
repositories {
maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
}
}
}
简单解释一下。优先级以此排列如下:本地maven仓库->阿里镜像站->Bstek镜像站->maven官方站
这里如果你是从网上找的配置文件,会出现一个安全性问题,因为大部分Bstek镜像站给的URL都是http协议,会提示你不安全。改为https
完成上述步骤后,gradle本地环境就配置完成了。下面把gradle绑在IDE里。
IDE整合Gradle
首先随便开个项目,就开小米便签即可。目前不是为了导入工程,是为了配Gradle。
点击菜单栏中的File,找到设置。
按图中找到Gradle菜单项。这里要改两个点或者三个点。
取决于你本机的JDK版本。我猜大部分人都得改三个点。
首先讲怎么看本机的JDK版本,还是进入你的CMD或者PS
输入上述指令,如果你的机子提示虚拟机发生致命错误,那你就换java --version
即可
例如上图中,我的机子目前系统变量配的JDK是11版本,但这不代表你的机子上就只有11版本。
如果你的提示版本是1.8开头,那你首先就要更换系统变量的JDK版本。否则无法下载适合的安卓插件。如何更改看下面部分,如果你不是1.9,而是11及以上,那么就跳过下面的更换版本步骤。
更换JDK版本及坑
更改JDK版本可以利用IDEA进行,不是本文主要内容,不再赘述。提一点不容易解决的坑,如果你的机子上利用Java Update更新过JDK版本,那大概率PATH变量中Oracle的路径会优先级高于你自己本机配置的%JAVA_HOME%路径
,就会导致你输入Java -version
后还是你更换之前的JDK版本。
也就是说你需要保证蓝框(如果有的话)中的内容要排在红框的下面即可。
无需更换JDK版本
- 第一点,你需要更换图中圈1位置所表示的本地gradle仓库路径,也就是你之前再配置
init.gradle
时,文件内容中所写到的repository路径。 - 第二点,你需要更换图中圈2位置所表示的使用gradle方式,因为我们已经自己配置了一个好的gradle。所以我们更改为自己的gradle路径。
- 第三点,将图中圈3位置的Gradle JDK版本修改为11及以上,推荐改为11,因为其他版本没有实验过是否适配本文方法。
这里再次解释一下为何要这样做。高等院校大概率以JDK8为教学版本,这是正确的,第一考虑到学生大部分无基础,采用目前最早的LTS版本8,第二老师的领域百分之九十九不会是什么需要深学Java的领域,采用8就避免了需要学习新版本中的新特性这一要求。
对于我们来说,接下来需要安装的Android插件已经完全不同于小米便签早期版本开发时的要求,现在的插件最低需要JDK11中的Runtime组件才可以运行。
完成上述步骤后,IDE中的gradle环境就配置完毕了。接下来开始小米便签的导入。
小米便签导入
小米便签开源代码下载:
访问github和访问芝士荟是一样的,自己选择一个合适的就行。这里以更为大众的芝士荟为例:
https://codeload.github.com/MiCode/Notes/zip/master
访问上述网址,将代码下载到本地。
代码结构如上,只是没有.idea文件夹,没关系,待会用IDE打开就有了。
找到如上图所示的导入工程,点开。
找到你机器上自己的小米便签位置,导入工程。因为如今我们能下载到的小米便签是很老的版本,那时候开发IDE是eclipse,eclipse的结构和IDEA还是有一定区别,但是幸好IDEA支持导入eclipse开发的工程。所以我们需要导入。
导入工程后,就要开始解决很多问题了。接下来娓娓道来。
安卓虚拟机配置
首先在右上角找到虚拟机管理,在打开的右侧菜单中创建一个新的设备。
选择一个左侧的Phone,然后在右侧选择一个你喜欢的设备,这个模拟的就是实际的手机型号,例如谷歌的Pixel。你可以选我选的Pixel4,也可以选一个自己喜欢的,这都无所谓,因为不需要实际开发。但是我推荐你选一个没有Play Store的设备。因为对Play Store的支持是需要高版本SDK的,而高版本的SDK就更加脱离小米便签早期开发的SDK版本,隐含的风险就更多。(但我选择了一个支持的,以免有些人选错也能解决问题)
当选择虚拟机后,等待下载完毕后就可以了。
项目中Gradle配置
闲聊
如果你会maven,那还是那句话,很容易理解,这样是最好的了。
项目中Gradle配置
在左侧项目结构中找到build.gradle,你也看到了,有两个build.gradle,我们需要的是后面带(:app)
的gradle文件,另外一个本文用不到。
apply plugin: 'com.android.application'
android {
compileSdkVersion 33
buildToolsVersion "33.0.2"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "net.micode.notes"
targetSdkVersion 33
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
implementation group: 'org.apache.httpcomponents', name: 'httpcomponents-client', version: '4.5.14'
implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: '4.4.16'
// implementation group: 'org.apache.httpcomponents.client5', name: 'httpclient5', version: '5.2.1'
}
你的这个文件肯定不是上面这样的,也不用纠结每个部分都是什么含义,直接照着腾就行了。省去很多麻烦。但是我还是给自己记一下:
dependencies和maven中一样,这里引三个进来是因为芝士荟上的清华镜像站已经不行了,所以从maven repository上拉了。
useLibrary是因为小米便签代码太老了,关于网络连接的函数部分已经deprecated了,所以要加这句话防止报错。
然后是另外一个build.gradle文件,这个文件就改两个地方。就是图中两个repositories的地方。改成上图所示就行了。
至此项目中的gradle就配置完成了。
点击右上角的小锤子构建一下,如果出现successfully就说明成功了。
这里要注意classpath最后的版本号,也就是安卓gradle插件的版本,你注意,这个不是gradle的版本,是安卓gradle插件的版本。举个最简单例子,你现在要装CUDA和CUDNN,那你就去找你的显卡对应的CUDA版本,就是这个例子。
修改因函数废弃而严重无法使用的showNotification方法
如果你搞安卓开发,最后详细学一学。如果不用,那就很简单了,就跟学框架一样毫无技术含量,直接读文档,然后把废弃的改成新的即可。
这里提供修改完毕的,直接一键换了源码里的就行。怎么在源码里定位方法位置就不教了,这个是IDE基础使用。
把上文的方法换成下文
private void showNotification(int tickerId, String content) {
PendingIntent pendingIntent;
if (tickerId != R.string.ticker_success) {
pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,
NotesPreferenceActivity.class), 0);
} else {
pendingIntent = PendingIntent.getActivity(mContext, 0, new Intent(mContext,
NotesListActivity.class), 0);
}
Notification.Builder builder = new Notification.Builder(mContext)
.setAutoCancel(true)
.setContentTitle(mContext.getString(R.string.app_name))
.setContentText(content)
.setContentIntent(pendingIntent)
.setWhen(System.currentTimeMillis())
.setOngoing(true);
Notification notification=builder.getNotification();
mNotifiManager.notify(GTASK_SYNC_NOTIFICATION_ID, notification);
}