Android&gradle配置(以小米便签为例)

写在最前

以下所涉及到的某些部分需要翻越中国长城防火墙,请确保你有此能力,本文作者不提供相关技术支持。且本文所有涉及境外网站的图片均来自网络,本人只负责讲解。

Android studio安装及配置

安装

Download Android Studio & App Tools - Android Developers (google.cn)
image.png
访问IDE官网,点击下载。
有可能运行安装程序后会出现资源管理器假死,是因为使用了smart screen(也许),不过无论如何不用担心,等一会就好了。开始安装。
image.png
image.png
这里改一下你的安装路径,默认会是C盘。如果你不分区,那当我没说,如果你分区但是也什么都装C盘,那也当我没说。
image.png
安装完毕后,如果是第一次安装,会让你选择配置文件,无所谓,无视。
image.png
这里看你自己,你想给谷歌发使用数据就发,不想就不发。不发其实也行,不影响结果,隐私早都泄露没了。但是仍然推荐选择不发送。至此安装完毕。

配置

image.png
此时IDE会时不时弹出这样的对话框,意思是访问不到安卓SDK的add-on列表,需要配代理。但是我试了试,目前网上的代理方法都没有,最后结果还是这样,所以你不需要管,直接关闭就行。再弹就再关。
image.png
来到这个关键步骤,不要选standard,这样会把SDK给你装在默认的C盘。选择下方的custom,进行自定义安装。
image.png
选一个喜欢的UI,无所谓,和Jetbrains家的IDE是一样的,可以在plugin market自己找喜欢的
image.png
这步有几个注意点:

  • 首先在下方更改你的SDK安装位置,选一个你喜欢的地方,不要和IDE安在一个文件夹里
  • 其次不要让路径含有中文或空格等特殊字符。并且路径尽可能保持较短
    在这里上面有几个可选项,可能会遇到点击但是无效的情况,可以尝试先关闭整个IDE重启电脑。并检查路径。但是默认的就可以,没关系。所以这步看自己喜好即可。
    image.png
    之后确认设定,开始进行SDK的下载及安装。完成后点击Finish即可。至此IDE配置结束。

Gradle配置

Gradle介绍

你如果写JVM系语言,大概率就知道Maven,不知道也无所谓,不影响你完成配置,但是你理解就可能慢一点。Gradle也是一个构建自动化工具,但是比Maven在国外的流行更多一点,国内流行Maven多一些。二者是兼容的。所以如果你配过maven,那gradle就很好配。

下载

接下来的内容就需要注意了,如果不详细了解有关的内容,很容易踩坑,不像IDE装起来是傻瓜式的
Gradle | Releases
首先访问上述网站,下载gradle发行版。本文以7.6.1版本为例。不建议低于此版本
image.png
点击二进制文件下载,下载gradle到本地,并且解压出来。
image.png
要的是这样的文件夹,点进去就是这些文件,不是直接解压出来的那种嵌套式的。
将解压出来的gradle文件夹放到你想要的分区,之后配环境变量。
image.png
在你的用户变量也好,系统变量也好,里面添加一条如上图所示的变量。变量值填写你本机的gradle目录。
image.png
之后在你的Path环境变量中添加这样一条记录。这样就配置完毕了。
image.png
打开你的powershell或者是cmd,输入上述指令,如果出现这样的内容,那么就是安装完毕了。
下面进行换源
找到如下目录:
image.png
在目录中创建名为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

image.png
首先随便开个项目,就开小米便签即可。目前不是为了导入工程,是为了配Gradle。
点击菜单栏中的File,找到设置。
image.png
按图中找到Gradle菜单项。这里要改两个点或者三个点。
取决于你本机的JDK版本。我猜大部分人都得改三个点。
首先讲怎么看本机的JDK版本,还是进入你的CMD或者PS
image.png
输入上述指令,如果你的机子提示虚拟机发生致命错误,那你就换java --version即可
例如上图中,我的机子目前系统变量配的JDK是11版本,但这不代表你的机子上就只有11版本。
如果你的提示版本是1.8开头,那你首先就要更换系统变量的JDK版本。否则无法下载适合的安卓插件。如何更改看下面部分,如果你不是1.9,而是11及以上,那么就跳过下面的更换版本步骤。

更换JDK版本及坑

更改JDK版本可以利用IDEA进行,不是本文主要内容,不再赘述。提一点不容易解决的坑,如果你的机子上利用Java Update更新过JDK版本,那大概率PATH变量中Oracle的路径会优先级高于你自己本机配置的%JAVA_HOME%路径,就会导致你输入Java -version后还是你更换之前的JDK版本。
image.png
也就是说你需要保证蓝框(如果有的话)中的内容要排在红框的下面即可。

无需更换JDK版本

image.png

  • 第一点,你需要更换图中圈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
访问上述网址,将代码下载到本地。
image.png
代码结构如上,只是没有.idea文件夹,没关系,待会用IDE打开就有了。
image.png
找到如上图所示的导入工程,点开。
image.png
找到你机器上自己的小米便签位置,导入工程。因为如今我们能下载到的小米便签是很老的版本,那时候开发IDE是eclipse,eclipse的结构和IDEA还是有一定区别,但是幸好IDEA支持导入eclipse开发的工程。所以我们需要导入。
导入工程后,就要开始解决很多问题了。接下来娓娓道来。

安卓虚拟机配置

image.png
首先在右上角找到虚拟机管理,在打开的右侧菜单中创建一个新的设备。
image.png
选择一个左侧的Phone,然后在右侧选择一个你喜欢的设备,这个模拟的就是实际的手机型号,例如谷歌的Pixel。你可以选我选的Pixel4,也可以选一个自己喜欢的,这都无所谓,因为不需要实际开发。但是我推荐你选一个没有Play Store的设备。因为对Play Store的支持是需要高版本SDK的,而高版本的SDK就更加脱离小米便签早期开发的SDK版本,隐含的风险就更多。(但我选择了一个支持的,以免有些人选错也能解决问题)
当选择虚拟机后,等待下载完毕后就可以了。

项目中Gradle配置

闲聊

如果你会maven,那还是那句话,很容易理解,这样是最好的了。

项目中Gradle配置

image.png
在左侧项目结构中找到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了,所以要加这句话防止报错。
image.png
然后是另外一个build.gradle文件,这个文件就改两个地方。就是图中两个repositories的地方。改成上图所示就行了。
至此项目中的gradle就配置完成了。
点击右上角的小锤子构建一下,如果出现successfully就说明成功了。
这里要注意classpath最后的版本号,也就是安卓gradle插件的版本,你注意,这个不是gradle的版本,是安卓gradle插件的版本。举个最简单例子,你现在要装CUDA和CUDNN,那你就去找你的显卡对应的CUDA版本,就是这个例子。
image.png

修改因函数废弃而严重无法使用的showNotification方法

如果你搞安卓开发,最后详细学一学。如果不用,那就很简单了,就跟学框架一样毫无技术含量,直接读文档,然后把废弃的改成新的即可。
这里提供修改完毕的,直接一键换了源码里的就行。怎么在源码里定位方法位置就不教了,这个是IDE基础使用。
image.png
把上文的方法换成下文

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);  
}
posted @ 2023-03-02 18:01  Appletree24  阅读(1507)  评论(3编辑  收藏  举报