From d4649b0278ae43966bd75de988080d0645305f07 Mon Sep 17 00:00:00 2001 From: Joel Menchavez Date: Thu, 23 Apr 2026 21:46:05 -0700 Subject: [PATCH 1/6] ndk plugin --- ndk-installer-plugin/.gitignore | 29 ++ ndk-installer-plugin/build.gradle.kts | 128 +++++++++ ndk-installer-plugin/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 45457 bytes .../gradle/wrapper/gradle-wrapper.properties | 7 + ndk-installer-plugin/gradlew | 251 +++++++++++++++++ ndk-installer-plugin/gradlew.bat | 94 +++++++ ndk-installer-plugin/proguard-rules.pro | 2 + ndk-installer-plugin/settings.gradle.kts | 22 ++ .../src/main/AndroidManifest.xml | 42 +++ .../src/main/assets/ndk-cmake.tar.xz | 1 + .../templates/ndk/app/build.gradle.kts.peb | 173 ++++++++++++ .../main/assets/templates/ndk/app/gitignore | 1 + .../templates/ndk/app/proguard-rules.pro | 21 ++ .../ndk/app/src/main/AndroidManifest.xml | 24 ++ .../ndk/app/src/main/cpp/CMakeLists.txt | 9 + .../ndk/app/src/main/cpp/native-lib.cpp.peb | 9 + .../java/PACKAGE_NAME/MainActivity.java.peb | 38 +++ .../java/PACKAGE_NAME/MainActivity.kt.peb | 42 +++ .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++ .../main/res/drawable/ic_launcher_round.webp | Bin 0 -> 6916 bytes .../app/src/main/res/layout/activity_main.xml | 17 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 5942 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 3248 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 3402 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1900 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 8562 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 4480 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 14748 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 6916 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values-night/colors.xml | 2 + .../app/src/main/res/values-night/themes.xml | 9 + .../ndk/app/src/main/res/values/colors.xml | 2 + .../app/src/main/res/values/strings.xml.peb | 5 + .../ndk/app/src/main/res/values/themes.xml | 9 + .../ndk/app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 ++ .../assets/templates/ndk/build.gradle.kts.peb | 9 + .../src/main/assets/templates/ndk/gitignore | 83 ++++++ .../assets/templates/ndk/gradle.properties | 23 ++ .../ndk/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes .../wrapper/gradle-wrapper.properties.peb | 6 + .../src/main/assets/templates/ndk/gradlew | 252 ++++++++++++++++++ .../templates/ndk/settings.gradle.kts.peb | 19 ++ .../templates/ndk/template/template.json | 27 ++ .../assets/templates/ndk/template/thumb.png | Bin 0 -> 2984 bytes .../ndkinstaller/NdkInstallerPlugin.kt | 176 ++++++++++++ 52 files changed, 1777 insertions(+) create mode 100644 ndk-installer-plugin/.gitignore create mode 100644 ndk-installer-plugin/build.gradle.kts create mode 100644 ndk-installer-plugin/gradle.properties create mode 100755 ndk-installer-plugin/gradle/wrapper/gradle-wrapper.jar create mode 100644 ndk-installer-plugin/gradle/wrapper/gradle-wrapper.properties create mode 100755 ndk-installer-plugin/gradlew create mode 100644 ndk-installer-plugin/gradlew.bat create mode 100644 ndk-installer-plugin/proguard-rules.pro create mode 100644 ndk-installer-plugin/settings.gradle.kts create mode 100644 ndk-installer-plugin/src/main/AndroidManifest.xml create mode 100644 ndk-installer-plugin/src/main/assets/ndk-cmake.tar.xz create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/build.gradle.kts.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/gitignore create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/proguard-rules.pro create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/AndroidManifest.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/CMakeLists.txt create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/native-lib.cpp.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.java.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.kt.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_round.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/layout/activity_main.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/colors.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/themes.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values/colors.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values/strings.xml.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values/themes.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/xml/backup_rules.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/build.gradle.kts.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/gitignore create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/gradle.properties create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/gradle/wrapper/gradle-wrapper.jar create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/gradle/wrapper/gradle-wrapper.properties.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/gradlew create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/settings.gradle.kts.peb create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/template/template.json create mode 100644 ndk-installer-plugin/src/main/assets/templates/ndk/template/thumb.png create mode 100644 ndk-installer-plugin/src/main/kotlin/com/codeonthego/ndkinstaller/NdkInstallerPlugin.kt diff --git a/ndk-installer-plugin/.gitignore b/ndk-installer-plugin/.gitignore new file mode 100644 index 00000000..6af499b7 --- /dev/null +++ b/ndk-installer-plugin/.gitignore @@ -0,0 +1,29 @@ +# Gradle +.gradle/ +build/ +gradle-app.setting +!gradle-wrapper.jar +.gradletasknamecache + +# IDE +.idea/ +*.iml +*.ipr +*.iws +.project +.classpath +.settings/ +.kotlin/ + +# Local configuration +local.properties + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log + +# Test outputs +test-results/ diff --git a/ndk-installer-plugin/build.gradle.kts b/ndk-installer-plugin/build.gradle.kts new file mode 100644 index 00000000..d06c4566 --- /dev/null +++ b/ndk-installer-plugin/build.gradle.kts @@ -0,0 +1,128 @@ +import java.net.URL +import java.security.MessageDigest +import java.net.HttpURLConnection + +plugins { + id("com.android.application") version "8.8.2" + id("org.jetbrains.kotlin.android") version "2.1.21" + id("com.itsaky.androidide.plugins.build") +} + +pluginBuilder { + pluginName = "ndk-installer" +} + +android { + namespace = "com.codeonthego.ndkinstaller" + compileSdk = 34 + + defaultConfig { + applicationId = "com.codeonthego.ndkinstaller" + minSdk = 26 + targetSdk = 34 + versionCode = 1 + versionName = "1.0.0" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + + androidResources { + noCompress += listOf("xz") + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = "17" + } + + sourceSets["main"].assets.srcDir( + layout.buildDirectory.dir("generated/assets") + ) + +} + +dependencies { + compileOnly(project(":plugin-api")) + + implementation("org.jetbrains.kotlin:kotlin-stdlib:2.1.21") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") +} + +fun httpDownload(url: String): ByteArray { + val connection = URL(url).openConnection() as HttpURLConnection + connection.instanceFollowRedirects = true + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)") + connection.connectTimeout = 15000 + connection.readTimeout = 30000 + + val code = connection.responseCode + if (code != 200) { + throw GradleException("Failed to download $url (HTTP $code)") + } + + return connection.inputStream.use { it.readBytes() } +} + +fun md5Of(file: File): String { + val md = MessageDigest.getInstance("MD5") + file.inputStream().use { input -> + val buffer = ByteArray(8192) + var read: Int + while (input.read(buffer).also { read = it } != -1) { + md.update(buffer, 0, read) + } + } + return md.digest().joinToString("") { "%02x".format(it) } +} + +val downloadAssets by tasks.registering { + val assetsDir = project.file("src/main/assets") + val archiveFile = assetsDir.resolve("ndk-cmake.tar.xz") + val md5File = assetsDir.resolve("ndk-cmake.tar.xz.md5") + + outputs.files(archiveFile) + + doLast { + assetsDir.mkdirs() + + val archiveUrl = "https://www.appdevforall.org/dev-assets/release/v8/ndk-cmake.tar.xz" + val md5Url = "https://www.appdevforall.org/dev-assets/release/v8/ndk-cmake.tar.xz.md5" + + logger.info("Downloading archive....") + val archiveBytes = httpDownload(archiveUrl) + archiveFile.writeBytes(archiveBytes) + + logger.info("Downloading MD5…") + val md5Bytes = httpDownload(md5Url) + md5File.writeBytes(md5Bytes) + + val expected = md5File.readText().trim() + val actual = md5Of(archiveFile) + + logger.info("Expected MD5: $expected") + logger.info("Actual MD5: $actual") + + md5File.delete() + + if (!expected.equals(actual, ignoreCase = true)) { + throw GradleException("MD5 checksum mismatch for ndk-cmake.tar.xz") + } + + } +} + + + + + + + diff --git a/ndk-installer-plugin/gradle.properties b/ndk-installer-plugin/gradle.properties new file mode 100644 index 00000000..2e113229 --- /dev/null +++ b/ndk-installer-plugin/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +android.useAndroidX=true +android.nonTransitiveRClass=true diff --git a/ndk-installer-plugin/gradle/wrapper/gradle-wrapper.jar b/ndk-installer-plugin/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000000000000000000000000000000000000..8bdaf60c75ab801e22807dde59e12a8735a34077 GIT binary patch literal 45457 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 c82=K%QXLKFx%@O{wJjEi6Y56o#$)Bpeg literal 0 HcmV?d00001 diff --git a/ndk-installer-plugin/gradle/wrapper/gradle-wrapper.properties b/ndk-installer-plugin/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..df97d72b --- /dev/null +++ b/ndk-installer-plugin/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/ndk-installer-plugin/gradlew b/ndk-installer-plugin/gradlew new file mode 100755 index 00000000..ef07e016 --- /dev/null +++ b/ndk-installer-plugin/gradlew @@ -0,0 +1,251 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH="\\\"\\\"" + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + 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 + if ! command -v java >/dev/null 2>&1 + then + 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 +fi + +# Increase the maximum file descriptors if we can. +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=SC2039,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=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# 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"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/ndk-installer-plugin/gradlew.bat b/ndk-installer-plugin/gradlew.bat new file mode 100644 index 00000000..5eed7ee8 --- /dev/null +++ b/ndk-installer-plugin/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +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% + +@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" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH= + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/ndk-installer-plugin/proguard-rules.pro b/ndk-installer-plugin/proguard-rules.pro new file mode 100644 index 00000000..b2737a13 --- /dev/null +++ b/ndk-installer-plugin/proguard-rules.pro @@ -0,0 +1,2 @@ +-keep class com.codeonthego.ndkinstaller.** { *; } +-keep class com.itsaky.androidide.plugins.** { *; } diff --git a/ndk-installer-plugin/settings.gradle.kts b/ndk-installer-plugin/settings.gradle.kts new file mode 100644 index 00000000..404900f6 --- /dev/null +++ b/ndk-installer-plugin/settings.gradle.kts @@ -0,0 +1,22 @@ +rootProject.name = "ndk-installer-plugin" + +pluginManagement { + includeBuild("../../CodeOnTheGo/plugin-api/plugin-builder") + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) + repositories { + mavenCentral() + google() + gradlePluginPortal() + } +} + +include(":plugin-api") +project(":plugin-api").projectDir = file("../../CodeOnTheGo/plugin-api") diff --git a/ndk-installer-plugin/src/main/AndroidManifest.xml b/ndk-installer-plugin/src/main/AndroidManifest.xml new file mode 100644 index 00000000..e24e3705 --- /dev/null +++ b/ndk-installer-plugin/src/main/AndroidManifest.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ndk-installer-plugin/src/main/assets/ndk-cmake.tar.xz b/ndk-installer-plugin/src/main/assets/ndk-cmake.tar.xz new file mode 100644 index 00000000..de3d0277 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/ndk-cmake.tar.xz @@ -0,0 +1 @@ + diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/build.gradle.kts.peb b/ndk-installer-plugin/src/main/assets/templates/ndk/app/build.gradle.kts.peb new file mode 100644 index 00000000..1c4e1b3d --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/build.gradle.kts.peb @@ -0,0 +1,173 @@ +import java.util.Properties +import java.io.FileInputStream + +plugins { +id("com.android.application") version "${{AGP_VERSION}}" +${% if LANGUAGE == 'kotlin' %} + kotlin("android") version "${{KOTLIN_VERSION}}" +${% endif %} +} + +val keystorePropsFile = rootProject.file("release.properties") +val keystoreProps = Properties() + +if (keystorePropsFile.exists()) { + keystoreProps.load(FileInputStream(keystorePropsFile)) +} + +val hasValidSigningProps = keystorePropsFile.exists().also { exists -> + if (exists) { + FileInputStream(keystorePropsFile).use { keystoreProps.load(it) } + } +}.let { + listOf("storeFile", "storePassword", + "keyAlias", "keyPassword").all { key -> + keystoreProps[key] != null + } +} + + +android { + namespace = "${{PACKAGE_NAME}}" + compileSdk = ${{COMPILE_SDK}} + + + // disable linter + lint { + checkReleaseBuilds = false + } + + signingConfigs { + if (hasValidSigningProps) { + create("release") { + storeFile = rootProject.file(keystoreProps["storeFile"] as String) + storePassword = keystoreProps["storePassword"] as String + keyAlias = keystoreProps["keyAlias"] as String + keyPassword = keystoreProps["keyPassword"] as String + } + } + } + + defaultConfig { + applicationId = "${{PACKAGE_NAME}}" + minSdk = ${{MIN_SDK}} + targetSdk = ${{TARGET_SDK}} + versionCode = 1 + versionName = "1.0" + + vectorDrawables { + useSupportLibrary = true + } + + ndk { + abiFilters += "arm64-v8a" + } + + externalNativeBuild { + cmake { + cppFlags += "-std=c++17" + } + } + } + + ndkVersion = "29.0.14206865" + + externalNativeBuild { + cmake { + path = file("src/main/cpp/CMakeLists.txt") + } + } + + compileOptions { + sourceCompatibility = ${{JAVA_SOURCE_COMPAT}} + targetCompatibility = ${{JAVA_TARGET_COMPAT}} + } + + buildTypes { + release { + if (hasValidSigningProps) { + signingConfig = signingConfigs.getByName("release") + } + isMinifyEnabled = true + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + + buildFeatures { + viewBinding = true + + } + composeOptions { + kotlinCompilerExtensionVersion = "1.5.10" + } + packaging { + resources { + resources.excludes.add("/META-INF/{AL2.0,LGPL2.1}") + resources.excludes.add("META-INF/kotlinx_coroutines_core.version") + + // The part below is only needed for compose builds. + // This packaging block is required to solve interdependency conflicts. + // They arise only when using local maven repo, so I suppose online repos have some way of solving such issues. + + // Caused by: com.android.builder.merge.DuplicateRelativeFileException: 4 files found with path 'commonMain/default/linkdata/module' from inputs: + // - AndroidIDE\libs_source\gradle\localMvnRepository\androidx\collection\collection\1.4.2\collection-1.4.2.jar + // - AndroidIDE\libs_source\gradle\localMvnRepository\androidx\lifecycle\lifecycle-common\2.8.7\lifecycle-common-2.8.7.jar + // - AndroidIDE\libs_source\gradle\localMvnRepository\androidx\annotation\annotation\1.8.1\annotation-1.8.1.jar + // - AndroidIDE\libs_source\gradle\localMvnRepository\org\jetbrains\kotlinx\kotlinx-coroutines-core\1.7.3\kotlinx-coroutines-core-1.7.3.jar + // And some others. + resources.pickFirsts.add("nonJvmMain/default/linkdata/package_androidx/0_androidx.knm") + resources.pickFirsts.add("nonJvmMain/default/linkdata/root_package/0_.knm") + resources.pickFirsts.add("nonJvmMain/default/linkdata/module") + + resources.pickFirsts.add("nativeMain/default/linkdata/root_package/0_.knm") + resources.pickFirsts.add("nativeMain/default/linkdata/module") + + resources.pickFirsts.add("commonMain/default/linkdata/root_package/0_.knm") + resources.pickFirsts.add("commonMain/default/linkdata/module") + resources.pickFirsts.add("commonMain/default/linkdata/package_androidx/0_androidx.knm") + + resources.pickFirsts.add("META-INF/kotlin-project-structure-metadata.json") + + resources.merges.add("commonMain/default/manifest") + resources.merges.add("nonJvmMain/default/manifest") + resources.merges.add("nativeMain/default/manifest") + } + } + + configurations.all { + resolutionStrategy { + // Force the use of Kotlin stdlib 1.9.22 for all modules + force("org.jetbrains.kotlin:kotlin-stdlib:1.9.22") + force("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22") + force("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.22") + + // Force specific AndroidX versions to avoid conflicts + force("androidx.collection:collection:1.4.2") + force("androidx.annotation:annotation:1.8.1") + force("androidx.core:core-ktx:1.8.0") + force("androidx.lifecycle:lifecycle-runtime-ktx:2.3.1") + force("androidx.collection:collection-ktx:1.4.2") + } + } +} + +tasks.withType { + options.compilerArgs.add("-Xlint:deprecation") +} + + +${% if LANGUAGE == 'kotlin' %} + tasks.withType().configureEach { + kotlinOptions.jvmTarget = "${{JAVA_TARGET}}" + } +${% endif %} + +dependencies { + + + implementation("androidx.interpolator:interpolator:1.0.0") + implementation("androidx.startup:startup-runtime:1.1.1") + implementation("com.google.android.material:material:1.9.0") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") + implementation("androidx.appcompat:appcompat:1.6.1") +} \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/gitignore b/ndk-installer-plugin/src/main/assets/templates/ndk/app/gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/proguard-rules.pro b/ndk-installer-plugin/src/main/assets/templates/ndk/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/AndroidManifest.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..71959e89 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/AndroidManifest.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/CMakeLists.txt b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/CMakeLists.txt new file mode 100644 index 00000000..ac9cf262 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.10.2) + +project("ndkactivitykotlin") + +add_library(native-lib SHARED native-lib.cpp) + +find_library(log-lib log) + +target_link_libraries(native-lib ${log-lib}) \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/native-lib.cpp.peb b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/native-lib.cpp.peb new file mode 100644 index 00000000..2bc61346 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/cpp/native-lib.cpp.peb @@ -0,0 +1,9 @@ +#include +#include + +extern "C" JNIEXPORT jstring JNICALL +Java_${{ PACKAGE_NAME | replace({".": "_"}) }}_MainActivity_stringFromJNI( + JNIEnv* env, + jobject /* this */) { + return env->NewStringUTF("Hello from C++"); +} diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.java.peb b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.java.peb new file mode 100644 index 00000000..c12c581d --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.java.peb @@ -0,0 +1,38 @@ + +package ${{PACKAGE_NAME}}; + +import androidx.appcompat.app.AppCompatActivity; +import android.os.Bundle; +import ${{PACKAGE_NAME}}.databinding.ActivityMainBinding; + +public class MainActivity extends AppCompatActivity { + private ActivityMainBinding binding; + + // Load the native library + static { + System.loadLibrary("native-lib"); + } + + // Declare the native method + public native String stringFromJNI(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Inflate and get instance of binding + binding = ActivityMainBinding.inflate(getLayoutInflater()); + + // set content view to binding's root + setContentView(binding.getRoot()); + + // Call JNI method and display result + binding.textView.setText(stringFromJNI()); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + this.binding = null; + } +} diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.kt.peb b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.kt.peb new file mode 100644 index 00000000..c359f767 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/java/PACKAGE_NAME/MainActivity.kt.peb @@ -0,0 +1,42 @@ + +package ${{PACKAGE_NAME}} + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import ${{PACKAGE_NAME}}.databinding.ActivityMainBinding + +class MainActivity : AppCompatActivity() { + + private var _binding: ActivityMainBinding? = null + + private val binding: ActivityMainBinding + get() = checkNotNull(_binding) { "Activity has been destroyed" } + + // Declare the native method + private external fun stringFromJNI(): String + + // Load the native library + companion object { + init { + System.loadLibrary("native-lib"); + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // Inflate and get instance of binding + _binding = ActivityMainBinding.inflate(layoutInflater) + + // set content view to binding's root + setContentView(binding.root) + + // Call JNI method and display result + binding.textView.text = stringFromJNI() + } + + override fun onDestroy() { + super.onDestroy() + _binding = null + } +} diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_background.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_round.webp b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/drawable/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..ead67900d6669d284cf96727a714b203eabaf339 GIT binary patch literal 6916 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 + + + + \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..eca70cfe --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..d7bb5af9420a2ae01c193a3525297cbe0f616dfe GIT binary patch literal 5942 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 literal 0 HcmV?d00001 diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..bc9b71e29b3f7d999e5d7058c1d16c343a092757 GIT binary patch literal 3248 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 SnO=z%!Av}p|DG8CpZ*urmXrAa literal 0 HcmV?d00001 diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..ead67900d6669d284cf96727a714b203eabaf339 GIT binary patch literal 6916 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

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/colors.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/colors.xml new file mode 100644 index 00000000..a6b3daec --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/colors.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/themes.xml b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..e8f677b8 --- /dev/null +++ b/ndk-installer-plugin/src/main/assets/templates/ndk/app/src/main/res/values-night/themes.xml @@ -0,0 +1,9 @@ + + + + + + +