254 lines
7.9 KiB
Groovy
254 lines
7.9 KiB
Groovy
import java.security.MessageDigest
|
|
import java.security.NoSuchAlgorithmException
|
|
|
|
group 'tech.nut.nut_player_android'
|
|
version '1.0-SNAPSHOT'
|
|
|
|
String localMavenPath = project.mkdir("build").absolutePath
|
|
|
|
buildscript {
|
|
ext.kotlin_version = '1.7.10'
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:7.3.0'
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
}
|
|
|
|
apply plugin: 'com.android.library'
|
|
apply plugin: 'kotlin-android'
|
|
apply plugin: 'org.jetbrains.kotlin.plugin.serialization'
|
|
|
|
def flutterSdkVersions = new Properties()
|
|
def flutterSdkVersionsFile = rootProject.file('flutterSdkVersions.properties')
|
|
if (flutterSdkVersionsFile.exists()) {
|
|
flutterSdkVersionsFile.withReader('UTF-8') { reader ->
|
|
flutterSdkVersions.load(reader)
|
|
}
|
|
}
|
|
|
|
def flutterCompileSdkVersion = flutterSdkVersions.getProperty('flutter.compileSdkVersion')
|
|
if (flutterCompileSdkVersion == null) {
|
|
flutterCompileSdkVersion = 1
|
|
}
|
|
|
|
def flutterMinSdkVersion = flutterSdkVersions.getProperty('flutter.minSdkVersion')
|
|
if (flutterMinSdkVersion == null) {
|
|
flutterMinSdkVersion = 1
|
|
}
|
|
|
|
android {
|
|
if (project.android.hasProperty("namespace")) {
|
|
namespace 'tech.nut.nut_player_android'
|
|
}
|
|
|
|
compileSdkVersion flutterCompileSdkVersion.toInteger()
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
kotlinOptions {
|
|
jvmTarget = '1.8'
|
|
}
|
|
|
|
sourceSets {
|
|
main.java.srcDirs += 'src/main/kotlin'
|
|
}
|
|
|
|
defaultConfig {
|
|
minSdkVersion flutterMinSdkVersion
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding = true
|
|
}
|
|
|
|
dependencies {
|
|
testImplementation 'org.jetbrains.kotlin:kotlin-test'
|
|
testImplementation 'org.mockito:mockito-core:5.0.0'
|
|
}
|
|
|
|
testOptions {
|
|
unitTests.all {
|
|
useJUnitPlatform()
|
|
|
|
testLogging {
|
|
events "passed", "skipped", "failed", "standardOut", "standardError"
|
|
outputs.upToDateWhen {false}
|
|
showStandardStreams = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'com.google.android.exoplayer:exoplayer:2.18.7'
|
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4'
|
|
implementation "io.ktor:ktor-client-android:1.6.7"
|
|
implementation "io.ktor:ktor-client-serialization:1.6.7"
|
|
// for resolve another errors
|
|
implementation 'com.android.support.constraint:constraint-layout:2.1.4'
|
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
}
|
|
|
|
String aarPath = localMavenPath
|
|
task useAar {
|
|
File file = project.file("libs")
|
|
if (file.exists() && file.isDirectory()) {
|
|
file.listFiles(new FileFilter() {
|
|
@Override
|
|
boolean accept(File pathname) {
|
|
return pathname.name.endsWith(".aar")
|
|
}
|
|
}).each { item ->
|
|
String groupName = "tech.nutplayer"
|
|
String aarName = item.name.substring(0, item.name.length() - 4)
|
|
String[] aarInfo = aarName.split("-")
|
|
String sha1 = getFileSha1(item)
|
|
String md5 = getFileMD5(item)
|
|
String fromStr = item.path
|
|
String intoStr = aarPath + "/" + groupName.replace(".", "/") + "/" + aarInfo[0] + "/" + aarInfo[1]
|
|
String newName = aarInfo[0] + "-" + aarInfo[1] + ".aar"
|
|
|
|
project.copy {
|
|
from fromStr
|
|
into intoStr
|
|
rename(item.name, newName)
|
|
}
|
|
|
|
project.file(intoStr + "/" + newName + ".md5").write(md5)
|
|
project.file(intoStr + "/" + newName + ".sha1").write(sha1)
|
|
|
|
String pomPath = intoStr + "/" + newName.substring(0, newName.length() - 4) + ".pom"
|
|
project.file(pomPath).write(createPomStr(groupName, aarInfo[0], aarInfo[1]))
|
|
project.file(pomPath + ".md5").write(getFileMD5(project.file(pomPath)))
|
|
project.file(pomPath + ".sha1").write(getFileSha1(project.file(pomPath)))
|
|
|
|
String metadataPath = project.file(intoStr).getParentFile().path + "/maven-metadata.xml"
|
|
project.file(metadataPath).write(createMetadataStr(groupName, aarInfo[0], aarInfo[1]))
|
|
project.file(metadataPath + ".md5").write(getFileMD5(project.file(metadataPath)))
|
|
project.file(metadataPath + ".sha1").write(getFileSha1(project.file(metadataPath)))
|
|
dependencies {
|
|
implementation "${groupName}:${aarInfo[0]}:${aarInfo[1]}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static String createMetadataStr(String groupId, String artifactId, String version) {
|
|
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
|
"<metadata>\n" +
|
|
" <groupId>$groupId</groupId>\n" +
|
|
" <artifactId>$artifactId</artifactId>\n" +
|
|
" <versioning>\n" +
|
|
" <release>$version</release>\n" +
|
|
" <versions>\n" +
|
|
" <version>$version</version>\n" +
|
|
" </versions>\n" +
|
|
" <lastUpdated>${new Date().format('yyyyMMdd')}000000</lastUpdated>\n" +
|
|
" </versioning>\n" +
|
|
"</metadata>\n"
|
|
}
|
|
|
|
public static String createPomStr(String groupId, String artifactId, String version) {
|
|
return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
|
|
"<project xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n" +
|
|
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
|
|
" <modelVersion>4.0.0</modelVersion>\n" +
|
|
" <groupId>$groupId</groupId>\n" +
|
|
" <artifactId>$artifactId</artifactId>\n" +
|
|
" <version>$version</version>\n" +
|
|
" <packaging>aar</packaging>\n" +
|
|
"</project>\n"
|
|
}
|
|
|
|
public static String getFileSha1(File file) {
|
|
FileInputStream input = null;
|
|
try {
|
|
input = new FileInputStream(file);
|
|
MessageDigest digest = MessageDigest.getInstance("SHA-1");
|
|
byte[] buffer = new byte[1024 * 1024 * 10];
|
|
|
|
int len = 0;
|
|
while ((len = input.read(buffer)) > 0) {
|
|
digest.update(buffer, 0, len);
|
|
}
|
|
String sha1 = new BigInteger(1, digest.digest()).toString(16);
|
|
int length = 40 - sha1.length();
|
|
if (length > 0) {
|
|
for (int i = 0; i < length; i++) {
|
|
sha1 = "0" + sha1;
|
|
}
|
|
}
|
|
return sha1;
|
|
}
|
|
catch (IOException e) {
|
|
System.out.println(e);
|
|
}
|
|
catch (NoSuchAlgorithmException e) {
|
|
System.out.println(e);
|
|
}
|
|
finally {
|
|
try {
|
|
if (input != null) {
|
|
input.close();
|
|
}
|
|
}
|
|
catch (IOException e) {
|
|
System.out.println(e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static String getFileMD5(File file) {
|
|
FileInputStream input = null;
|
|
try {
|
|
input = new FileInputStream(file);
|
|
MessageDigest digest = MessageDigest.getInstance("MD5");
|
|
byte[] buffer = new byte[1024 * 1024 * 10];
|
|
|
|
int len = 0;
|
|
while ((len = input.read(buffer)) > 0) {
|
|
digest.update(buffer, 0, len);
|
|
}
|
|
String md5 = new BigInteger(1, digest.digest()).toString(16);
|
|
int length = 32 - md5.length();
|
|
if (length > 0) {
|
|
for (int i = 0; i < length; i++) {
|
|
md5 = "0" + md5;
|
|
}
|
|
}
|
|
return md5;
|
|
}
|
|
catch (IOException e) {
|
|
System.out.println(e);
|
|
}
|
|
catch (NoSuchAlgorithmException e) {
|
|
System.out.println(e);
|
|
}
|
|
finally {
|
|
try {
|
|
if (input != null) {
|
|
input.close();
|
|
}
|
|
}
|
|
catch (IOException e) {
|
|
System.out.println(e);
|
|
}
|
|
}
|
|
}
|