Skip to content

Instantly share code, notes, and snippets.

@jasonwyatt
Created August 2, 2017 18:00
Show Gist options
  • Save jasonwyatt/f177affd5781b963451d320c93c8999e to your computer and use it in GitHub Desktop.
Save jasonwyatt/f177affd5781b963451d320c93c8999e to your computer and use it in GitHub Desktop.
import java.util.regex.Pattern
class VersionInfo {
private static Pattern VERSION_NAME_PATTERN = Pattern.compile("versionName='([0-9]+(\\.[0-9]+)+)'", Pattern.MULTILINE)
private static Pattern VERSION_CODE_PATTERN = Pattern.compile("versionCode='([0-9]+)'", Pattern.MULTILINE)
public File apkFile;
public String versionName;
public int versionCode;
public VersionInfo(File apkFile, String aaptOutput) {
def nameMatcher = VERSION_NAME_PATTERN.matcher(aaptOutput)
def codeMatcher = VERSION_CODE_PATTERN.matcher(aaptOutput)
nameMatcher.find()
codeMatcher.find()
this.apkFile = apkFile;
this.versionName = nameMatcher.group(1)
this.versionCode = Integer.parseInt(codeMatcher.group(1), 10)
}
@Override
String toString() {
return "VersionInfo(\"${apkFile}\", versionName=\"${versionName}\", versionCode=\"${versionCode}\")"
}
}
def getAaptPath = { ->
def sdkDir = android.sdkDirectory
def buildToolsDir = new File(sdkDir, "build-tools")
def versions = buildToolsDir.list()
def latestBuildToolsDir = new File(buildToolsDir, versions[-1])
return "${new File(latestBuildToolsDir, "aapt").absoluteFile}"
}
def getVersionInfo = { File apkFile ->
def stdout = new ByteArrayOutputStream()
exec {
commandLine getAaptPath(), "dump", "badging", apkFile.absoluteFile
standardOutput = stdout
}
return new VersionInfo(apkFile, stdout.toString())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment