From 215ece2a8e8681ccf71581372cc9d4fe00aec3fd Mon Sep 17 00:00:00 2001 From: o-murphy Date: Fri, 24 Apr 2026 00:07:31 +0300 Subject: [PATCH 01/30] try to build android apk --- .github/workflows/build-apk.yml | 194 ++++++++++++++++++++ packages/bclibc_ffi/lib/ffi/bclibc_ffi.dart | 1 + packages/bclibc_ffi/src/CMakeLists.txt | 24 +++ 3 files changed, 219 insertions(+) create mode 100644 .github/workflows/build-apk.yml create mode 100644 packages/bclibc_ffi/src/CMakeLists.txt diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml new file mode 100644 index 00000000..d8a8f72e --- /dev/null +++ b/.github/workflows/build-apk.yml @@ -0,0 +1,194 @@ +name: PR Build (Android APK) + +on: + pull_request: + branches: [ main, develop ] + paths: + - "lib/**" + - "android/**" + - "external/**" + - "packages/bclibc_ffi/**" + - "pubspec.yaml" + - ".github/workflows/build-apk.yml" + workflow_dispatch: + +env: + FLUTTER_VERSION: "3.41.6" + +jobs: + prepare-version: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.v.outputs.version }} + steps: + - uses: actions/checkout@v4 + - id: v + uses: ./.github/actions/version + + build: + needs: prepare-version + name: Android fat APK (release) + runs-on: ubuntu-latest + outputs: + artifact_name: ${{ steps.meta.outputs.artifact_name }} + artifact_url: ${{ steps.artifact_url.outputs.url }} + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + + - name: Setup Flutter + uses: ./.github/actions/flutter + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + + - name: Accept Android licenses + run: yes | flutter doctor --android-licenses || true + + - name: Set build metadata + id: meta + shell: bash + run: | + BUILD_NAME="${{ needs.prepare-version.outputs.version }}" + BUILD_NAME="${BUILD_NAME#v}" + BUILD_NUMBER="${{ github.run_number }}" + BCLIBC_HASH=$(git -C external/bclibc rev-parse HEAD) + BCLIBC_FFI_HASH=$(git log -1 --format='%H' -- packages/bclibc_ffi 2>/dev/null || echo "unknown") + echo "build_name=$BUILD_NAME" >> $GITHUB_OUTPUT + echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT + echo "bclibc_hash=$BCLIBC_HASH" >> $GITHUB_OUTPUT + echo "bclibc_ffi_hash=$BCLIBC_FFI_HASH" >> $GITHUB_OUTPUT + echo "artifact_name=ebalistyka-android-release-${BUILD_NAME}-${BUILD_NUMBER}" >> $GITHUB_OUTPUT + + - name: Cache pub packages + uses: actions/cache@v4 + with: + path: ${{ env.PUB_CACHE }} + key: pub-android-${{ hashFiles('pubspec.lock') }} + restore-keys: pub-android- + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ hashFiles('android/app/build.gradle.kts', 'android/gradle/wrapper/gradle-wrapper.properties') }} + restore-keys: gradle- + + - name: Cache bclibc NDK build + uses: actions/cache@v4 + with: + path: packages/bclibc_ffi/android/.cxx + key: bclibc-android-${{ steps.meta.outputs.bclibc_hash }}-${{ steps.meta.outputs.bclibc_ffi_hash }} + restore-keys: | + bclibc-android-${{ steps.meta.outputs.bclibc_hash }}- + bclibc-android- + + - name: Install Flutter dependencies + run: | + flutter clean + flutter pub get + + - name: Set pubspec version + run: | + BASE=$(echo "${{ steps.meta.outputs.build_name }}" | sed 's/-.*//') + NUM=${{ steps.meta.outputs.build_number }} + sed -i "s/^version:.*/version: ${BASE}+${NUM}/" pubspec.yaml + echo "pubspec version โ†’ ${BASE}+${NUM}" + + - name: Build APK + run: flutter build apk --release + + - name: Package APK + run: | + mkdir -p artifacts + cp build/app/outputs/flutter-apk/app-release.apk \ + artifacts/ebalistyka_android.apk + + - name: Upload artifact + id: upload + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.meta.outputs.artifact_name }} + path: artifacts/ + retention-days: 30 + if-no-files-found: error + + - name: Generate artifact URL + id: artifact_url + run: | + echo "url=https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}#artifacts" >> $GITHUB_OUTPUT + + pr-summary: + name: PR Build Summary + runs-on: ubuntu-latest + needs: [ build ] + if: always() && github.event_name == 'pull_request' + permissions: + pull-requests: write + issues: write + + steps: + - name: Comment on PR + uses: actions/github-script@v7 + with: + script: | + const prNumber = context.issue.number; + const success = '${{ needs.build.result }}' === 'success'; + const artifactUrl = '${{ needs.build.outputs.artifact_url }}'; + const artifactName = '${{ needs.build.outputs.artifact_name }}'; + const runUrl = `https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}`; + + let body = `## Android APK Build\n\n`; + + if (success) { + body += `โœ… **Build successful!**\n\n`; + if (artifactUrl) { + body += `๐Ÿ“ฆ **[Download APK](${artifactUrl})**\n`; + body += `\`${artifactName}\` โ€” available for 30 days\n\n`; + } + body += `**PR**: #${prNumber} ยท **Commit**: \`${{ github.sha }}\`\n\n`; + body += `### Test Instructions:\n`; + body += `\`\`\`bash\n# Sideload via adb (USB debugging enabled)\nadb install ebalistyka_android.apk\n\`\`\`\n`; + } else { + body += `โŒ **Build failed!**\n\n[View logs](${runUrl})\n`; + } + + try { + const { data: comments } = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + }); + + const existing = comments.find(c => + c.user.type === 'Bot' && c.body.includes('## Android APK Build') + ); + + if (existing) { + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existing.id, + body, + }); + } else { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + body, + }); + } + } catch (error) { + console.log('Error posting comment:', error.message); + } diff --git a/packages/bclibc_ffi/lib/ffi/bclibc_ffi.dart b/packages/bclibc_ffi/lib/ffi/bclibc_ffi.dart index 99cc2bee..197bfd18 100644 --- a/packages/bclibc_ffi/lib/ffi/bclibc_ffi.dart +++ b/packages/bclibc_ffi/lib/ffi/bclibc_ffi.dart @@ -30,6 +30,7 @@ ffi.DynamicLibrary _openLibrary() { } if (Platform.isLinux) return ffi.DynamicLibrary.open(lib('libbclibc_ffi.so')); + if (Platform.isAndroid) return ffi.DynamicLibrary.open('libbclibc_ffi.so'); if (Platform.isWindows) return ffi.DynamicLibrary.open(lib('bclibc_ffi.dll')); if (Platform.isMacOS) { return ffi.DynamicLibrary.open(lib('libbclibc_ffi.dylib')); diff --git a/packages/bclibc_ffi/src/CMakeLists.txt b/packages/bclibc_ffi/src/CMakeLists.txt new file mode 100644 index 00000000..66ce0597 --- /dev/null +++ b/packages/bclibc_ffi/src/CMakeLists.txt @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.13) + +set(PROJECT_NAME "bclibc_ffi") +project(${PROJECT_NAME} LANGUAGES C CXX) + +# packages/bclibc_ffi/src/ โ†’ ../../.. โ†’ project root +get_filename_component(PROJECT_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../.." ABSOLUTE) +set(BCLIBC_ROOT "${PROJECT_ROOT}/external/bclibc") + +message(STATUS "[bclibc_ffi/android] Project root: ${PROJECT_ROOT}") +message(STATUS "[bclibc_ffi/android] bclibc path: ${BCLIBC_ROOT}") + +if(NOT EXISTS "${BCLIBC_ROOT}") + message(FATAL_ERROR "bclibc not found at ${BCLIBC_ROOT}") +endif() + +if(NOT EXISTS "${BCLIBC_ROOT}/CMakeLists.txt") + message(FATAL_ERROR "bclibc CMakeLists.txt not found at ${BCLIBC_ROOT}") +endif() + +add_subdirectory( + "${BCLIBC_ROOT}" + "${CMAKE_CURRENT_BINARY_DIR}/bclibc_ffi_build" +) From 4afee6efb4937cda3773fdffa0469b6860d2596a Mon Sep 17 00:00:00 2001 From: o-murphy Date: Fri, 24 Apr 2026 00:37:44 +0300 Subject: [PATCH 02/30] fix: generate public ca-cert --- scripts/generate-ca.ps1 | 5 ++++- scripts/package-msix.ps1 | 23 +++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/scripts/generate-ca.ps1 b/scripts/generate-ca.ps1 index b1dc029f..0e8eb044 100644 --- a/scripts/generate-ca.ps1 +++ b/scripts/generate-ca.ps1 @@ -21,10 +21,13 @@ $cert = New-SelfSignedCertificate -Type CodeSigningCert ` -KeyLength 2048 ` -NotAfter (Get-Date).AddYears(10) +$cerPath = Join-Path (Resolve-Path ".") "$OutputDir\ebalistyka_cert.cer" $securePassword = ConvertTo-SecureString -String $Password -Force -AsPlainText Export-PfxCertificate -Cert $cert -FilePath $pfxPath -Password $securePassword | Out-Null +Export-Certificate -Cert $cert -FilePath $cerPath -Type CERT | Out-Null -Write-Host "Certificate: $pfxPath" +Write-Host "Certificate (PFX): $pfxPath" +Write-Host "Certificate (CER): $cerPath โ† distribute to users for trust store install" # Export Base64 for CI secrets $pfxBytes = [System.IO.File]::ReadAllBytes($pfxPath) diff --git a/scripts/package-msix.ps1 b/scripts/package-msix.ps1 index 3c5677c3..2bc4351a 100644 --- a/scripts/package-msix.ps1 +++ b/scripts/package-msix.ps1 @@ -98,7 +98,24 @@ if (-not $generated) { $targetName = "ebalistyka_windows_${Arch}.msix" Move-Item $generated.FullName "$msixOut\$targetName" -Write-Host "\nMSIX: $msixOut\$targetName" +Write-Host "MSIX: $msixOut\$targetName" + +# Export public certificate (.cer) so users can install it to Trusted People +# before installing the MSIX (required for self-signed packages) +try { + $certObj = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2( + $CertificatePath, $securePassword, + [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::DefaultKeySet + ) + $cerBytes = $certObj.Export( + [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert + ) + $cerPath = "$msixOut\ebalistyka_cert.cer" + [System.IO.File]::WriteAllBytes($cerPath, $cerBytes) + Write-Host "Certificate: $cerPath" +} catch { + Write-Warning "Could not export .cer: $_" +} # Generate .appinstaller for Windows native auto-update. # Users install via .appinstaller -- Windows checks for updates on each launch. @@ -132,7 +149,9 @@ if ($repo) { ) -join "`r`n" $appinstallerPath = "$msixOut\ebalistyka.appinstaller" - [System.IO.File]::WriteAllText($appinstallerPath, $xml, [System.Text.Encoding]::UTF8) + # UTF-8 without BOM โ€” Windows App Installer rejects BOM-prefixed XML + $utf8NoBom = New-Object System.Text.UTF8Encoding $false + [System.IO.File]::WriteAllText($appinstallerPath, $xml, $utf8NoBom) Write-Host ".appinstaller: $appinstallerPath" } else { Write-Host "No GITHUB_REPO -- skipping .appinstaller" From b16c326b16d00033b265e1b4f03ce97361392334 Mon Sep 17 00:00:00 2001 From: o-murphy Date: Fri, 24 Apr 2026 00:40:07 +0300 Subject: [PATCH 03/30] fix: --split-per-abi --- .github/actions/version/action.yml | 8 ++- .github/workflows/build-apk.yml | 13 +++-- .github/workflows/release.yml | 92 +++++++++++++++++++++++++++++- 3 files changed, 102 insertions(+), 11 deletions(-) diff --git a/.github/actions/version/action.yml b/.github/actions/version/action.yml index f081424b..adc1f192 100644 --- a/.github/actions/version/action.yml +++ b/.github/actions/version/action.yml @@ -3,9 +3,9 @@ description: "Extracts version from tag (v1.2.3 โ†’ 1.2.3) or returns a default inputs: default: - description: "Version to use when not running on a tag" + description: "Fallback version suffix when not running on a tag (ignored if pubspec.yaml is present)" required: false - default: "0.1.0-dev" + default: "dev" outputs: version: @@ -22,7 +22,9 @@ runs: VERSION="${{ github.ref_name }}" [[ "${VERSION}" == v* ]] && VERSION="${VERSION:1}" else - VERSION="${{ inputs.default }}" + # Read base version from pubspec.yaml so non-tag builds reflect current code + PUBSPEC=$(grep '^version:' pubspec.yaml | sed 's/version:[[:space:]]*//' | sed 's/+.*//') + VERSION="${PUBSPEC}-${{ inputs.default }}" fi echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "Resolved version: ${VERSION}" diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml index d8a8f72e..2a5cf3a9 100644 --- a/.github/workflows/build-apk.yml +++ b/.github/workflows/build-apk.yml @@ -71,7 +71,7 @@ jobs: - name: Cache pub packages uses: actions/cache@v4 with: - path: ${{ env.PUB_CACHE }} + path: ${{ runner.temp }}/pub-cache key: pub-android-${{ hashFiles('pubspec.lock') }} restore-keys: pub-android- @@ -106,13 +106,14 @@ jobs: echo "pubspec version โ†’ ${BASE}+${NUM}" - name: Build APK - run: flutter build apk --release + run: flutter build apk --release --split-per-abi - - name: Package APK + - name: Package APKs run: | mkdir -p artifacts - cp build/app/outputs/flutter-apk/app-release.apk \ - artifacts/ebalistyka_android.apk + cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk artifacts/ebalistyka_android_arm64.apk + cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk artifacts/ebalistyka_android_arm32.apk + cp build/app/outputs/flutter-apk/app-x86_64-release.apk artifacts/ebalistyka_android_x86_64.apk - name: Upload artifact id: upload @@ -158,7 +159,7 @@ jobs: } body += `**PR**: #${prNumber} ยท **Commit**: \`${{ github.sha }}\`\n\n`; body += `### Test Instructions:\n`; - body += `\`\`\`bash\n# Sideload via adb (USB debugging enabled)\nadb install ebalistyka_android.apk\n\`\`\`\n`; + body += `\`\`\`bash\n# arm64 (most modern phones)\nadb install ebalistyka_android_arm64.apk\n# arm32 (older phones)\nadb install ebalistyka_android_arm32.apk\n\`\`\`\n`; } else { body += `โŒ **Build failed!**\n\n[View logs](${runUrl})\n`; } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 01a61507..65ea811c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,6 +7,9 @@ on: - 'v[0-9]+.[0-9]+.[0-9]+-*' # v1.2.3-beta โ†’ prerelease workflow_dispatch: +env: + FLUTTER_VERSION: "3.41.6" + jobs: prepare-version: runs-on: ubuntu-latest @@ -50,8 +53,92 @@ jobs: CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }} CERTIFICATE_PASSWORD: ${{ secrets.CERTIFICATE_PASSWORD }} + build-android: + needs: prepare-version + name: Android APKs (release) + runs-on: ubuntu-latest + outputs: + artifact_name: ${{ steps.meta.outputs.artifact_name }} + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + + - name: Setup Flutter + uses: ./.github/actions/flutter + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + + - name: Accept Android licenses + run: yes | flutter doctor --android-licenses || true + + - name: Set build metadata + id: meta + shell: bash + run: | + BUILD_NAME="${{ needs.prepare-version.outputs.version }}" + BUILD_NAME="${BUILD_NAME#v}" + BUILD_NUMBER="${{ github.run_number }}" + echo "build_name=$BUILD_NAME" >> $GITHUB_OUTPUT + echo "build_number=$BUILD_NUMBER" >> $GITHUB_OUTPUT + echo "artifact_name=ebalistyka-android-release-${BUILD_NAME}-${BUILD_NUMBER}" >> $GITHUB_OUTPUT + + - name: Cache pub packages + uses: actions/cache@v4 + with: + path: ${{ runner.temp }}/pub-cache + key: pub-android-${{ hashFiles('pubspec.lock') }} + restore-keys: pub-android- + + - name: Cache Gradle + uses: actions/cache@v4 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: gradle-${{ hashFiles('android/app/build.gradle.kts', 'android/gradle/wrapper/gradle-wrapper.properties') }} + restore-keys: gradle- + + - name: Install Flutter dependencies + run: | + flutter clean + flutter pub get + + - name: Set pubspec version + run: | + BASE=$(echo "${{ steps.meta.outputs.build_name }}" | sed 's/-.*//') + NUM=${{ steps.meta.outputs.build_number }} + sed -i "s/^version:.*/version: ${BASE}+${NUM}/" pubspec.yaml + echo "pubspec version โ†’ ${BASE}+${NUM}" + + - name: Build APKs + run: flutter build apk --release --split-per-abi + + - name: Package APKs + run: | + mkdir -p artifacts + cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk artifacts/ebalistyka_android_arm64.apk + cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk artifacts/ebalistyka_android_arm32.apk + cp build/app/outputs/flutter-apk/app-x86_64-release.apk artifacts/ebalistyka_android_x86_64.apk + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ steps.meta.outputs.artifact_name }} + path: artifacts/ + retention-days: 1 + if-no-files-found: error + release: - needs: [prepare-version, build-linux-amd64, build-linux-arm64, build-windows-amd64] + needs: [prepare-version, build-linux-amd64, build-linux-arm64, build-windows-amd64, build-android] runs-on: ubuntu-latest permissions: contents: write @@ -72,7 +159,8 @@ jobs: -name "*.zsync" -o \ -name "*.zip" -o \ -name "*.msix" -o \ - -name "*.appinstaller" \ + -name "*.appinstaller" -o \ + -name "*.cer" \ \) -exec cp {} release/ \; echo "=== Release assets ===" From 88c61b45e12339027df8a4ac03db88f7cda6e5b8 Mon Sep 17 00:00:00 2001 From: o-murphy Date: Fri, 24 Apr 2026 01:40:22 +0300 Subject: [PATCH 04/30] seems: running on android --- .github/workflows/build-apk.yml | 4 +-- .github/workflows/release.yml | 2 +- .metadata | 25 ++++------------ android/app/build.gradle.kts | 4 +-- android/app/src/main/AndroidManifest.xml | 2 +- .../{test_app => ebalistyka}/MainActivity.kt | 2 +- test/widget_test.dart | 30 +++++++++++++++++++ web/index.html | 3 ++ 8 files changed, 45 insertions(+), 27 deletions(-) rename android/app/src/main/kotlin/com/example/{test_app => ebalistyka}/MainActivity.kt (75%) create mode 100644 test/widget_test.dart diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml index 2a5cf3a9..edfd63ea 100644 --- a/.github/workflows/build-apk.yml +++ b/.github/workflows/build-apk.yml @@ -112,7 +112,7 @@ jobs: run: | mkdir -p artifacts cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk artifacts/ebalistyka_android_arm64.apk - cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk artifacts/ebalistyka_android_arm32.apk + cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk artifacts/ebalistyka_android_armeabi_v7a.apk cp build/app/outputs/flutter-apk/app-x86_64-release.apk artifacts/ebalistyka_android_x86_64.apk - name: Upload artifact @@ -159,7 +159,7 @@ jobs: } body += `**PR**: #${prNumber} ยท **Commit**: \`${{ github.sha }}\`\n\n`; body += `### Test Instructions:\n`; - body += `\`\`\`bash\n# arm64 (most modern phones)\nadb install ebalistyka_android_arm64.apk\n# arm32 (older phones)\nadb install ebalistyka_android_arm32.apk\n\`\`\`\n`; + body += `\`\`\`bash\n# arm64 (most modern phones)\nadb install ebalistyka_android_arm64.apk\n# arm32 (older phones)\nadb install ebalistyka_android_armeabi_v7a.apk\n\`\`\`\n`; } else { body += `โŒ **Build failed!**\n\n[View logs](${runUrl})\n`; } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 65ea811c..1b5e9e7d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,7 +126,7 @@ jobs: run: | mkdir -p artifacts cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk artifacts/ebalistyka_android_arm64.apk - cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk artifacts/ebalistyka_android_arm32.apk + cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk artifacts/ebalistyka_android_armeabi_v7a.apk cp build/app/outputs/flutter-apk/app-x86_64-release.apk artifacts/ebalistyka_android_x86_64.apk - name: Upload artifact diff --git a/.metadata b/.metadata index 89db5de5..a8104ff2 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "ff37bef603469fb030f2b72995ab929ccfc227f0" + revision: "db50e20168db8fee486b9abf32fc912de3bc5b6a" channel: "stable" project_type: app @@ -13,26 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 + create_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a + base_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a - platform: android - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - - platform: ios - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - - platform: linux - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - - platform: macos - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - - platform: web - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - - platform: windows - create_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 - base_revision: ff37bef603469fb030f2b72995ab929ccfc227f0 + create_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a + base_revision: db50e20168db8fee486b9abf32fc912de3bc5b6a # User provided section diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 3b7e9dd9..eb8c1235 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -6,7 +6,7 @@ plugins { } android { - namespace = "com.o.murphy.ebalistyka" + namespace = "com.example.ebalistyka" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion @@ -21,7 +21,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId = "com.o.murphy.ebalistyka" + applicationId = "com.example.ebalistyka" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = flutter.minSdkVersion diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c2a2dcc1..0dfd0cb8 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + +