Я новичок в флаттере и создаю приложение для флаттера в рамках школьного проекта. Моя команда и я создаем выпуски ios, android и веб-приложений, и мне поручено создать и подписать мой пакет приложений для выпуска в Google Play. Я смог успешно подписать пакет и загрузить проект. Я не могу протестировать сборку релиза на эмуляторе, но это еще одна проблема, которая может быть связана.
Кстати, теперь у меня проблема с отладкой моего приложения. Перед переименованием и настройкой типа сборки проблем не было, я просто использовал идентификатор приложения по умолчанию и запускал отладчик в VScode. Мое приложение создается успешно (я думаю, потому что у меня нет ошибок), но оно не устанавливается на эмуляторе правильно. Я получаю всплывающее уведомление об эмуляции, что, к сожалению, приложение закрывается. В журналах захвата я вижу «Ожидание доступности порта обсерватории ...».
Сбросил эмулятор, прошился чистым и пересобирался. Я пробовал запустить / очистить / построить в студии android (отладка) безрезультатно.
Вот журналы захвата. Я не включил их все, поскольку кажется, что приложение строится правильно.
A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementReceiver" (Raw: "com.google.android.gms.measurement.AppMeasurementReceiver")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0x0
E: receiver (line=177)
A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver" (Raw: "com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver")
A: android:permission(0x01010006)="android.permission.INSTALL_PACKAGES" (Raw: "android.permission.INSTALL_PACKAGES")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0xffffffff
E: intent-filter (line=182)
E: action (line=183)
A: android:name(0x01010003)="com.android.vending.INSTALL_REFERRER" (Raw: "com.android.vending.INSTALL_REFERRER")
E: service (line=187)
A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementService" (Raw: "com.google.android.gms.measurement.AppMeasurementService")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0x0
E: service (line=191)
A: android:name(0x01010003)="com.google.android.gms.measurement.AppMeasurementJobService" (Raw: "com.google.android.gms.measurement.AppMeasurementJobService")
A: android:permission(0x01010006)="android.permission.BIND_JOB_SERVICE" (Raw: "android.permission.BIND_JOB_SERVICE")
A: android:enabled(0x0101000e)=(type 0x12)0xffffffff
A: android:exported(0x01010010)=(type 0x12)0x0
E: provider (line=197)
A: android:name(0x01010003)="com.google.firebase.provider.FirebaseInitProvider" (Raw: "com.google.firebase.provider.FirebaseInitProvider")
A: android:exported(0x01010010)=(type 0x12)0x0
A: android:authorities(0x01010018)="com.sensationalscience.sensational_science.firebaseinitprovider" (Raw: "com.sensationalscience.sensational_science.firebaseinitprovider")
A: android:initOrder(0x0101001a)=(type 0x10)0x64
E: meta-data (line=203)
A: android:name(0x01010003)="com.google.android.gms.version" (Raw: "com.google.android.gms.version")
A: android:value(0x01010024)=@0x7f080004
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +6 ms] Stopping app 'app.apk' on Android SDK built for x86.
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ ] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am force-stop com.sensationalscience.sensational_science
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +44 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell pm list packages com.sensationalscience.sensational_science
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +215 ms] package:com.sensationalscience.sensational_science
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +2 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell cat /data/local/tmp/sky.com.sensationalscience.sensational_science.sha1
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +24 ms] 2ef7da51e6c1f4f4170671be4372471e59f61ee6
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ ] Installing APK.
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +1 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe version
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +16 ms] Android Debug Bridge version 1.0.41
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== Version 29.0.6-6198805
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== Installed as C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ ] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe start-server
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [{"event":"app.progress","params":{"appId":"bc8e3997-0174-4387-ae07-3b6f69cdc04d","id":"1","progressId":null,"message":"Installing build\\app\\outputs\\apk\\app.apk..."}}]
[12:19:52 PM] [FlutterRun] [Info] [Flutter] <== [ +17 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 install -t -r C:\Users\Lauren\Documents\School\467\sensational_science\build\app\outputs\apk\app.apk
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [+3493 ms] Performing Streamed Install
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== Success
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [{"event":"app.progress","params":{"appId":"bc8e3997-0174-4387-ae07-3b6f69cdc04d","id":"1","progressId":null,"finished":true}}]
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [ +1 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell echo -n cc0ff10c7a448e68c958b5ace7858fca4554ee4e > /data/local/tmp/sky.com.sensationalscience.sensational_science.sha1
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [ +31 ms] Android SDK built for x86 startApp
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [ +2 ms] executing: C:\Users\Lauren\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell am start -a android.intent.action.RUN -f 0x20000000 --ez enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true --ez verify-entry-points true --ez start-paused true com.sensationalscience.sensational_science/com.sensationalscience.sensational_science.MainActivity
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [ +95 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.sensationalscience.sensational_science/.MainActivity (has extras) }
[12:19:56 PM] [FlutterRun] [Info] [Flutter] <== [ ] Waiting for observatory port to be available...
Tue May 05 2020 [12:23:20 GMT-0600 (Mountain Daylight Time)] Log file ended
Вот мой уровень приложения build.gradle. Обратите внимание на мои типы сборки. Я не уверен, что они настроены правильно. Я следил за https://flutter.dev/docs/deployment/android, но их объяснение того, как настроить типы сборки, было ограниченным.
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // connection to firebase
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 28
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
applicationId "com.sensationalscience.sensational_science"
minSdkVersion 16
targetSdkVersion 28
multiDexEnabled true
versionCode = flutterVersionCode.toInteger()
versionName flutterVersionName
}
//**Note in my app I have the correct key info I just replaced the information here.
signingConfigs {
release {
keyAlias keystoreProperties['xx']
keyPassword keystoreProperties['xx']
storeFile keystoreProperties['C:\\Keystore\\xx'] ? file(keystoreProperties['xx']) : null
storePassword keystoreProperties['xx']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
debug {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics:17.2.2' // connect to firebase analytics
implementation 'com.google.firebase:firebase-auth:19.3.0' // connect to firebase authentication
implementation 'com.google.firebase:firebase-firestore:21.4.2' // connect to firebase coud firestore
implementation 'com.android.support:multidex:1.0.3' // allow more than 64k methods with multidex enabling
}
Вот мой android Манифест. Мне интересно, проблема в MainActivy. Я не совсем уверен, где / что именно этот файл, и в конце журналов захвата есть ссылка на него при запуске Intent. ``
package="com.sensationalscience.sensational_science">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="sensational_science"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
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"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Add UCrop Activity for image cropping (MPJ 4/21/20)-->
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
<!-- 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>
Вот мой build.gradle. Я получаю эту ошибку. Не удалось выполнить поэтапную сборку с использованием распределения Gradle «https://services.gradle.org/distributions/gradle-5.6.2-all.zip». Невозможно запустить процесс демона. Эта проблема может быть вызвана неправильной настройкой демона. Например, используется нераспознанный параметр jvm. Обратитесь к главе Руководства пользователя по демону https://docs.gradle.org/5.6.2/userguide/gradle_daemon.html
Командная строка процесса: C: \ Program Files (x86) \ Java \ jdk1.8.0_172 \ bin \ java .exe -Xmx1536M -Dfile.encoding = utf8 -Duser.country = US -Duser.language = en -Duser.variant -cp C: \ Users \ Lauren.gradle \ wrapper \ dists \ gradle-5.6. 2-all \ 9st6wgf78h16so49nn74lgtbb \ gradle-5.6.2 \ lib \ gradle-launcher-5.6.2.jar org.gradle.launcher.daemon. bootstrap .GradleDaemon 5.6.2 Чтобы узнать больше, прочтите следующие выходные данные процесса: Произошла ошибка во время инициализации ВМ. Не удалось зарезервировать достаточно места для кучи объектов 1572864 КБ. Java (0)
buildscript {
ext.kotlin_version = '1.3.50'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.3' // for connecting to firebase
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
изменить: я добавил в журналы захвата
изменить: добавить android studio cra sh детали:
--------- beginning of crash
2020-05-05 13:37:49.148 13524-13524/com.sensationalscience.sensational_science E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sensationalscience.sensational_science, PID: 13524
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.sensationalscience.sensational_science/com.sensationalscience.sensational_science.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.sensationalscience.sensational_science.MainActivity" on path: DexPathList[[zip file "/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/lib/x86, /data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk!/lib/x86, /system/lib, /vendor/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2718)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.sensationalscience.sensational_science.MainActivity" on path: DexPathList[[zip file "/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/lib/x86, /data/app/com.sensationalscience.sensational_science-TWyC0kIWuswGoy1G-VAtCQ==/base.apk!/lib/x86, /system/lib, /vendor/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.Instrumentation.newActivity(Instrumentation.java:1173)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2708)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)