大家好,今天来介绍gradle详细教程的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
如何使用Android Studio 开发Gradle插件
插件类型
Gradle的插件一般有这么几种:
一种是直接在项目中的gradle文件里编写,这种方式的缺点是无法复用插件代码,在其他项目中还得复制一遍代码(或者说说复制一遍文件)
另一种是在独立的项目里编写插件,然后发布到中央仓库,之后直接引用就可以了,优点就是可复用。就和上面的Nuwa和Small一样。
Gradle相关语法
本篇文章不会详细说明Gradle相关的语法,如果要学习gradle相关的东西,请查看Gradle for Android
Gradle插件开发
Gradle插件是使用Groovy进行开发的,而Groovy其实是可以兼容Java的。Android Studio其实除了开发Android App外,完全可以胜任开发Gradle插件这一工作,下面来讲讲具体如何开发。
首先,新建一个Android项目。
之后,新建一个Android Module项目,类型选择Android Library。
将新建的Module中除了build.gradle文件外的其余文件全都删除,然后删除build.gradle文件中的所有内容。
在新建的module中新建文件夹src,接着在src文件目录下新建main文件夹,在脊孙main目录下新建groovy目录,亏亮这时候groovy文件夹会被Android识别为groovy源码目录。除了在main目销野宽录下新建groovy目录外,你还要在main目录下新建resources目录,同理resources目录会被自动识别为资源文件夹。在groovy目录下新建项目包名,就像Java包名那样。resources目录下新建文件夹META-INF,META-INF文件夹下新建gradle-plugins文件夹。这样,就完成了gradle 插件的项目的整体搭建,之后就是小细节了。目前,项目的结构是这样的。
http://blog.csdn.net/sbsujjbcy/article/details/50782830
gradle 配置 nexus repository
1.mac :
1).解压陵宽大文件进入bin/
2). ./nexus start 可以直接运行,注意有个点
2.windows
1).进入nexus目录,在bin/jsw 下找到nexus.exe
2).nexus.exe / install安装成系统服务
3).nexus.exe / start直接运行
4).nexus.exe / stop停止
5).nexus.exe / uninstall卸载
3.ubuntu
http://www.jianshu.com/p/9740778b154f
1).浏览器中http://127.0.0.1:8081/ 默认网址可以进入管理界面
2).内置账户 admin admin123
3)点击左上螺丝,进入 设置界面,默认内置了一些库
4).点击 create repository
普及一下这几种类型的区别:
5).配置仓库
名称可以修改,其他的配置没有具体了解
6)点击create repository之后就创建成功了,会自动跳转到repository列表界面,点击条目的copy按钮,就可以获取仓库路径了
不详细说明 maven_push.gradle
apply plugin:’maven’
apply plugin:’signing’
configurations {
deployerJars
}
repositories {
mavenCentral()
}
// 判断版本尺竖是Release or Snapshots
def isRelease() {
return!VERSION.contains(“SNAPSHOT”);
}
// 获取仓库url
def getRepositoryUrl() {
returnisRelease() ? RELEASE_URL : SNAPSHOT_URL;
}
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment {
MavenDeployment deployment -> signing.signPom(deployment)
}
pom.version = VERSION
pom.artifactId = ARTIFACT_ID
pom.groupId = GROUP_ID
repository(url: getRepositoryUrl()) {
authentication(userName: NAME,password: PASSWORD)// maven授权信息
}
}
}
}
// 进行数字巧庆签名
signing {
// 当 发布版本 & 存在”uploadArchives”任务时,才执行
required { isRelease() && gradle.taskGraph.hasTask(“uploadArchives”) }
sign configurations.archives
}
在build.gradle 中引用maven_push.gradle
gradle.properties中配置账号与仓库链接
最后在task中,点击uploadArchives上传
项目的gradle中配置内部maven库路径
minecraft我的世界gradle构建总是失败求告诉详细教程。不要发网址要会的人。不会的
最近在项目中遇到一明银个不大,但是还蛮烦人的问题,在Maven的约定中,一个标准Java项目的代码结构如下:
project
–src
–main
–java
–resources
–test
–java
–resources
当‘gradle idea’构建intelliJ项目文件时,会自动帮忙设置好所有的Source Root,Test Source Root。但是,在我工作的部门中,我们希望可以把测试分为unit,intg2个类别,这样可以更加容易区分测试的目的,同时提供了Build Pipeline分别运行不同类别测试的能力。因此,我们部门内的标准Java项目结构如下:
project
–src
–main
–java
–resources
–test
–common
–java
–unit
–java
–resources
–intg
–java
–resources
有了这个目录结构之后我们剩下2个问题要解决:
1. 如何区分运行IntegrationTest和Unit Test
2. 如何保证‘gradle idea’以后,无需拍槐滑重新设置Test Source Root。因为gradle不具备识别新的代码结构的能力。
如何写一个Gradle Plugin
语言:
Java,Groovy,Scala都可,推荐用Groovy,毕竟Gradle本质上来说就是一个用Groovy写的DSL,使用Groovy可以更一致一点。
注入方式:
Gradle支持3种形式的定制Plugin注入:
1. 直接把Plugin源代码直接写在Build Script里面。
2. 把Pluigin源代码写到rootProjectDir/buildSrc/src/main/groovy目录下
3. 用一个单独的project来写Plugin源代码,然后以jar依赖的形式注袭腊入项目。
个人觉得,都想到要自己写一个Plugin了,那么一定是有多个项目公用这个Plugin了,否则的话,直接把Plugin的代码直接写到脚本里就好了。因此,要定制Plugin,在我看来,一定是需要以一个单独的jar形式注入的。
写project-structure Plugin:
在Gradle中,写一个Plugin非常简单,首先,添加项目依赖,我使用Groovy来写插件,所以添加了localGroovy依赖。
Gradle代码
apply plugin: ‘groovy’
dependencies {
compile gradleApi()
compile localGroovy()
}
然后写Plugin的实现代码,实现代码只需要实现Plugin接口即可,在我的实现代码中,做了两件事,一是定制了项目的代码结构,二是添加了integrationTest Task,该Task只运行*IntegrationTest.class, 这样可以在Build Pipeline分阶段运行Unit Test和IntegrationTest。
Groovy代码
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.testing.Test
class ProjectStructurePlugin implements Plugin {
@Override
void apply(Project project) {
project.logger.info “Configuring Project Structure for $project.name”
project.configurations {
integrationTestCompile { extendsFrom testCompile }
integrationTestRuntime { extendsFrom integrationTestCompile, testRuntime }
}
configureSourceSets(project)
addIntegrationTestTask(project)
}
private void addIntegrationTestTask(Project project) {
Test intgTest = project.getTasks().create(“integrationTest”, Test.class);
intgTest.testClassesDir = project.sourceSets.integrationTest.output.classesDir
intgTest.includes = [“/*IntegrationTest.class”]
intgTest.inputs.dir ‘src’
intgTest.outputs.dir project.sourceSets.integrationTest.output.classesDir
project.check.dependsOn project.integrationTest
intgTest.dependsOn project.test
}
private void configureSourceSets(Project project) {
project.sourceSets {
test {
java {
srcDir ‘src/test/unit/java’
srcDir ‘src/test/common/java’
}
resources {
srcDir ‘src/test/unit/resources’
}
}
integrationTest {
java {
srcDir ‘src/test/intg/java’
srcDir ‘src/test/common/java’
}
resources {
srcDir ‘src/test/intg/resources’
}
compileClasspath = project.sourceSets.main.output + project.sourceSets.test.output + project.configurations.integrationTestCompile
runtimeClasspath = output + compileClasspath + project.configurations.integrationTestRuntime
}
}
}
}
接着,在项目的src/main/resources/META-INF/gradle-plugins目录下,创建一个文件:.properties,在该文件中指定Plugin的实现类:
Java代码
implementation-class=com.xianlinbox.plugins.ProjectStructurePlugin
在项目中使用该Plugin
首先,需要在build.gradle脚本中引入该Plugin的jar包依赖,可以是以文件的形式,当然个人更推荐的是把jar包发布到Maven库中,以Maven依赖的形式的注入,本例中使用的是本地文件依赖:
Groovy代码
buildscript {
dependencies {
classpath fileTree(dir: ‘libs’, include: ‘*.jar’)
}
}
然后,注入编写的插件,注意,该插件必须和java plugin一起使用,因为其中使用到SourceSets属性是从该插件中引入进来的:
Groovy代码
apply plugin: ‘java’
apply plugin: ‘project-structure’
有了这个插件之后,就可以通过‘gradle test’和‘gradle integrationtTest’区别运行UnitTest和IntrgrationTest了。
最后,解决自动设置Test Source Root的问题,只需要在build.gradle为ideaModule Task增加识别Test Source Root的能力即可:
Groovy代码
apply plugin: ‘idea’
…
idea {
module {
testSourceDirs += file(‘src/test/intg/java’)
testSourceDirs += file(‘src/test/intg/resources’)
}
}
当然,我们也可以把它写到Plugin中去,在设置为Project-Structrue之后:
Groovy代码
……
compileClasspath = project.sourceSets.main.output + project.sourceSets.test.output + project.configurations.integrationTestCompile
runtimeClasspath = output + compileClasspath + project.configurations.integrationTestRuntime
project.idea {
module {
testSourceDirs = testSourceDirs + new File(‘src/test/intg/java’) + new File(‘src/test/intg/resources’)
}
}
1、安装
Gradle安装和Maven一样方便,只需要,下载(http://www.gradle.org/downloads )==》解压==》配置环境变量(GRADLE_HOME & PATH),配置好环境变量之后记得使用 source命令使新的环境变量生效。配置成功之后,可以在命令行通过 “gradle -v”验证是否安装成功。
2、Gradle编译Maven风格的java项目
首先,在项目根目录创建”build.gradle”文件,编译java项目需要使用gradle的java插件
Groovy代码
apply plugin: ‘java’
,因为要集成maven的功能,需要添加maven插件
Groovy代码
apply plugin: ‘maven'[
。
接着,配置项目的Repository,风格如下
Groovy代码
repositories{
mavenCentral();
}
,上面例子使用的是默认的maven的中央库,如果想用自己的本地库,可通过如下方式配置
Groovy代码
def localMavenRepo = ‘file://’ + new File(System.getProperty(‘user.home’), ‘.m2/repository’).absolutePath
repositories {
// Use local Maven repo location. We don’t need this if we only want to install
// an artifact, but we do need it if we want to use dependencies from the local
// repository.
mavenRepo urls: localMavenRepo
mavenCentral()
}
再然后,配置项目依赖的第三方库,配置模板如下:
Groovy代码
dependencies{
compile group: ”,name:”,version:”
}
,举个例子,假设项目依赖了4.10版本的junit,那么配置就是
Groovy代码
compile group: ‘junit’,name:’junit’,version:’4.10′
另外Depencies还可以按如下方式简写
Groovy代码
compile ‘::’
例子
Groovy代码
compile ‘junit:junit:4.10’
最后,如何把自己的项目发布到Repository中,
Groovy代码
uploadArchives {
repositories {
mavenDeployer {
repository(url: “file://localhost/tmp/myRepo/”)
}
}
AndroidStudio中导入module(超详细)
1.依次点击File–>new–>Import Module,如下图:
2.在弹出窗口中选中知厅橘需要导入的第三方资源中的library文件夹,并点击ok:
3.在接下来的窗口将Module name修改为与Module相关的名称,并依次点击next–>finish:
4.此时会跳出错误提示(不一定跟搭团我的一样):
我们双击导入Module文件夹下的build.gradle文件:
同时打开本项目下的build.gradle,将第一段复制到导入Module中的build.gradle:
再将下面内容中的版本号改为app下的build.gradle中的相应版本号:
5.点击sync按钮:
点击下面弹出的错误提示,将过时的FloatMath方法改为Math并强制转型(所有提示错误的地方都是这么改)
改为:
再次点击sync按钮
6.导入Module如果变成和项目一样的颜色就证明导入成功伏敬了:
android studio怎样导入第三方库 步骤
Android Studio导入第三方库的方法我个人知晓的有三种:
一、Gradle抓取
二、libs导入
三、源码导入
一、弯桥Gradle抓取
-
Gradle抓取的方法最为简单,只需在Project->app文件夹下的build.gradle文件中添加依赖:
-
build.gradle文件夹所在位置
-
在builde.gradle文件中制定位置添加代码
compile ‘cn.finalteam:galleryfinal:1.4.8.7’
然后同步一下工程即可。
二、libs导入
-
将从网上下载对应的第三方库的埋腔猛jar包放入Project->app文件夹下的libs文件夹:
-
libs文件夹所在位置
-
然后在单击jar包右键,选择“Add as library…”可实现导入;或者在我们上述的build.gradle文件中添加依赖:
ompile files(‘libs/galleryfinal.jar’)
三、源码导入
-
选择Android Studio菜单栏File->New->import Module…,弹出窗口选择Module的路径:
-
找到下载好的第三方库,找到其中用的Module:
-
选择galleryfinal,点击OK。
-
同步一下工程,会出现这样的报错信息:
-
点击“Open File”,找到错误的地方:
-
导入库的build.gradle位置
-
将“project_version”修改为版本名称,如”1.0″:
-
再次同步工程,又会出现报错信息:
-
原因是找不到bintray.gradle文件圆银,查找了以下网上的解决方法是删除或注释掉第三方库的build.gradle文件中的:apply from: “../bintray.gradle”
-
然后我们继续同步工程,会发现Android Studio一直停留在:
-
这是因为第三方库需要用到相应的jar文件或gradle文件或arr文件,如果觉得这个过程太慢,可以考虑以下方法:
翻墙
手动下载相应文件,参考:听说你Android Studio更新Gradle很慢
放弃治疗,等待下载完毕