㈠ 如何使用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包。
㈡ android gradle打包生成兩個包,怎麼去掉debug版本
Gralde 打包參數詳解
上面說了一大堆東西,其實並不吸引人去使用gradle,如果只是構建項目的話,adt不是更合適嗎?如果,你看完以下內容還是這么覺得的話,你就沒必要折騰gradle了。。。。。。
打簽名包
看附錄 默認輸出 release apk 是沒有簽名的,那麼我們需要簽名的很簡單,只需要在android{}裡面補充加上加上即可。完整build.gradle 請點擊我的gist
build.gradle
signingConfigs {
myConfig{
storeFile file("gradle.keystore")
storePassword "gradle"
keyAlias "gradle"
keyPassword "gradle"
}
}
buildTypes{
release {
signingConfig signingConfigs.myConfig
}
}
然後,運行gradle clean gradle build ,這次在build/apk 你看到了多了一個[項目名]-release-unaligned, 從字面上面我就可以知道,這個只是沒有進行zipAlign 優化的版本而已。而[項目名]-release 就是我們簽名,並且zipAlign 的apk包了. ###打混淆包### 只需要在原來的基礎上加上,完整的proguad.gradle 代碼 build.gradle
gradle clean
gradle build
打多渠道包(Proct Flavor)
現在來解釋一下上一節的問題,apk目錄下的兩個apk 的含義
為什麼產生了兩個apk?
默認的android gralde 插件定義了兩種apk 的類型debug, release,這兩種類型的詳細對比看附錄。
這個是android gralde 插件 buildTypes{} 方法產生的,默認配置好了兩個默認模板,當然你也可以修改,前面我們就是在修改默認的release 的配置,讓輸出release類型的的apk,具有簽名和混淆。
對於多渠道包,android 插件提供了一個名為Proct Flavor{} 的配置,用於進行多渠道打包。
例如,我的android應用有海外版,和國內版本,而且這兩個版本的包名是不一樣的!!(我就舉兩個市場的例子安裝這個思路,你要打包100個不同的市場只是幾行代碼的事情。)。
你只需要在android{} 補充上
build.gradle
proctFlavors {
playstore {
packageName='com.youxiachai.androidgradle.playstore'
}
hiapk {
packageName='com.youxiachai.androidgradle.amazonappstore'
}
}
僅此而已?然後gradle clean,gradle build,在build/apk 下面你會看到一堆的包,命名格式[項目名]-[渠道名]-release
Proct Flavor{} 不只是能改包名那麼簡單,還能夠對編譯的源碼目錄進行切換。
什麼意思? 不知道各位有沒有用過友盟做用戶統計,如果,你用的是分發渠道分析,你需要修改AndroidManifest.xml 添加上
如果,你很多渠道,,然後你就會很痛苦,現在用gradle 就非常舒服,你只需要在android.sourceSets指定我們的渠道名就行,android gradle 插件,會自動打包!!!例如
build.gradle
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
hiapk {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
playstore {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
instrumentTest.setRoot('tests')
}
然後運行gradle clean,gradle build,省下的時間去喝杯咖啡,睡個覺什麼的都好。。。 ###外部依賴### android gradle 對於外部jar 包的應用支持maven/ivy 管理的包,也支持指定具體文件,前面已經在上文說過。上面演示的完整 build.gradle gist 裡面也有寫。你需要加上如下代碼即可: build.gradle