diff options
Diffstat (limited to 'android')
19 files changed, 251 insertions, 0 deletions
| diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..be3943c --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 0000000..df3a737 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { +    id("com.android.application") +    id("kotlin-android") +    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. +    id("dev.flutter.flutter-gradle-plugin") +} + +android { +    namespace = "de.uvok.badge" +    compileSdk = flutter.compileSdkVersion +    ndkVersion = "27.0.12077973" + +    compileOptions { +        sourceCompatibility = JavaVersion.VERSION_11 +        targetCompatibility = JavaVersion.VERSION_11 +    } + +    kotlinOptions { +        jvmTarget = JavaVersion.VERSION_11.toString() +    } + +    defaultConfig { +        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). +        applicationId = "de.uvok.badge" +        // 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 +        targetSdk = flutter.targetSdkVersion +        versionCode = flutter.versionCode +        versionName = flutter.versionName +    } + +    buildTypes { +        release { +            // TODO: Add your own signing config for the release build. +            // Signing with the debug keys for now, so `flutter run --release` works. +            signingConfig = signingConfigs.getByName("debug") +        } +    } +} + +flutter { +    source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> +    <!-- The INTERNET permission is required for development. Specifically, +         the Flutter tool needs it to communicate with the running application +         to allow setting breakpoints, to provide hot reload, etc. +    --> +    <uses-permission android:name="android.permission.INTERNET"/> +</manifest> diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ab18f26 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,60 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> +    <application +        android:label="badge" +        android:name="${applicationName}" +        android:icon="@mipmap/ic_launcher"> +        <activity +            android:name=".MainActivity" +            android:exported="true" +            android:launchMode="singleTop" +            android:taskAffinity="" +            android:theme="@style/LaunchTheme" +            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" +            android:hardwareAccelerated="true" +            android:windowSoftInputMode="adjustResize"> +            <!-- Specifies an Android theme to apply to this Activity as soon as +                 the Android process has started. This theme is visible to the user +                 while the Flutter UI initializes. After that, this theme continues +                 to determine the Window background behind the Flutter UI. --> +            <meta-data +              android:name="io.flutter.embedding.android.NormalTheme" +              android:resource="@style/NormalTheme" +              /> +            <intent-filter> +                <action android:name="android.intent.action.MAIN"/> +                <category android:name="android.intent.category.LAUNCHER"/> +            </intent-filter> +        </activity> +        <!-- Don't delete the meta-data below. +             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> +        <meta-data +            android:name="flutterEmbedding" +            android:value="2" /> +    </application> +    <!-- Required to query activities that can process text, see: +         https://developer.android.com/training/package-visibility and +         https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT. + +         In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. --> +    <queries> +        <intent> +            <action android:name="android.intent.action.PROCESS_TEXT"/> +            <data android:mimeType="text/plain"/> +        </intent> +    </queries> +<uses-feature android:name="android.hardware.bluetooth_le" android:required="false" /> + +<!-- New Bluetooth permissions in Android 12 +https://developer.android.com/about/versions/12/features/bluetooth-permissions --> +<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" /> +<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> + +<!-- legacy for Android 11 or lower --> +<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> +<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> +<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30"/> + +<!-- legacy for Android 9 or lower --> +<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="28" /> + +</manifest> diff --git a/android/app/src/main/kotlin/de/uvok/badge/MainActivity.kt b/android/app/src/main/kotlin/de/uvok/badge/MainActivity.kt new file mode 100644 index 0000000..54ff11a --- /dev/null +++ b/android/app/src/main/kotlin/de/uvok/badge/MainActivity.kt @@ -0,0 +1,5 @@ +package de.uvok.badge + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Modify this file to customize your launch splash screen --> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> +    <item android:drawable="?android:colorBackground" /> + +    <!-- You can insert your own image assets here --> +    <!-- <item> +        <bitmap +            android:gravity="center" +            android:src="@mipmap/launch_image" /> +    </item> --> +</layer-list> diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Modify this file to customize your launch splash screen --> +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> +    <item android:drawable="@android:color/white" /> + +    <!-- You can insert your own image assets here --> +    <!-- <item> +        <bitmap +            android:gravity="center" +            android:src="@mipmap/launch_image" /> +    </item> --> +</layer-list> diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.pngBinary files differ new file mode 100644 index 0000000..db77bb4 --- /dev/null +++ b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.pngBinary files differ new file mode 100644 index 0000000..17987b7 --- /dev/null +++ b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.pngBinary files differ new file mode 100644 index 0000000..09d4391 --- /dev/null +++ b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.pngBinary files differ new file mode 100644 index 0000000..d5f1c8d --- /dev/null +++ b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.pngBinary files differ new file mode 100644 index 0000000..4d6372e --- /dev/null +++ b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> +    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> +    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> +        <!-- Show a splash screen on the activity. Automatically removed when +             the Flutter engine draws its first frame --> +        <item name="android:windowBackground">@drawable/launch_background</item> +    </style> +    <!-- Theme applied to the Android Window as soon as the process has started. +         This theme determines the color of the Android Window while your +         Flutter UI initializes, as well as behind your Flutter UI while its +         running. + +         This Theme is only used starting with V2 of Flutter's Android embedding. --> +    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> +        <item name="android:windowBackground">?android:colorBackground</item> +    </style> +</resources> diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> +    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> +    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> +        <!-- Show a splash screen on the activity. Automatically removed when +             the Flutter engine draws its first frame --> +        <item name="android:windowBackground">@drawable/launch_background</item> +    </style> +    <!-- Theme applied to the Android Window as soon as the process has started. +         This theme determines the color of the Android Window while your +         Flutter UI initializes, as well as behind your Flutter UI while its +         running. + +         This Theme is only used starting with V2 of Flutter's Android embedding. --> +    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> +        <item name="android:windowBackground">?android:colorBackground</item> +    </style> +</resources> diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..399f698 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> +    <!-- The INTERNET permission is required for development. Specifically, +         the Flutter tool needs it to communicate with the running application +         to allow setting breakpoints, to provide hot reload, etc. +    --> +    <uses-permission android:name="android.permission.INTERNET"/> +</manifest> diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 0000000..89176ef --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,21 @@ +allprojects { +    repositories { +        google() +        mavenCentral() +    } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { +    val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) +    project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { +    project.evaluationDependsOn(":app") +} + +tasks.register<Delete>("clean") { +    delete(rootProject.layout.buildDirectory) +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..f018a61 --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..ac3b479 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 0000000..ab39a10 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,25 @@ +pluginManagement { +    val flutterSdkPath = run { +        val properties = java.util.Properties() +        file("local.properties").inputStream().use { properties.load(it) } +        val flutterSdkPath = properties.getProperty("flutter.sdk") +        require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } +        flutterSdkPath +    } + +    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + +    repositories { +        google() +        mavenCentral() +        gradlePluginPortal() +    } +} + +plugins { +    id("dev.flutter.flutter-plugin-loader") version "1.0.0" +    id("com.android.application") version "8.7.3" apply false +    id("org.jetbrains.kotlin.android") version "2.1.0" apply false +} + +include(":app") | 
