Я использую gradle 4.1 в Android Studio 3.0 Beta 7. Существует версия VersionNumber.java (в разделе C: \ Users \ ssfang.gradle \ wrapper \ dists \ gradle-4.1-all \ bzyivzo6n839fup2jbap0tjew \ gradle-4.1 \ src \ core \ org \ gradle \ util)
Например:
apply plugin: 'com.android.application'
try{ // undocumented
println "${android.plugin.getSdkFolder().getAbsolutePath()}"
// Since 1.3.1 or 1.5.0? android studio version or android gradle plugin?
println "${android.getSdkDirectory().getAbsolutePath()}"
}catch (ignored){
}
// As of android gradle plugin v2.1.2
println android.sdkDirectory.path
println android.ndkDirectory.path
def buildToolsVer = new File(android.sdkDirectory.path, 'build-tools').listFiles().collect{ VersionNumber.parse(it.getName()) }.sort()
println buildToolsVer
printf('%s, %s\n', buildToolsVer.head(), buildToolsVer.last().toString())
def String mostRecentVersion(List versions) {
// TreeMap verNum2StrMap = versions.collectEntries(new TreeMap(), { [VersionNumber.parse(it), it] })
// TreeMap verNum2StrMap = versions.inject(new TreeMap()) { memo, entry ->
// memo[VersionNumber.parse(entry)] = entry
// memo
// }
TreeMap verNum2StrMap = versions.inject(new TreeMap()) { map, verStr ->
map << [(VersionNumber.parse(verStr)): verStr]
}
// println verNum2StrMap.lastEntry().value
verNum2StrMap.lastEntry().value
}
assert mostRecentVersion(['02.2.02.01', '02.2.02.02', '02.2.03.01']) == '02.2.03.01'
assert mostRecentVersion(['4', '2']) == '4'
assert mostRecentVersion(['4.1', '4']) == '4.1'
assert mostRecentVersion(['4.1', '5']) == '5'
android {
compileSdkVersion 25
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "ss.xsigner"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
setProperty("archivesBaseName", "xsigner")
}
}
-
Вы можете попробовать использовать это регулярное выражение. "\\p{L}|[0-9]"
.
Код использования:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String args[]) {
// String to be scanned to find the pattern.
String line = "~!@#$%^&*(()_+<>?:\"{}|\\][;'./-=`";
String pattern = "\\p{L}|[0-9]"; // regex needed
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
System.out.print("String \"" + line + "\" results to ");
if (m.find()) {
System.out.println("TRUE -> Found value: " + m.group(0));
} else {
System.out.println("FALSE");
}
line = "~~1_~";
m = r.matcher(line);
System.out.print("String \"" + line + "\" results to ");
if (m.find()) {
System.out.println("TRUE -> Found value: " + m.group(0));
} else {
System.out.println("FALSE");
}
line = "~~k_~";
m = r.matcher(line);
System.out.print("String \"" + line + "\" results to ");
if (m.find()) {
System.out.println("TRUE -> Found value: " + m.group(0));
} else {
System.out.println("FALSE");
}
line = "~~汉_~";
m = r.matcher(line);
System.out.print("String \"" + line + "\" results to ");
if (m.find()) {
System.out.println("TRUE -> Found value: " + m.group(0));
} else {
System.out.println("FALSE");
}
}
}
Результат:
String "~!@#$%^&*(()_+<>?:"{}|\][;'./-=`" results to FALSE
String "~~1_~" results to TRUE
String "~~k_~" results to TRUE -> Found value: k
String "~~汉_~" results to TRUE -> Found value: 汉