1*ae5b1ec8SZiwei Zhangbuildscript { 2*ae5b1ec8SZiwei Zhang repositories { 3*ae5b1ec8SZiwei Zhang mavenCentral() 4*ae5b1ec8SZiwei Zhang google() 5*ae5b1ec8SZiwei Zhang } 6*ae5b1ec8SZiwei Zhang} 7*ae5b1ec8SZiwei Zhang 8*ae5b1ec8SZiwei Zhangplugins { 9*ae5b1ec8SZiwei Zhang id 'com.github.sherter.google-java-format' version '0.9' 10*ae5b1ec8SZiwei Zhang id 'maven-publish' 11*ae5b1ec8SZiwei Zhang id 'signing' 12*ae5b1ec8SZiwei Zhang} 13*ae5b1ec8SZiwei Zhang 14*ae5b1ec8SZiwei Zhangapply plugin: 'com.android.library' 15*ae5b1ec8SZiwei Zhang 16*ae5b1ec8SZiwei Zhangandroid { 17*ae5b1ec8SZiwei Zhang compileSdkVersion 31 18*ae5b1ec8SZiwei Zhang 19*ae5b1ec8SZiwei Zhang defaultConfig { 20*ae5b1ec8SZiwei Zhang minSdkVersion 26 21*ae5b1ec8SZiwei Zhang targetSdkVersion 31 22*ae5b1ec8SZiwei Zhang versionCode VERSION_CODE.toInteger() 23*ae5b1ec8SZiwei Zhang versionName VERSION_NAME 24*ae5b1ec8SZiwei Zhang 25*ae5b1ec8SZiwei Zhang // Need to set up some project properties to publish to bintray. 26*ae5b1ec8SZiwei Zhang project.group = GROUP_ID 27*ae5b1ec8SZiwei Zhang project.archivesBaseName = ARTIFACT_ID 28*ae5b1ec8SZiwei Zhang project.version = VERSION_NAME 29*ae5b1ec8SZiwei Zhang } 30*ae5b1ec8SZiwei Zhang 31*ae5b1ec8SZiwei Zhang splits { 32*ae5b1ec8SZiwei Zhang abi { 33*ae5b1ec8SZiwei Zhang enable true 34*ae5b1ec8SZiwei Zhang reset() 35*ae5b1ec8SZiwei Zhang // Specifies a list of ABIs that Gradle should create APKs for. 36*ae5b1ec8SZiwei Zhang include "arm64-v8a", "armeabi-v7a", "armeabi" 37*ae5b1ec8SZiwei Zhang universalApk true 38*ae5b1ec8SZiwei Zhang } 39*ae5b1ec8SZiwei Zhang } 40*ae5b1ec8SZiwei Zhang 41*ae5b1ec8SZiwei Zhang lintOptions { 42*ae5b1ec8SZiwei Zhang abortOnError false 43*ae5b1ec8SZiwei Zhang checkAllWarnings true 44*ae5b1ec8SZiwei Zhang warningsAsErrors true 45*ae5b1ec8SZiwei Zhang disable 'HardwareIds','MissingApplicationIcon','GoogleAppIndexingWarning','InvalidPackage','OldTargetApi' 46*ae5b1ec8SZiwei Zhang } 47*ae5b1ec8SZiwei Zhang 48*ae5b1ec8SZiwei Zhang compileOptions { 49*ae5b1ec8SZiwei Zhang sourceCompatibility JavaVersion.VERSION_1_8 50*ae5b1ec8SZiwei Zhang targetCompatibility JavaVersion.VERSION_1_8 51*ae5b1ec8SZiwei Zhang } 52*ae5b1ec8SZiwei Zhang} 53*ae5b1ec8SZiwei Zhang 54*ae5b1ec8SZiwei Zhangdependencies { 55*ae5b1ec8SZiwei Zhang implementation 'junit:junit:4.13.2' 56*ae5b1ec8SZiwei Zhang implementation 'androidx.test:runner:1.4.0' 57*ae5b1ec8SZiwei Zhang} 58*ae5b1ec8SZiwei Zhang 59*ae5b1ec8SZiwei ZhanggoogleJavaFormat { 60*ae5b1ec8SZiwei Zhang options style: 'AOSP' 61*ae5b1ec8SZiwei Zhang} 62*ae5b1ec8SZiwei Zhang 63*ae5b1ec8SZiwei Zhangtask sourcesJar(type: Jar) { 64*ae5b1ec8SZiwei Zhang from android.sourceSets.main.java.srcDirs 65*ae5b1ec8SZiwei Zhang classifier = 'sources' 66*ae5b1ec8SZiwei Zhang} 67*ae5b1ec8SZiwei Zhang 68*ae5b1ec8SZiwei Zhangtask javadoc(type: Javadoc) { 69*ae5b1ec8SZiwei Zhang source = android.sourceSets.main.java.srcDirs 70*ae5b1ec8SZiwei Zhang classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 71*ae5b1ec8SZiwei Zhang options.addStringOption('Xdoclint:none', '-quiet') 72*ae5b1ec8SZiwei Zhang options.addStringOption('encoding', 'UTF-8') 73*ae5b1ec8SZiwei Zhang options.addStringOption('charSet', 'UTF-8') 74*ae5b1ec8SZiwei Zhang failOnError false 75*ae5b1ec8SZiwei Zhang} 76*ae5b1ec8SZiwei Zhang 77*ae5b1ec8SZiwei Zhangtask javadocJar(type: Jar, dependsOn: javadoc) { 78*ae5b1ec8SZiwei Zhang classifier = 'javadoc' 79*ae5b1ec8SZiwei Zhang from javadoc.destinationDir 80*ae5b1ec8SZiwei Zhang} 81*ae5b1ec8SZiwei Zhang 82*ae5b1ec8SZiwei Zhangartifacts { 83*ae5b1ec8SZiwei Zhang archives javadocJar 84*ae5b1ec8SZiwei Zhang archives sourcesJar 85*ae5b1ec8SZiwei Zhang} 86*ae5b1ec8SZiwei Zhang 87*ae5b1ec8SZiwei Zhang 88*ae5b1ec8SZiwei ZhangafterEvaluate { 89*ae5b1ec8SZiwei Zhang publishing { 90*ae5b1ec8SZiwei Zhang publications { 91*ae5b1ec8SZiwei Zhang release(MavenPublication) { 92*ae5b1ec8SZiwei Zhang groupId GROUP_ID 93*ae5b1ec8SZiwei Zhang artifactId ARTIFACT_ID 94*ae5b1ec8SZiwei Zhang version VERSION_NAME 95*ae5b1ec8SZiwei Zhang from components.release 96*ae5b1ec8SZiwei Zhang 97*ae5b1ec8SZiwei Zhang artifact sourcesJar 98*ae5b1ec8SZiwei Zhang artifact javadocJar 99*ae5b1ec8SZiwei Zhang 100*ae5b1ec8SZiwei Zhang pom { 101*ae5b1ec8SZiwei Zhang name = ARTIFACT_ID 102*ae5b1ec8SZiwei Zhang description = 'Android library for triggering device-side ' + 103*ae5b1ec8SZiwei Zhang 'code from host-side Mobly tests.' 104*ae5b1ec8SZiwei Zhang url = 'https://github.com/google/mobly-snippet-lib' 105*ae5b1ec8SZiwei Zhang licenses { 106*ae5b1ec8SZiwei Zhang license { 107*ae5b1ec8SZiwei Zhang name = 'The Apache Software License, Version 2.0' 108*ae5b1ec8SZiwei Zhang url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' 109*ae5b1ec8SZiwei Zhang distribution = 'repo' 110*ae5b1ec8SZiwei Zhang } 111*ae5b1ec8SZiwei Zhang } 112*ae5b1ec8SZiwei Zhang developers { 113*ae5b1ec8SZiwei Zhang developer { 114*ae5b1ec8SZiwei Zhang name = 'The Mobly Team' 115*ae5b1ec8SZiwei Zhang } 116*ae5b1ec8SZiwei Zhang } 117*ae5b1ec8SZiwei Zhang scm { 118*ae5b1ec8SZiwei Zhang connection = 'https://github.com/google/mobly-snippet-lib.git' 119*ae5b1ec8SZiwei Zhang url = 'https://github.com/google/mobly-snippet-lib' 120*ae5b1ec8SZiwei Zhang } 121*ae5b1ec8SZiwei Zhang } 122*ae5b1ec8SZiwei Zhang } 123*ae5b1ec8SZiwei Zhang } 124*ae5b1ec8SZiwei Zhang 125*ae5b1ec8SZiwei Zhang repositories { 126*ae5b1ec8SZiwei Zhang maven { 127*ae5b1ec8SZiwei Zhang def releasesRepoUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' 128*ae5b1ec8SZiwei Zhang def snapshotsRepoUrl = 'https://oss.sonatype.org/content/repositories/snapshots/' 129*ae5b1ec8SZiwei Zhang url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl 130*ae5b1ec8SZiwei Zhang credentials { 131*ae5b1ec8SZiwei Zhang username ossrhUsername 132*ae5b1ec8SZiwei Zhang password ossrhPassword 133*ae5b1ec8SZiwei Zhang } 134*ae5b1ec8SZiwei Zhang } 135*ae5b1ec8SZiwei Zhang } 136*ae5b1ec8SZiwei Zhang } 137*ae5b1ec8SZiwei Zhang signing { 138*ae5b1ec8SZiwei Zhang sign publishing.publications.release 139*ae5b1ec8SZiwei Zhang } 140*ae5b1ec8SZiwei Zhang} 141*ae5b1ec8SZiwei Zhang 142*ae5b1ec8SZiwei Zhang// Open lint's HTML report in your default browser or viewer. 143*ae5b1ec8SZiwei Zhangtask openLintReport(type: Exec) { 144*ae5b1ec8SZiwei Zhang def lint_report = "build/reports/lint-results-debug.html" 145*ae5b1ec8SZiwei Zhang def cmd = "cat" 146*ae5b1ec8SZiwei Zhang def platform = System.getProperty('os.name').toLowerCase(Locale.ROOT) 147*ae5b1ec8SZiwei Zhang if (platform.contains("linux")) { 148*ae5b1ec8SZiwei Zhang cmd = "xdg-open" 149*ae5b1ec8SZiwei Zhang } else if (platform.contains("mac os x")) { 150*ae5b1ec8SZiwei Zhang cmd = "open" 151*ae5b1ec8SZiwei Zhang } else if (platform.contains("windows")) { 152*ae5b1ec8SZiwei Zhang cmd = "launch" 153*ae5b1ec8SZiwei Zhang } 154*ae5b1ec8SZiwei Zhang commandLine cmd, lint_report 155*ae5b1ec8SZiwei Zhang} 156*ae5b1ec8SZiwei Zhang 157*ae5b1ec8SZiwei Zhangtask presubmit { 158*ae5b1ec8SZiwei Zhang dependsOn { ['googleJavaFormat', 'lint', 'openLintReport'] } 159*ae5b1ec8SZiwei Zhang doLast { 160*ae5b1ec8SZiwei Zhang println "Fix any lint issues you see. When it looks good, submit the pull request." 161*ae5b1ec8SZiwei Zhang } 162*ae5b1ec8SZiwei Zhang} 163*ae5b1ec8SZiwei Zhang 164