❶ android gradle 怎麼用本地包
千鋒扣丁學堂Android開發為您解答:
------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------
Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision:
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013 JVM: 1.7.0_60 (Oracle Corporation 24.60-b09) OS:
Mac OS X 10.9.5 x86_64
2、接著執行 ./gradlew clean
執行這個命令會去下載Gradle的一些依賴,下載成功並編譯通過時會看到如下信息:
:app:clean UP-TO-DATE
:extras:ShimmerAndroid:clean UP-TO-DATE BUILD SUCCESSFUL
3、最後執行 ./gradlew build
這個命令會直接編譯並生成相應的apk文件,如果看到如下字樣就代表build成功了
BUILD SUCCESSFUL
Total time: 31.456 secs
緊接著在 9GAG/app/build/outputs/apk 目錄下會看到類似於app-debug-unaligned.apk, app-release-unsigned.apk等,看名字應該能理解意思,unaligned代表沒有進行zip優化的,unsigned代表沒有簽名的。然後就可以直接安裝apk查看運行效果了。
以上是我個人習慣的一種閱讀第三方源碼的習慣,關於上面提到的一些gradle命令大家應該還不理解,後面會一一進行說明的。
導入Android Studio
但是如果你還是想導入Android Studio的話,下面就來簡單介紹下導入Studio的方法以及一些注意事項。
1、選擇File->Import Project, 選擇本地9GAG項目的目錄
2、第一次依然會下載Gradle,其實自己在命令行已經下載過了,但是這次依然還要下載一次(依然要翻牆),可能是個bug,接下來的版本中可能會修復。
3、導入之後你需要注意以下幾個地方
每個Mole下的 build.gradle 下的buildToolsVersion,即9GAG/app/build.gradle 和 9GAG/extras/ShimmerAndroid/build.gradle , 可以打開 SDK Manager 查看本地你安裝的 SDK Build-tools, 如下圖,如果相應版本沒有安裝請先下載
項目根目錄下的 build.gradle 下gradle插件的版本,如 9GAG/build.gradle 的內容:
classpath 『com.android.tools.build:gradle:1.0.0』
Android Studio 1.0必須指定gradle插件1.0的版本
Gradle Wrapper的版本,在 9GAG/gradle/wrapper/gralde-wrapper.properties 文件里有如下內容:
#Thu Dec 18 16:02:24 CST 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
上述內容制定了gradle的版本使用2.2.1,在Studio中如果你手動改了gradle插件的版本會有提示要不要更新Gradle Wrapper的版本。
如果以上幾個地方確定版本是ok的,那麼導入Android Studio應該沒有問題,有些老的項目可能gradle版本比較老,仍然在使用一些老的語法,如果編譯還通不過參考Android Studio系列教程四–Gradle基礎更改成最新的語法。
Gradle常用命令
上面大家接觸了一些命令如 ./gradlew -v ./gradlew clean ./gradlew build, 這里注意是./gradlew, ./代表當前目錄,gradlew代表 gradle wrapper,意思是gradle的一層包裝,大家可以理解為在這個項目本地就封裝了gradle,即gradle wrapper, 在9GAG/gradle/wrapper/gralde-wrapper.properties文件中聲明了它指向的目錄和版本。只要下載成功即可用grdlew wrapper的命令代替全局的gradle命令。
理解了gradle wrapper的概念,下面一些常用命令也就容易理解了。
./gradlew -v 版本號
./gradlew clean 清除9GAG/app目錄下的build文件夾
./gradlew build 檢查依賴並編譯打包
這里注意的是 ./gradlew build 命令把debug、release環境的包都打出來,如果正式發布只需要打Release的包,該怎麼辦呢,下面介紹一個很有用的命令 **assemble**, 如
./gradlew assembleDebug 編譯並打Debug包
./gradlew assembleRelease 編譯並打Release的包
除此之外,assemble還可以和proctFlavors結合使用,具體在下一篇多渠道打包進一步解釋。
./gradlew installRelease Release模式打包並安裝
./gradlew uninstallRelease 卸載Release模式包
下一篇來介紹用Gradle進行方便的多渠道打包,以及項目中完整的Gradle配置。
❷ 如何使用gradle構建工具打包groovy腳本成jar文件
准備工作安裝 gradle, groovy。
要使用gradle的groovy plugin 來打包groovy 腳本,項目結構。
目錄 含義
src/main/java Java 代碼
src/main/resources Java需要的資源文件
src/main/groovy Groovy代碼,也可以包含Java代碼
src/test/java Java 測試代碼
src/test/resources 測試需要的資源文件
src/test/groovy Groovy測試需要的資源文件
src/sourceSet/java Java代碼源
src/sourceSet/resources 資源文件源
src/sourceSet/groovy Groovy代碼源
我們只需要編譯打包groovy腳本 所以只需要創建 src/main/groovy目錄結構。例子:
gradle_groovy_archive項目 結構是:
gradle_groovy_archive
創建helloWorld.groovy腳本,代碼如下:
package hello
println 'Gradle compile groovy'
創建Gradle構建文件:
apply plugin: 'groovy'
apply plugin: 'maven'
group = 'com.hello'
archiveBaseName = 'hello'
version = '0.1-SNAPSHOT'
defaultTasks 'clean', 'jar'
configurations {
deployerJars
}
repositories {
mavenCentral()
}
dependencies {
//使用本地groovy環境
groovy localGroovy()
//groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.6'
compile fileTree( dir: 'lib', include: ['*.jar'])
deployerJars 'org.apache.maven.wagon:wagon-webdav-jackrabbit:1.0-beta-7'
}
sourceSets {
main {
groovy {
srcDir 'src/main/groovy'
}
}
}
uploadArchives {
repositories.mavenDeployer {
uniqueVersion = false
configuration = configurations.deployerJars
repository(id : repositoryId, url : repositoryUrl) {
authentication (userName : 'deployment', password : 'deployment')
proxy()
}
}
}
創建構建文件屬性文件:
//根據不同情況修改
repositoryId=ND
repositoryUrl=ND
systemProp.http.proxyHost=ND
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=ND
systemProp.http.proxyPassword=ND
在命令行中 敲 gradle 運行,會自動運行 defaultTasks,clean 和 jar,會把 所有groovy下的腳本打成jar包。
❸ gradle.properties文件在哪
通常在項目的根目錄,在Android Studio 創建一個項目的時候,根目錄下會生成gradle.properties和local.properties文件。
properties的數據格式:
採用鍵值對的方式,寫法:key=value
(3)gradle腳本擴展閱讀
項目結構
1、app/build:app模塊編譯輸出的文件。
2、app/libs: 放置引用的類庫文件。
3、app/src: 放置應用的主要文件目錄。
4、app/src/androidTest:單元測試目錄。
5、app/src/main:主要的項目目錄和代碼。
6、app/src/main/assets:放置原生文件,裡面的文件會保留原有格式,文件的讀取需要通過流。
7、app/src/main/java:項目的源代碼。
8、build:系統生成的文件目錄。
9、gradle: wrapper的jar和配置文件所在的位置。
10、.gitattributes:用於設置文件的對比方式。
11、.gitignore: 忽略的文件或者目錄。
12、build.gradle:項目的gradle編譯文件。
13、gradle.properties: gradle相關的全局屬性設置。
14、gradlew: 編譯腳本,可以在命令行執行打包。
15、gradlew.bat:windows下的gradle wrapper可執行文件。
16、local.properties:配置SDK/NDK所在的路徑。
17、MyApplication.iml:保存該模塊的相關信息。
18、README.md:文本編輯器,記錄一些相關信息。
19、settings.gradle:設置相關的gradle腳本。
20、External Libraries:項目依賴的庫,編譯時自動下載。
❹ android gradle 都有哪些閉包
Gradle是可以用於Android開發的新一代的 Build System, 也是 Android Studio默認的build工具。 Gradle腳本是基於一種JVM語言 -- Groovy,再加上DSL(領域特定語言)組成的。 因為Groovy是JVM語言,所以可以使用大部分的Java語言庫。所謂DSL就是專門針對Android開發的插件,比如標准Gradle之外的一些新的方法(Method)、閉包(Closure)等。 由於Gradle的語法足夠簡潔,而且可以使用大部分的java包,當之無愧地成為新一代 Build System。 使用Android Studio新建一個工程後,默認會生成兩個build.gralde文件,一個位於工程根目錄,一個位於app目錄下。還有另外一個文件 --settings.gradle。 根目錄下的腳本文件是針對mole的全局配置,它的作用閾所包含的所有 mole 是通過settings.gradle來配置。 app文件夾就是一個mole,如果在當前工程中添加了一個新的mole -- lib,就需要在settings.gralde文件中包含這個新的mole。 gradle腳本的基本結構 用我現在的工程舉例來說,根目錄的build.gradle的內容如下所示:
❺ 如何更改gradle默認執行順序
1
gradle的解析順序:rootproject 的setting.gradle,然後是rootproject的build.gradle,然後是各個subproject。所以project下的build.gradle會先於app下的build.gradle。
2
在build.gradle中,我們可以通過apply plugin: 引入插件,也可以通過 apply from .gradle引入其他gradle腳本中的函數定義或task等
3
你說的check,clean實際是task,一般hook我們指的是gradle的生命周期:
❻ 如何在python腳本中嵌入gradle 命令
首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由於3.0版本以上不向下兼容,體驗較差。
打開文本編輯器,將文件保存成 .py格式,editplus和notepad支持識別python語法。
腳本第一行一定要寫上 #!usr/bin/python
表示該腳本文件是可執行python腳本
如果您的python目錄不在usr/bin目錄下,則替換成當前python執行程序的目錄
編寫完腳本之後注意調試、可以直接用editplus調試。調試方法可自行網路。腳本寫完之後,打開CMD命令行,前提是python 已經被加入到環境變數中,如果沒有加入到環境變數,請網路
在CMD命令行中,輸入 「python」 + 「空格」,即 」python 「;
將已經寫好的腳本文件拖拽到當前游標位置,然後敲回車運行即可
❼ 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<Project>介面即可,在我的實現代碼中,做了兩件事,一是定製了項目的代碼結構,二是添加了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<Project> {
@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目錄下,創建一個文件:<plugin-name>.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為ideaMole Task增加識別Test Source Root的能力即可:
Groovy代碼
apply plugin: 'idea'
...
idea {
mole {
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 {
mole {
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: '<group-id>',name:'<artifact-id>',version:'<version>'
}
,舉個例子,假設項目依賴了4.10版本的junit,那麼配置就是
Groovy代碼
compile group: 'junit',name:'junit',version:'4.10'
另外Depencies還可以按如下方式簡寫
Groovy代碼
compile '<group-id>:<artifact-id>:<version>'
例子
Groovy代碼
compile 'junit:junit:4.10'
最後,如何把自己的項目發布到Repository中,
Groovy代碼
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://localhost/tmp/myRepo/")
}
}
❽ android studio怎麼配置gradle
build.gradle //設置腳本的運行環境 buildscript { //支持java 依賴庫管理(maven/ivy),用於項目的依賴。 repositories { mavenCentral() } //依賴包的定義。支持maven/ivy,遠程,本地庫,也支持單文件 dependencies { classpath 'com.android...
❾ gradle配置不成功,求助貼
1,首先當然是到官網gradle.org下載最新的gradle版本了
2,下載完成後,放到任意的位置,我的是在D:/gradle-1.1,然後需要放到換進配置,步驟是右鍵「計算機」-「屬性」,進入「高級配置」,選擇「環境變數」,點擊」新建「,配置」GRADLE_HOME「