From 1cddbd967749487a36f903d7bcfcd3492ac88101 Mon Sep 17 00:00:00 2001 From: MrRaita Date: Sat, 19 Sep 2026 09:03:05 +0300 Subject: [PATCH 1/5] Add Turkish localization --- app/src/main/res/values-tr/strings.xml | 75 ++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 app/src/main/res/values-tr/strings.xml diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml new file mode 100644 index 00000000..97882186 --- /dev/null +++ b/app/src/main/res/values-tr/strings.xml @@ -0,0 +1,75 @@ + + Kernel Flasher + Root erişimi gerekli + Root hizmetinin bağlantısı kesildi + Cihaz + Model + Derleme numarası + Kernel adı + Kernel sürümü + Slot soneki + Slot + A slotu + B slotu + Boot SHA1 + Vendor DLKM + Mevcut + Bulunamadı + Bağlı + Bağlı değil + Görüntüle + Yedekler + ramoops\'u kaydet + dmesg\'i kaydet + logcat\'i kaydet + Geri + Yedekle + Güncellemeler + Flaşla + mkbootfs kullanarak flaşla + AK3 ZIP\'ini flaşla + mkbootfs kullanarak AK3 ZIP\'ini flaşla + Bölüm imajını flaşla + KernelSU LKM sürücüsünü flaşla + Geri yükle + Kernel sürümünü kontrol et + Vendor DLKM\'yi bağla + Vendor DLKM bağlantısını kaldır + Vendor DLKM\'yi eşle + Vendor DLKM eşlemesini kaldır + Taşı + Yedek bulunamadı + Sil + Ekle + URL + Sürüm + Yayınlanma tarihi + Son güncelleme + Değişiklik günlüğü + Güncellemeleri kontrol et + İndir + Yeniden başlat + Yumuşak yeniden başlat + Recovery\'ye yeniden başlat + Bootloader\'a yeniden başlat + Download moduna yeniden başlat + EDL\'ye yeniden başlat + AK3 günlüğünü kaydet + Flaşlama günlüğünü kaydet + Yedekleme günlüğünü kaydet + Geri yükleme günlüğünü kaydet + AK3 ZIP\'ini yedek olarak kaydet + Yedek türü + Hash değerleri + Eski yedeklerde bölüm seçimi kullanılamıyor + boot.img biçimi + init_boot.img biçimi + Ramdisk biçimi + SUSFS sürümü + Seçili bölümleri yedekle + vendor_boot.img biçimi + Etkin + Boot edilemez + Başarılı + + From 6a18e42cff96c1a4da32205070340d5e49fd5c48 Mon Sep 17 00:00:00 2001 From: MrRaita Date: Sun, 20 Sep 2026 08:41:52 +0300 Subject: [PATCH 2/5] Add Appknox security testing workflow This workflow integrates Appknox for mobile application security testing on push and pull request events to the 'allow-errors' branch. --- .github/workflows/appknox.yml | 54 +++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/appknox.yml diff --git a/.github/workflows/appknox.yml b/.github/workflows/appknox.yml new file mode 100644 index 00000000..fe1a7c51 --- /dev/null +++ b/.github/workflows/appknox.yml @@ -0,0 +1,54 @@ +# This workflow uses actions that are not certified by GitHub. They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support documentation. +# +# Appknox: Leader in Mobile Application Security Testing Solutions +# +# To use this workflow, you must be an existing Appknox customer with GitHub Advanced Security (GHAS) enabled for your +# repository. +# +# If you *are not* an existing customer, click here to contact us for licensing and pricing details: +# . +# +# Instructions: +# +# 1. In your repository settings, navigate to 'Secrets' and click on 'New repository secret.' Name the +# secret APPKNOX_ACCESS_TOKEN and paste your appknox user token into the value field. If you don't have a appknox token +# or need to generate a new one for GitHub, visit the Appknox Platform, go to Account Settings->Developer Settings +# and create a token labeled GitHub +# +# 2. Refer to the detailed workflow below, make any required adjustments, and then save it to your repository. After the +# action executes, check the 'Security' tab for results + +name: Appknox + +on: + push: + branches: [ "allow-errors" ] + pull_request: + branches: [ "allow-errors" ] +jobs: + appknox: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build the app + run: ./gradlew build # Update this to build your Android or iOS application + + - name: Appknox GitHub action + uses: appknox/appknox-github-action@b7d2bfb2321d5544e97bffcba48557234ab953a4 + with: + appknox_access_token: ${{ secrets.APPKNOX_ACCESS_TOKEN }} + file_path: app/build/outputs/apk/debug/app-debug.apk # Specify the path to your .ipa or .apk here + risk_threshold: MEDIUM # Update this to desired risk threshold [LOW, MEDIUM, HIGH, CRITICAL] + sarif: Enable + + - name: Upload SARIF to GHAS + if: always() + uses: github/codeql-action/upload-sarif@v3 + with: + sarif_file: report.sarif From 5753801b7db635cb397d5259b2533c849f996099 Mon Sep 17 00:00:00 2001 From: MrRaita Date: Sun, 20 Sep 2026 08:43:23 +0300 Subject: [PATCH 3/5] Delete .github/workflows/appknox.yml --- .github/workflows/appknox.yml | 54 ----------------------------------- 1 file changed, 54 deletions(-) delete mode 100644 .github/workflows/appknox.yml diff --git a/.github/workflows/appknox.yml b/.github/workflows/appknox.yml deleted file mode 100644 index fe1a7c51..00000000 --- a/.github/workflows/appknox.yml +++ /dev/null @@ -1,54 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support documentation. -# -# Appknox: Leader in Mobile Application Security Testing Solutions -# -# To use this workflow, you must be an existing Appknox customer with GitHub Advanced Security (GHAS) enabled for your -# repository. -# -# If you *are not* an existing customer, click here to contact us for licensing and pricing details: -# . -# -# Instructions: -# -# 1. In your repository settings, navigate to 'Secrets' and click on 'New repository secret.' Name the -# secret APPKNOX_ACCESS_TOKEN and paste your appknox user token into the value field. If you don't have a appknox token -# or need to generate a new one for GitHub, visit the Appknox Platform, go to Account Settings->Developer Settings -# and create a token labeled GitHub -# -# 2. Refer to the detailed workflow below, make any required adjustments, and then save it to your repository. After the -# action executes, check the 'Security' tab for results - -name: Appknox - -on: - push: - branches: [ "allow-errors" ] - pull_request: - branches: [ "allow-errors" ] -jobs: - appknox: - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build the app - run: ./gradlew build # Update this to build your Android or iOS application - - - name: Appknox GitHub action - uses: appknox/appknox-github-action@b7d2bfb2321d5544e97bffcba48557234ab953a4 - with: - appknox_access_token: ${{ secrets.APPKNOX_ACCESS_TOKEN }} - file_path: app/build/outputs/apk/debug/app-debug.apk # Specify the path to your .ipa or .apk here - risk_threshold: MEDIUM # Update this to desired risk threshold [LOW, MEDIUM, HIGH, CRITICAL] - sarif: Enable - - - name: Upload SARIF to GHAS - if: always() - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: report.sarif From 120efa05fcd2116cc2867db6cc35ef6952732955 Mon Sep 17 00:00:00 2001 From: MrRaita Date: Sun, 20 Sep 2026 08:50:25 +0300 Subject: [PATCH 4/5] Handle missing latest tag gracefully --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 13627746..8f6f29d0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: - name: Get Latest Tag run: | - latest_tag=$(git describe --tags --abbrev=0) + latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v1.0.0") echo "LATEST_TAG=${latest_tag}" >> $GITHUB_ENV - name: Count Commits Since Latest Tag From 22b33a25b80c336a1afeae706c47018cc343b4db Mon Sep 17 00:00:00 2001 From: MrRaita Date: Sun, 20 Sep 2026 08:53:22 +0300 Subject: [PATCH 5/5] Enhance Android build workflow with versioning updates Updated build workflow to improve versioning logic and APK renaming. --- .github/workflows/build.yml | 95 +++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f6f29d0..9a2cbdd5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,8 @@ name: Android Build + permissions: contents: write + on: workflow_dispatch: push: @@ -14,43 +16,49 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - fetch-depth: 0 # Important: get all tags! + fetch-depth: 0 - name: Get Latest Tag run: | - latest_tag=$(git describe --tags --abbrev=0 2>/dev/null || echo "v1.0.0") - echo "LATEST_TAG=${latest_tag}" >> $GITHUB_ENV + if latest_tag=$(git describe --tags --abbrev=0 2>/dev/null); then + echo "LATEST_TAG=${latest_tag}" >> "$GITHUB_ENV" + echo "HAS_TAG=true" >> "$GITHUB_ENV" + echo "Latest tag: ${latest_tag}" + else + echo "LATEST_TAG=v1.0.0" >> "$GITHUB_ENV" + echo "HAS_TAG=false" >> "$GITHUB_ENV" + echo "No Git tag found. Using v1.0.0 as the base version." + fi - name: Count Commits Since Latest Tag run: | - # Get the number of commits since the latest tag - commits_since_tag=$(git rev-list ${LATEST_TAG}..HEAD --count) - echo "COMMITS_SINCE_TAG=${commits_since_tag}" >> $GITHUB_ENV + if [ "$HAS_TAG" = "true" ]; then + commits_since_tag=$(git rev-list "${LATEST_TAG}..HEAD" --count) + else + commits_since_tag=0 + fi + + echo "COMMITS_SINCE_TAG=${commits_since_tag}" >> "$GITHUB_ENV" + echo "Commits since latest tag: ${commits_since_tag}" - name: Generate Version run: | - # Extract version components version_base="${LATEST_TAG#v}" - major=$(echo $version_base | cut -d. -f1) - minor=$(echo $version_base | cut -d. -f2) - patch=$(echo $version_base | cut -d. -f3) - - # Increment patch by the number of commits since the last tag - new_patch=$((patch + $COMMITS_SINCE_TAG)) - - # Construct the new version string - new_version="$major.$minor.$new_patch" - - # Calculate the version code (e.g., 1.0.5 -> 10005) + + major=$(echo "$version_base" | cut -d. -f1) + minor=$(echo "$version_base" | cut -d. -f2) + patch=$(echo "$version_base" | cut -d. -f3) + + new_patch=$((patch + COMMITS_SINCE_TAG)) + new_version="${major}.${minor}.${new_patch}" + version_code=$((major * 10000 + minor * 100 + new_patch)) - - # Set environment variables - echo "NEW_VERSION_NAME=${new_version}" >> $GITHUB_ENV - echo "NEW_VERSION_CODE=${version_code}" >> $GITHUB_ENV + + echo "NEW_VERSION_NAME=${new_version}" >> "$GITHUB_ENV" + echo "NEW_VERSION_CODE=${version_code}" >> "$GITHUB_ENV" - name: Update build.gradle.kts with new version code and version name run: | - # Update versionCode and versionName in build.gradle sed -i "s/versionCode [0-9]\+/versionCode ${NEW_VERSION_CODE}/" app/build.gradle.kts sed -i "s/versionName \"[^\"]*\"/versionName \"${NEW_VERSION_NAME}\"/" app/build.gradle.kts @@ -62,7 +70,7 @@ jobs: - name: Set up JDK 21 uses: actions/setup-java@v4 with: - distribution: "temurin" + distribution: temurin java-version: 21 - name: Setup Gradle @@ -70,13 +78,13 @@ jobs: - name: Build with Gradle run: | - chmod +x ./gradlew + chmod +x ./gradlew ./gradlew assembleRelease tree app/build/outputs/apk/release - - uses: r0adkll/sign-android-release@v1.0.4 - name: Sign app APK - if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' || github.event_name == 'workflow_dispatch' + - name: Sign app APK + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository + uses: r0adkll/sign-android-release@v1.0.4 id: sign_app with: releaseDirectory: app/build/outputs/apk/release @@ -87,38 +95,21 @@ jobs: env: BUILD_TOOLS_VERSION: "35.0.0" - - name: Rename APK - if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' || github.event_name == 'workflow_dispatch' + - name: Rename Signed APK + if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository run: | ls -al app/build/outputs/apk/release - echo "Signed APK: ${{steps.sign_app.outputs.signedReleaseFile}}" - cp ${{steps.sign_app.outputs.signedReleaseFile}} KernelFlasher_${{ env.NEW_VERSION_CODE }}.apk + echo "Signed APK: ${{ steps.sign_app.outputs.signedReleaseFile }}" + cp "${{ steps.sign_app.outputs.signedReleaseFile }}" "KernelFlasher_${{ env.NEW_VERSION_CODE }}.apk" - - name: Rename APK - if: github.repository != github.event.pull_request.head.repo.full_name && github.event_name == 'pull_request' + - name: Rename Unsigned APK + if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository run: | ls -al app/build/outputs/apk/release - cp ./app/build/outputs/apk/release/app-release-unsigned.apk KernelFlasher_${{ env.NEW_VERSION_CODE }}.apk + cp ./app/build/outputs/apk/release/app-release-unsigned.apk "KernelFlasher_${{ env.NEW_VERSION_CODE }}.apk" - name: Upload APK uses: actions/upload-artifact@v4.3.5 with: name: KernelFlasher_${{ env.NEW_VERSION_CODE }} path: KernelFlasher_${{ env.NEW_VERSION_CODE }}.apk - - # - name: Rename apk - # run: | - # ls -al - # DATE=$(date +'%y.%m.%d') - # echo "TAG=$DATE" >> $GITHUB_ENV - -# - name: Upload release -# uses: ncipollo/release-action@v1.14.0 -# with: -# allowUpdates: true -# removeArtifacts: true -# name: "1.${{ github.run_number }}.0" -# tag: "v1.${{ github.run_number }}.0" -# body: | -# Note: QMod KernelFlasher, support ksu-lkm -# artifacts: "*.apk"