問題:
接入歸因之前,flutter項(xiàng)目一起正常。接入歸因之后,iOS正常Android有問題。
dependencies:
# Singular歸因
singular_flutter_sdk: ^1.3.3
針對(duì) Flutter 的 Singular SDK 集成指南
https://support.singular.net/hc/zh-cn/articles/4408894547227-%E9%92%88%E5%AF%B9-Flutter-%E7%9A%84-Singular-SDK-%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97
當(dāng)前環(huán)境配置
android/app/build.gradle
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
// 應(yīng)用Google服務(wù)Gradle插件
id 'com.google.gms.google-services'
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
android {
namespace "com.teleprom.www"
// compileSdkVersion是用來編譯你的應(yīng)用的API級(jí)別。它指定了編譯時(shí)使用的Android API版本。你的代碼將會(huì)使用這個(gè)版本的Android API進(jìn)行編譯。它應(yīng)該是你打算使用的最新穩(wěn)定版API版本。
compileSdk flutter.compileSdkVersion
// ndkVersion是指定項(xiàng)目要使用的Android NDK(Native Development Kit)的版本。NDK允許你使用C和C++代碼來編譯本地代碼,通常用于性能敏感的部分。當(dāng)你使用需要NDK的插件或直接編寫本地代碼時(shí),這個(gè)版本就變得重要。
//ndkVersion flutter.ndkVersion
ndkVersion "25.1.8937393"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
applicationId "com.teleprom.www"
// minSdkVersion指定了能夠運(yùn)行你的應(yīng)用的最低Android API級(jí)別。如果一個(gè)設(shè)備的API級(jí)別低于這個(gè)值,該設(shè)備將無法在Google Play商店安裝或運(yùn)行你的應(yīng)用。這個(gè)值應(yīng)該盡可能低,以覆蓋更廣泛的用戶,但同時(shí)要高到足以支持應(yīng)用所需功能的API級(jí)別。
//minSdkVersion flutter.minSdkVersion
minSdkVersion 22
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
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.debug
}
}
}
flutter {
source '../..'
}
dependencies {
// 添加Firebase Analytics依賴
implementation platform('com.google.firebase:firebase-bom:32.7.4') // 使用適合你項(xiàng)目的最新BOM版本
implementation 'com.google.firebase:firebase-analytics'
// 依賴關(guān)系列表中添加 Singular 庫(kù)
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
// 注意: 如果在構(gòu)建時(shí)出現(xiàn)DuplicateClasses(重復(fù)類 )錯(cuò)誤,則可能已經(jīng)安裝了 Google play-services,可以注釋掉該依賴關(guān)系。
implementation 'com.android.installreferrer:installreferrer:2.2'
implementation 'com.google.android.gms:play-services-appset:16.0.2'
}
android/build.gradle
buildscript {
ext.kotlin_version = ''1.9.23'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
settings.gradle
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}
settings.ext.flutterSdkPath = flutterSdkPath()
includeBuild("${settings.ext.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.1.3" apply false
id "org.jetbrains.kotlin.android" version "1.9.23" apply false
// 添加Google服務(wù)插件. apply false 表示該插件不會(huì)立即應(yīng)用到項(xiàng)目中,而是可以在子項(xiàng)目(模塊)中單獨(dú)應(yīng)用。
id 'com.google.gms.google-services' version '4.3.15' apply false
}
include ":app"
gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl = https\://services.gradle.org/distributions/gradle-8.4-bin.zip
運(yùn)行到Android報(bào)錯(cuò)1
報(bào)錯(cuò)日志:
Launching lib/main.dart on vivo X20 in debug mode...
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
A problem occurred configuring project ':singular_flutter_sdk'.
> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
> Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.
If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================
2: Task failed with an exception.
-----------
* What went wrong:
Failed to query the value of property 'buildFlowServiceProperty'.
> Could not isolate value org.jetbrains.kotlin.gradle.plugin.statistics.BuildFlowService$Parameters_Decorated@7d79dba7 of type BuildFlowService.Parameters
> A problem occurred configuring project ':singular_flutter_sdk'.
> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
> Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace.
If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.
==============================================================================
BUILD FAILED in 4s
Error: Gradle task assembleDebug failed with exit code 1
Exited (1).
解決:
按照搜索到的辦法,并非所有包都支持版本 8.xx,將 Android Gridle 插件版本 8.1.3 降級(jí)到 7.4.2 來解決這個(gè)問題。
flutter firebase app not running on Android: Namespace not specified - Stack Overflow
android/build.gradle:
buildscript {
ext.kotlin_version = ''1.8.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
...
settings.gradle
...
plugins {
id "com.android.application" version "7.4.2" apply false
id "org.jetbrains.kotlin.android" version "1.8.0" apply false
...
}
gradle/wrapper/gradle-wrapper.properties
...
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
?
運(yùn)行到Android報(bào)錯(cuò)ERROR:D8: com.android.tools.r8.kotlin.H
修復(fù)完第一個(gè)問題后,運(yùn)行包這個(gè)錯(cuò)誤。
報(bào)錯(cuò)日志:
Launching lib/main.dart on vivo X20 in debug mode...
注: /Users/gamin/.pub-cache/hosted/pub.flutter-io.cn/singular_flutter_sdk-1.3.3/android/src/main/java/com/singular/flutter_sdk/SingularSDK.java使用了未經(jīng)檢查或不安全的操作。
注: 有關(guān)詳細(xì)信息, 請(qǐng)使用 -Xlint:unchecked 重新編譯。
ERROR:D8: com.android.tools.r8.kotlin.H
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeExtDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Failed to transform play-services-measurement-api-21.5.1.aar (com.google.android.gms:play-services-measurement-api:21.5.1) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=22, org.gradle.status=release, org.gradle.usage=java-runtime}.
> Execution failed for DexingWithClasspathTransform: /Users/gamin/.gradle/caches/transforms-3/4e42575ef433f9d8bb5373944a07a9ed/transformed/jetified-play-services-measurement-api-21.5.1-runtime.jar.
> Error while dexing.
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 3m 55s
┌─ Flutter Fix ──────────────────────────────────────────────────────────────┐
│ [!] The shrinker may have failed to optimize the Java bytecode. │
│ To disable the shrinker, pass the `--no-shrink` flag to this command. │
│ To learn more, see: https://developer.android.com/studio/build/shrink-code │
└────────────────────────────────────────────────────────────────────────────┘
Error: Gradle task assembleDebug failed with exit code 1
Exited (1).
解決:
有個(gè)類似問題:https://github.com/flutter/flutter/issues/146038
將最低支持版本從22升級(jí)到24文章來源:http://www.zghlxwxcb.cn/news/detail-851523.html
android/app/build.gradle:文章來源地址http://www.zghlxwxcb.cn/news/detail-851523.html
android {
defaultConfig {
minSdkVersion 24
}
}
到了這里,關(guān)于[Flutter]導(dǎo)入singular_flutter_sdk后運(yùn)行到Android報(bào)錯(cuò)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!