Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 43 additions & 52 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
name: Android Build

permissions:
contents: write

on:
workflow_dispatch:
push:
Expand All @@ -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)
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

Expand All @@ -62,21 +70,21 @@ jobs:
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: "temurin"
distribution: temurin
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- 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
Expand All @@ -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"
75 changes: 75 additions & 0 deletions app/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">Kernel Flasher</string>
<string name="root_required">Root erişimi gerekli</string>
<string name="root_service_disconnected">Root hizmetinin bağlantısı kesildi</string>
<string name="device">Cihaz</string>
<string name="model">Model</string>
<string name="build_number">Derleme numarası</string>
<string name="kernel_name" tools:keep="@string/kernel_name">Kernel adı</string>
<string name="kernel_version">Kernel sürümü</string>
<string name="slot_suffix">Slot soneki</string>
<string name="slot" tools:ignore="MissingTranslation">Slot</string>
<string name="slot_a">A slotu</string>
<string name="slot_b">B slotu</string>
<string name="boot_sha1" tools:ignore="Typos">Boot SHA1</string>
<string name="vendor_dlkm">Vendor DLKM</string>
<string name="exists">Mevcut</string>
<string name="not_found">Bulunamadı</string>
<string name="mounted">Bağlı</string>
<string name="unmounted">Bağlı değil</string>
<string name="view">Görüntüle</string>
<string name="backups">Yedekler</string>
<string name="save_ramoops">ramoops\'u kaydet</string>
<string name="save_dmesg">dmesg\'i kaydet</string>
<string name="save_logcat">logcat\'i kaydet</string>
<string name="back">Geri</string>
<string name="backup">Yedekle</string>
<string name="updates">Güncellemeler</string>
<string name="flash">Flaşla</string>
<string name="flash_mkbootfs">mkbootfs kullanarak flaşla</string>
<string name="flash_ak3_zip">AK3 ZIP\'ini flaşla</string>
<string name="flash_ak3_zip_mkbootfs">mkbootfs kullanarak AK3 ZIP\'ini flaşla</string>
<string name="flash_partition_image">Bölüm imajını flaşla</string>
<string name="flash_ksu_lkm">KernelSU LKM sürücüsünü flaşla</string>
<string name="restore">Geri yükle</string>
<string name="check_kernel_version">Kernel sürümünü kontrol et</string>
<string name="mount_vendor_dlkm">Vendor DLKM\'yi bağla</string>
<string name="unmount_vendor_dlkm">Vendor DLKM bağlantısını kaldır</string>
<string name="map_vendor_dlkm">Vendor DLKM\'yi eşle</string>
<string name="unmap_vendor_dlkm">Vendor DLKM eşlemesini kaldır</string>
<string name="migrate">Taşı</string>
<string name="no_backups_found">Yedek bulunamadı</string>
<string name="delete">Sil</string>
<string name="add">Ekle</string>
<string name="url">URL</string>
<string name="version">Sürüm</string>
<string name="date_released">Yayınlanma tarihi</string>
<string name="last_updated">Son güncelleme</string>
<string name="changelog">Değişiklik günlüğü</string>
<string name="check_for_updates">Güncellemeleri kontrol et</string>
<string name="download">İndir</string>
<string name="reboot">Yeniden başlat</string>
<string name="reboot_userspace">Yumuşak yeniden başlat</string>
<string name="reboot_recovery">Recovery\'ye yeniden başlat</string>
<string name="reboot_bootloader">Bootloader\'a yeniden başlat</string>
<string name="reboot_download">Download moduna yeniden başlat</string>
<string name="reboot_edl">EDL\'ye yeniden başlat</string>
<string name="save_ak3_log">AK3 günlüğünü kaydet</string>
<string name="save_flash_log">Flaşlama günlüğünü kaydet</string>
<string name="save_backup_log">Yedekleme günlüğünü kaydet</string>
<string name="save_restore_log" tools:keep="@string/save_restore_log">Geri yükleme günlüğünü kaydet</string>
<string name="save_ak3_zip_as_backup">AK3 ZIP\'ini yedek olarak kaydet</string>
<string name="backup_type">Yedek türü</string>
<string name="hashes">Hash değerleri</string>
<string name="partition_selection_unavailable">Eski yedeklerde bölüm seçimi kullanılamıyor</string>
<string name="boot_fmt">boot.img biçimi</string>
<string name="init_boot_fmt">init_boot.img biçimi</string>
<string name="ramdisk_fmt">Ramdisk biçimi</string>
<string name="susfs_version">SUSFS sürümü</string>
<string name="backup_now">Seçili bölümleri yedekle</string>
<string name="vendor_boot_fmt">vendor_boot.img biçimi</string>
<string name="active">Etkin</string>
<string name="unbootable">Boot edilemez</string>
<string name="successful">Başarılı</string>
<!-- TODO: Make error and success messages string resources -->
</resources>