为了学业以及毕设内容,重新捡起了Android开发。
安装AndroidStudio与SDKTools倒是没啥问题,只要网络顺畅一切ok。
但最麻烦的问题来了,就是每次都会遇上的Gradle Sync问题,迫不得已学了一遍Gradle(虽然说之前搞的时候也没正儿八经学过)。
Gradle是基于Apache Ant(2000年)、Apache Maven(2004年)产生的一款高效易用的项目管理工具,弥补了Ant和Maven的不足。其使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置(但个人感觉过于简化了反而有些地方理不清楚),以面向Java为主,还支持Kotlin、Scala、Groovy、C/C++、JavaScript语言。
这里通过IDEA构建一个Gradle+Java结构的项目来分析
在Preference- Build,Execution,Deployment - Gradle
可以查看项目的Gradle配置
项目结构中的
plugins {id 'java'
}/*** 项目路径*/
group ample'
/*** 项目版本*/
version '1.0-SNAPSHOT'
/*** 指定所使用的仓库,默认的mavenCentral()表示使用中央仓库,此刻项目中的所有jar包都会从中央仓库下载到本地指定目录* mavenLocal()表示使用本地仓库*/
repositories {//Maven本地仓库MavenLocal()// Maven中央仓库mavenCentral()
}/*** 每个jar包的坐标都位于dependencies属性内* 每个jar包包含三个属性* group:name:version* 长格式:group:'',name:'',version:''* 短格式: 'group:name:version'* 可以从Maven中央仓库找到所需包的写法*/
dependencies {testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}test {useJUnitPlatform()
}
Maven中央仓库:Maven Repository: Search/Browse/Explore
在父工程中,存在一个
rootProject.name = 'GradleDemo'
include 'GradleChild1'
include 'GradleChild2'
若要由父工程的gradle给子工程提供依赖,需要在父工程的allprojects{}
将所有内容包起来
allprojects {apply plugin: 'java' // 这里写法不太一样group ample'version '1.0-SNAPSHOT'repositories {mavenCentral()}dependencies {testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'}test {useJUnitPlatform()}
}
若子工程A还需要引入子工程B,需要在子工程的dependencies()
//子工程Child2引入Child1
dependencies {implementation project(":GradleChild1")
}
一般Gradle有一个自己的本地仓库,但大概率自己本地也会有一个Maven仓库。在一些情况下我们不希望Gradle再下一遍
在Preference- Build,Execution,Deployment - Gradle
中,修改Use Gradle from
为Specified location
,并指定本地的Maven仓库,一般为Maven下的repository
文件夹。
同时添加mavenLocal()
先从本地寻找依赖。
但我测试完有点后悔,因为Gradle和Maven的仓库结构是不太一样的,两个混在一起后,会在当前使用的仓库中补充上以上文件,对于有强迫症的我来说就好像想吃白米饭但老爸总喜欢在里面加些红枣红薯balabala的一起煮。
对于这种从头开始的环境搭建问题,建议还是老老实实跑出一个HelloWorld
,往往能避免很多直接上手项目的坑。
重新捡起Android是为了跑起师兄的祖传代码,虽说在工程的readme中已经说明了可以先断网,将
gradle-3.3
版本导入本地,重新启动后以本地方式启动,最后就可以连上网了。但由于gradle早期(2019年3月份前)没有在国内设置cdn,所以当时下载贼慢,受网络环境影响贼大。
虽说我刚开始学Android是在19年,但当时还是觉得很慢,而且实验室网络环境一直不行,每次同步都得在回寝室才能完成
// adle
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {jcenter()google() //出问题所在}dependencies {classpath 'ls.build:gradle:3.3.1'// NOTE: Do not place your application dependencies here; they belong// in the individual adle files}
}
allprojects {repositories {jcenter()maven { url "" }google()}
}
task clean(type: Delete) {delete rootProject.buildDir
}
出现这种原因一种可能性是使用的Gradle版本过低,可以通过两种方法修改
gradle-wapper.properties
中将distributionUrl
一项改为更高版本File - Project Structure - Project
中将Gradle Version
修改为更高版本修改完成后进行同步,有可能会提示如Minimum supported Gradle version is 4.10.1. Current version is 4.10.
,继续修改更高的就可以了。
到2022年重新捡起Android,还是能明显感受到Gradle同步的速度快得多了。但仍有一些包会卡很久。
本文发布于:2024-02-02 11:51:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170684586243607.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |