重拾Android

阅读: 评论:0

重拾Android

重拾Android

为了学业以及毕设内容,重新捡起了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语言。

Gradle文件分析

这里通过IDEA构建一个Gradle+Java结构的项目来分析

Preference- Build,Execution,Deployment - Gradle可以查看项目的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有一个自己的本地仓库,但大概率自己本地也会有一个Maven仓库。在一些情况下我们不希望Gradle再下一遍

Preference- Build,Execution,Deployment - Gradle中,修改Use Gradle fromSpecified location,并指定本地的Maven仓库,一般为Maven下的repository文件夹。

同时添加mavenLocal()先从本地寻找依赖。

但我测试完有点后悔,因为Gradle和Maven的仓库结构是不太一样的,两个混在一起后,会在当前使用的仓库中补充上以上文件,对于有强迫症的我来说就好像想吃白米饭但老爸总喜欢在里面加些红枣红薯balabala的一起煮。

Android+Gradle问题

对于这种从头开始的环境搭建问题,建议还是老老实实跑出一个HelloWorld,往往能避免很多直接上手项目的坑。

Could not find method google() for arguments [] on repository container.

重新捡起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版本过低,可以通过两种方法修改

  1. 方法一:在项目文件gradle-wapper.properties中将distributionUrl一项改为更高版本
  2. 方法二:在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小时内删除。

标签:重拾   Android
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23