From 9814c3ad8c30823f3ccd9e337ee368a202484de6 Mon Sep 17 00:00:00 2001 From: "jiroshimonis@gmail.com" Date: Mon, 26 Sep 2022 13:38:21 +0800 Subject: [PATCH] avgg --- .github/workflows/gradle.yml | 8 +- .gitignore | 158 ++++++++++++++++++++++++++++++++++- build.gradle | 85 ------------------- build.gradle.kts | 108 ++++++++++++++++++++++++ gradlew | 41 +++++---- gradlew.bat | 11 +-- assets/mod.json => mod.json | 0 7 files changed, 292 insertions(+), 119 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts rename assets/mod.json => mod.json (100%) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 861f3ae..ddbfb56 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -19,17 +19,17 @@ jobs: env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' - name: build-tools - run: sdkmanager "build-tools;29.0.3" + run: sdkmanager "build-tools;30.0.3" - name: Add Android SDK to PATH - run: echo "${ANDROID_HOME}/build-tools/29.0.3" >> $GITHUB_PATH + run: echo "${ANDROID_HOME}/build-tools/30.0.3" >> $GITHUB_PATH - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew buildDex + run: ./gradlew deploy - name: Upload a Build Artifact (dexed) uses: actions/upload-artifact@v2.2.1 with: name: informatis built by action - path: build/libs/raw-*.jar + path: build/libs/*.jar diff --git a/.gitignore b/.gitignore index 0bf9e5f..cad5206 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,156 @@ -/.gradle/ -/.idea/ +logs/ +/core/assets/mindustry-saves/ +/core/assets/mindustry-maps/ +/core/assets/bundles/output/ +/core/assets/.gifimages/ +/deploy/ +/desktop/packr-out/ +/desktop/packr-export/ +/desktop/mindustry-saves/ +/desktop/mindustry-maps/ +/desktop/gifexport/ +/core/lib/ +/ios/assets/ +/core/assets-raw/sprites/generated/ +/core/assets-raw/sprites_out/ +/annotations/build/ +/annotations/out/ +/net/build/ +/tools/build/ +/tests/build/ +/server/build/ +/test_files/ +/annotations/build/ +/desktop-sdl/build/ +desktop-sdl/build/ +/android/assets/mindustry-maps/ +/android/assets/mindustry-saves/ +/core/assets/gifexport/ +/core/assets/version.properties +/core/assets/locales +/ios/src/io/anuke/mindustry/gen/ +/core/src/io/anuke/mindustry/gen/ +ios/robovm.properties +packr-out/ +config/ +*.gif + +version.properties + +.attach_* +## Java + +*.class +*.war +*.ear +hs_err_pid* +crash-report-* + +## Robovm +/ios/robovm-build/ + +## GWT +/html/war/ +/html/gwt-unitCache/ +.apt_generated/ +.gwt/ +gwt-unitCache/ +www-test/ +.gwt-tmp/ + +## Android Studio and Intellij and Android in general +/android/libs/armeabi/ +/android/libs/armeabi-v7a/ +/android/libs/arm64-v8a/ +/android/libs/x86/ +/android/libs/x86_64/ +/android/gen/ +.idea/ +*.ipr +*.iws +*.iml +/android/out/ +com_crashlytics_export_strings.xml + +## Eclipse + +.classpath +.project +.metadata/ +/android/bin/ +/core/bin/ +/desktop/bin/ +/html/bin/ +/ios/bin/ +/ios-moe/bin/ +*.tmp +*.bak +*.swp +*~.nib +.settings/ +.loadpath +.externalToolBuilders/ +*.launch + +## NetBeans + +/nbproject/private/ +/android/nbproject/private/ +/core/nbproject/private/ +/desktop/nbproject/private/ +/html/nbproject/private/ +/ios/nbproject/private/ +/ios-moe/nbproject/private/ + /build/ -*.bat +/android/build/ +/core/build/ +/desktop/build/ +/html/build/ +/ios/build/ +/ios-moe/build/ + +/nbbuild/ +/android/nbbuild/ +/core/nbbuild/ +/desktop/nbbuild/ +/html/nbbuild/ +/ios/nbbuild/ +/ios-moe/nbbuild/ + +/dist/ +/android/dist/ +/core/dist/ +/desktop/dist/ +/html/dist/ +/ios/dist/ +/ios-moe/dist/ + +/nbdist/ +/android/nbdist/ +/core/nbdist/ +/desktop/nbdist/ +/html/nbdist/ +/ios/nbdist/ +/ios-moe/nbdist/ + +nbactions.xml +nb-configuration.xml + +## Gradle + +/local.properties +.gradle/ +gradle-app.setting +/build/ +/android/build/ +/core/build/ +/desktop/build/ +/html/build/ +/ios/build/ +/ios-moe/build/ + +## OS Specific +.DS_Store +Thumbs.db +android/libs/ \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 64a5a51..0000000 --- a/build.gradle +++ /dev/null @@ -1,85 +0,0 @@ -plugins { - id 'java' -} - -ext{ - sdkRoot = System.getenv("ANDROID_HOME") - sdkVersion = '30' - artifactFilename = "Informatis.jar" -} - -group "sharlotte" - -sourceSets.main { - java.srcDir("src/") - resources.srcDir("assets/") -} - -repositories { - mavenCentral() - maven { url "https://jitpack.io" } -} - -dependencies { - annotationProcessor 'com.github.Anuken:jabel:0.8.0' - compileOnly "com.github.Anuken.Mindustry:core:v138" - compileOnly "com.github.Anuken.Arc:flabel:v138" - compileOnly "com.github.Anuken.Arc:arc-core:v138" -} - -jar.archiveFileName.set("raw-$artifactFilename") - -def isWindows = System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("windows") - -task dexify(type: Jar){ - archiveFileName.set(artifactFilename) - - final File jarArtifact = new File(tasks.jar.archiveFile.get().asFile.parent, "raw-$artifactFilename"), - dexedArtifact = new File(tasks.dexify.getTemporaryDir(), "dexed.jar") - - doFirst{ - //collect dependencies needed for desugaring - def files = (configurations.compileClasspath.asList() + configurations.runtimeClasspath.asList() + [new File("$sdkRoot/platforms/android-$sdkVersion/android.jar")]) - - exec{ - workingDir dexedArtifact.parent - def command = ["d8", "--min-api", "14"] - for(def file : files){ - command += "--classpath" - command += file.path - } - - command += ["--output", dexedArtifact, jarArtifact] - - if(isWindows){ - commandLine("cmd", "/c", *command) - }else{ - commandLine(*command) - } - } - } - - from(zipTree(jarArtifact), zipTree(dexedArtifact)) -} - -task buildDex dependsOn "build", "dexify" - -task buildMove(dependsOn: build) { - doLast { - copy { - from "build/libs/raw-Informatis.jar" - into System.getenv("destination") - } - } -} - -tasks.withType(JavaCompile){ - targetCompatibility = 8 - sourceCompatibility = JavaVersion.VERSION_17 - options.encoding = "UTF-8" - options.compilerArgs += ["-Xlint:deprecation"] - if(JavaVersion.current() != JavaVersion.VERSION_1_8){ - options.compilerArgs.addAll(['--release', '8']) - } - compileJava.options.fork = true -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..4a4adba --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,108 @@ +import java.io.ByteArrayOutputStream + +version = "1.0" +plugins { + java +} + +val mindustryVersion = "v138" +repositories { + mavenCentral() + maven("https://jitpack.io") +} + +sourceSets { + main { + java.srcDirs("src") + } + test { + java.srcDir("test") + } +} + +dependencies { + compileOnly("com.github.Anuken.Arc:arc-core:$mindustryVersion") + //flabel hash eae3c2dc59 is broken + compileOnly("com.github.Anuken.Arc:flabel:$mindustryVersion") + compileOnly("com.github.Anuken.Mindustry:core:$mindustryVersion") + annotationProcessor("com.github.Anuken:jabel:0.8.0") +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +tasks.register("jarAndroid") { + group = "build" + dependsOn("jar") + + doLast { + val sdkRoot = System.getenv("ANDROID_HOME") ?: System.getenv("ANDROID_SDK_ROOT") + if (sdkRoot == null || !File(sdkRoot).exists()) + throw GradleException("No valid Android SDK found. Ensure that ANDROID_HOME is set to your Android SDK directory.") + val platformRoot = File("$sdkRoot/platforms/").listFiles()!!.sorted().reversed() + .find { f -> File(f, "android.jar").exists() } + ?: throw GradleException("No android.jar found. Ensure that you have an Android platform installed.") + //collect dependencies needed for desugaring + val allDependencies = configurations.compileClasspath.get().toList() + + configurations.runtimeClasspath.get().toList() + + listOf(File(platformRoot, "android.jar")) + val dependencies = allDependencies.joinToString(" ") { "--classpath ${it.path}" } + //dex and desugar files - this requires d8 in your PATH + val paras = "$dependencies --min-api 14 --output ${project.name}Android.jar ${project.name}Desktop.jar" + try { + exec { + commandLine = "d8 $paras".split(' ') + workingDir = File("$buildDir/libs") + standardOutput = System.out + errorOutput = System.err + } + } catch (_: Exception) { + val cmdOutput = ByteArrayOutputStream() + logger.lifecycle("d8 cannot be found in your PATH, so trying to use an absolute path.") + exec { + commandLine = listOf("where", "d8") + standardOutput = cmdOutput + errorOutput = System.err + } + val d8FullPath = cmdOutput.toString().replace("\r", "").replace("\n", "") + exec { + commandLine = "$d8FullPath $paras".split(' ') + workingDir = File("$buildDir/libs") + standardOutput = System.out + errorOutput = System.err + } + } + } +} + +tasks.jar { + + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + archiveFileName.set("${project.name}Desktop.jar") + + from(*configurations.runtimeClasspath.get().files.map { if (it.isDirectory) it else zipTree(it) }.toTypedArray()) + + from(rootDir) { + include("mod.json") + include("icon.png") + } + + from("$rootDir/assets/") { + include("**") + } +} +task("deploy") { + dependsOn("jarAndroid") + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + archiveFileName.set("${project.name}.jar") + from( + zipTree("$buildDir/libs/${project.name}Desktop.jar"), + zipTree("$buildDir/libs/${project.name}Android.jar") + ) + doLast { + delete { delete("$buildDir/libs/${project.name}Desktop.jar") } + delete { delete("$buildDir/libs/${project.name}Android.jar") } + } +} diff --git a/gradlew b/gradlew index df3a6fe..43ba31c 100644 --- a/gradlew +++ b/gradlew @@ -44,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -82,7 +82,6 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -93,12 +92,14 @@ if [ -n "$JAVA_HOME" ] ; then fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD="java" which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi @@ -124,11 +125,10 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath @@ -154,19 +154,19 @@ if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then else eval `echo args$i`="\"$arg\"" fi - i=`expr $i + 1` + i=$((i+1)) done case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi @@ -175,9 +175,14 @@ save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } -APP_ARGS=`save "$@"` +APP_ARGS=$(save "$@") # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" -exec "$JAVACMD" "$@" \ No newline at end of file +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index cbea681..c42c579 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -29,18 +29,14 @@ if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" +set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 - if "%ERRORLEVEL%" == "0" goto init echo. @@ -57,7 +53,6 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init - echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. @@ -86,11 +81,9 @@ set CMD_LINE_ARGS=%* set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd @@ -104,4 +97,4 @@ exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal -:omega \ No newline at end of file +:omega diff --git a/assets/mod.json b/mod.json similarity index 100% rename from assets/mod.json rename to mod.json