diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index c1323ab47..e397591c7 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -15,8 +15,8 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - distribution: 'adopt' - java-version: 8 + distribution: 'temurin' + java-version: 11 - name: Set jadx version run: | diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index bb3ad56f1..55354133d 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -17,8 +17,8 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - distribution: 'adopt' - java-version: 8 + distribution: 'temurin' + java-version: 11 - uses: burrunan/gradle-cache-action@v1 name: Build with Gradle diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f73db16c..879286740 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,17 +8,12 @@ before_script: stages: - test -java-8: - stage: test - image: openjdk:8 - script: ./gradlew clean build dist copyExe --warning-mode=all - java-11: stage: test - image: openjdk:11 - script: ./gradlew clean build dist copyExe --warning-mode=all + image: eclipse-temurin:11 + script: ./gradlew clean build dist -java-latest: +java-17: stage: test - image: openjdk:latest - script: java -version && ./gradlew clean build dist --warning-mode=all + image: eclipse-temurin:17 + script: ./gradlew clean build dist diff --git a/README.md b/README.md index a6878d7d6..0c05fafc8 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ For Windows, you can download it from [oracle.com](https://www.oracle.com/java/t You can use jadx in your java projects, check details on [wiki page](https://github.com/skylot/jadx/wiki/Use-jadx-as-a-library) ### Build from source -JDK 8 or higher must be installed: +JDK 11 or higher must be installed: ``` git clone https://github.com/skylot/jadx.git cd jadx diff --git a/build.gradle b/build.gradle index d9b3bcc4a..0e3111512 100644 --- a/build.gradle +++ b/build.gradle @@ -2,9 +2,9 @@ plugins { id 'com.github.ben-manes.versions' version '0.46.0' - id 'com.diffplug.spotless' version '6.13.0' + id 'com.diffplug.spotless' version '6.17.0' - id 'org.jetbrains.kotlin.jvm' version '1.8.10' + id 'org.jetbrains.kotlin.jvm' version '1.8.20' } ext.jadxVersion = System.getenv('JADX_VERSION') ?: "dev" @@ -18,15 +18,16 @@ allprojects { version = jadxVersion - sourceCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 compileJava { options.encoding = "UTF-8" } compileKotlin { - kotlinOptions { + compilerOptions { incremental = false // cause unexpected issues sometime - // useK2 = true + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11) } } @@ -37,18 +38,18 @@ allprojects { } dependencies { - implementation 'org.slf4j:slf4j-api:2.0.6' - compileOnly 'org.jetbrains:annotations:24.0.0' + implementation 'org.slf4j:slf4j-api:2.0.7' + compileOnly 'org.jetbrains:annotations:24.0.1' - testImplementation 'ch.qos.logback:logback-classic:1.3.5' + testImplementation 'ch.qos.logback:logback-classic:1.4.6' testImplementation 'org.hamcrest:hamcrest-library:2.2' - testImplementation 'org.mockito:mockito-core:4.11.0' + testImplementation 'org.mockito:mockito-core:5.2.0' testImplementation 'org.assertj:assertj-core:3.24.2' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.2' - testCompileOnly 'org.jetbrains:annotations:24.0.0' + testCompileOnly 'org.jetbrains:annotations:24.0.1' } test { @@ -65,13 +66,6 @@ allprojects { spotless { java { - target fileTree(rootDir).matching { - include 'jadx-cli/src/**/java/**/*.java' - include 'jadx-core/src/**/java/**/*.java' - include 'jadx-gui/src/**/java/**/*.java' - include 'jadx-plugins/**/java/**/*.java' - } - importOrderFile 'config/code-formatter/eclipse.importorder' eclipse().configFile 'config/code-formatter/eclipse.xml' removeUnusedImports() @@ -82,14 +76,9 @@ spotless { endWithNewline() } kotlin { - target fileTree(rootDir).matching { - include 'jadx-plugins/jadx-script/**/*.kt' - include 'jadx-gui/src/main/**/*.kt' -// include 'jadx-plugins/jadx-script/examples/scripts/**/*.jadx.kts' - } ktlint() - .setUseExperimental(false) - .editorConfigOverride([indent_style: "tab"]) + .setUseExperimental(false) + .editorConfigOverride([indent_style: "tab"]) lineEndings(com.diffplug.spotless.LineEnding.UNIX) encoding("UTF-8") diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e5832f..ccebba771 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 03ca076c8..19acfb4ef 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=7ba68c54029790ab444b39d7e293d3236b2632631fb5f2e012bb28b4ff669e4b -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip +distributionSha256Sum=ff7bf6a86f09b9b2c40bb8f48b25fc19cf2b2664fd1d220cd7ab833ec758d0d7 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 7a48e7a3f..79a61d421 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -80,10 +80,10 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' @@ -143,12 +143,16 @@ fi if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -208,7 +212,7 @@ set -- \ # Stop when "xargs" is not available. if ! command -v xargs >/dev/null 2>&1 then - echo "xargs is not available" + die "xargs is not available" fi # Use "xargs" to parse quoted args. diff --git a/gradlew.bat b/gradlew.bat index 53a6b238d..6689b85be 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/jadx-cli/build.gradle b/jadx-cli/build.gradle index 89dee8730..839bed340 100644 --- a/jadx-cli/build.gradle +++ b/jadx-cli/build.gradle @@ -12,7 +12,7 @@ dependencies { runtimeOnly(project(':jadx-plugins:jadx-script:jadx-script-plugin')) implementation 'com.beust:jcommander:1.82' - implementation 'ch.qos.logback:logback-classic:1.3.5' + implementation 'ch.qos.logback:logback-classic:1.4.6' } application { diff --git a/jadx-core/build.gradle b/jadx-core/build.gradle index 167f090db..807d6facb 100644 --- a/jadx-core/build.gradle +++ b/jadx-core/build.gradle @@ -6,8 +6,8 @@ dependencies { implementation 'com.google.code.gson:gson:2.10.1' // TODO: move resources decoding to separate plugin module - implementation 'com.android.tools.build:aapt2-proto:7.3.1-8691043' - implementation 'com.google.protobuf:protobuf-java:3.21.12' // forcing latest version + implementation 'com.android.tools.build:aapt2-proto:7.4.2-8841542' + implementation 'com.google.protobuf:protobuf-java:3.22.2' // forcing latest version testImplementation 'org.apache.commons:commons-lang3:3.12.0' @@ -18,7 +18,7 @@ dependencies { testRuntimeOnly(project(':jadx-plugins:jadx-raung-input')) testRuntimeOnly(project(':jadx-plugins:jadx-rename-mappings')) - testImplementation 'org.eclipse.jdt:ecj:3.32.0' + testImplementation 'org.eclipse.jdt:ecj:3.33.0' testImplementation 'tools.profiler:async-profiler:2.9' } diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index c5a963740..b9c86c748 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -1,7 +1,7 @@ plugins { id 'application' id 'edu.sc.seis.launch4j' version '2.5.4' - id 'com.github.johnrengelman.shadow' version '7.1.2' + id 'com.github.johnrengelman.shadow' version '8.1.1' id 'org.beryx.runtime' version '1.13.0' } @@ -15,7 +15,7 @@ dependencies { // jadx-script autocomplete support implementation(project(':jadx-plugins:jadx-script:jadx-script-ide')) implementation(project(':jadx-plugins:jadx-script:jadx-script-runtime')) - implementation 'org.jetbrains.kotlin:kotlin-scripting-common:1.8.10' + implementation 'org.jetbrains.kotlin:kotlin-scripting-common:1.8.20' implementation 'com.fifesoft:autocomplete:3.3.1' // use KtLint for format and check jadx scripts @@ -23,16 +23,16 @@ dependencies { implementation 'com.pinterest.ktlint:ktlint-ruleset-standard:0.48.2' implementation 'com.beust:jcommander:1.82' - implementation 'ch.qos.logback:logback-classic:1.3.5' + implementation 'ch.qos.logback:logback-classic:1.4.6' implementation 'dev.dirs:directories:26' - implementation 'com.fifesoft:rsyntaxtextarea:3.3.2' + implementation 'com.fifesoft:rsyntaxtextarea:3.3.3' implementation files('libs/jfontchooser-1.0.5.jar') implementation 'hu.kazocsaba:image-viewer:1.2.3' - implementation 'com.formdev:flatlaf:3.0' - implementation 'com.formdev:flatlaf-intellij-themes:3.0' - implementation 'com.formdev:flatlaf-extras:3.0' + implementation 'com.formdev:flatlaf:3.1' + implementation 'com.formdev:flatlaf-intellij-themes:3.1' + implementation 'com.formdev:flatlaf-extras:3.1' implementation 'com.formdev:svgSalamander:1.1.4' implementation 'com.google.code.gson:gson:2.10.1' @@ -41,7 +41,7 @@ dependencies { implementation 'io.reactivex.rxjava2:rxjava:2.2.21' implementation "com.github.akarnokd:rxjava2-swing:0.3.7" - implementation 'com.android.tools.build:apksig:7.4.1' + implementation 'com.android.tools.build:apksig:7.4.2' implementation 'io.github.skylot:jdwp:2.0.0' testImplementation project(":jadx-core").sourceSets.test.output diff --git a/jadx-plugins/jadx-java-convert/build.gradle b/jadx-plugins/jadx-java-convert/build.gradle index 1b51a30c9..0a438e496 100644 --- a/jadx-plugins/jadx-java-convert/build.gradle +++ b/jadx-plugins/jadx-java-convert/build.gradle @@ -7,7 +7,7 @@ dependencies { implementation(project(":jadx-plugins:jadx-dex-input")) implementation('com.jakewharton.android.repackaged:dalvik-dx:11.0.0_r3') - implementation('com.android.tools:r8:4.0.48') + implementation('com.android.tools:r8:8.0.40') - implementation 'org.ow2.asm:asm:9.4' + implementation 'org.ow2.asm:asm:9.5' } diff --git a/jadx-plugins/jadx-rename-mappings/build.gradle b/jadx-plugins/jadx-rename-mappings/build.gradle index 765902bab..2feb3dc9f 100644 --- a/jadx-plugins/jadx-rename-mappings/build.gradle +++ b/jadx-plugins/jadx-rename-mappings/build.gradle @@ -1,7 +1,7 @@ plugins { id 'jadx-library' - id 'com.github.johnrengelman.shadow' version '7.1.2' + id 'com.github.johnrengelman.shadow' version '8.1.1' } dependencies { @@ -13,7 +13,7 @@ dependencies { api(files('libs/mapping-io-0.4.0-SNAPSHOT.jar')) constraints { - runtimeOnly 'org.ow2.asm:asm:9.3' + runtimeOnly 'org.ow2.asm:asm:9.5' } }