Flutter运行停留在安装build \ app \ outputs \ apk \ app.apk

时间:2019-02-15 01:06:55

标签: dart flutter

我在以下线程上找不到有用的解决方案:

Flutter stuck at Installing build\app\outputs\apk\app.apk

问题不一样,我的安装还没有完成。

我将Honor 7作为连接的设备并使用Visual Studio Code。

运行“ flutter run”时,会发生以下情况:

Launching lib/main.dart on PLK L01 in debug mode...
Initializing gradle...                                       1,1s
Resolving dependencies...                                    3,3s
Gradle task 'assembleDebug'...
Gradle task 'assembleDebug'... Done                         15,6s
Built build\app\outputs\apk\debug\app-debug.apk.
Installing build\app\outputs\apk\app.apk...                     -

加载完最后一步后,我的设备会要求接受应用安装。一旦接受,安装后它将提供2个选项:

  • 打开应用

  • 完成(含义=返回主屏幕)

无论哪种方法,最后一步都无法完成。 “干净整洁”没有区别。热装不工作。还有其他人遇到这个问题吗?


'flutter doctor -v'输出:

[√] Flutter (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17134.590], locale de-DE)
    • Flutter version 1.0.0 at F:\flutter
    • Framework revision 5391447fae (3 months ago), 2018-11-29 19:41:26 -0800
    • Engine revision 7375a0f414
    • Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    • Android SDK at C:\Users\tarik\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-P, build-tools 27.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
    • All Android licenses accepted.

[√] Android Studio (version 2.2)
    • Android Studio at E:\Android Studio
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_76-release-b03)

[√] Android Studio (version 3.1)
    • Android Studio at C:\Program Files\Android\Android Studio
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)

[!] IntelliJ IDEA Community Edition (version 2017.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.3.2
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • For information about installing plugins, see
      https://flutter.io/intellij-setup/#installing-the-plugins

[!] IntelliJ IDEA Ultimate Edition (version 2017.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA 2017.3.2
    X Flutter plugin not installed; this adds Flutter specific functionality.
    • Dart plugin version 173.4127.31
    • For information about installing plugins, see
      https://flutter.io/intellij-setup/#installing-the-plugins

[√] VS Code, 32-bit edition (version 1.12.2)
    • VS Code at C:\Program Files (x86)\Microsoft VS Code
    • Flutter extension version 2.22.3

[√] Connected device (1 available)
    • PLK L01 • H8WDU15207300112 • android-arm64 • Android 6.0 (API 23)

! Doctor found issues in 2 categories.

10 个答案:

答案 0 :(得分:2)

在我的情况下,问题是我在修改MainActivity.kt程序包名称后忘记更改它。

package com.WrongCompanyName.WrongProjectName

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
    }
}

答案 1 :(得分:1)

其他用户可以在此url中获得解决方案。 在我的情况下,该应用程序手动卸载,因此它不会在启动器中显示。 并得到解决方案 post

  1. 转到设置
  2. 转到应用
  3. 选择您的应用。 (在这里,您可以验证您的应用未正确卸载)。
  4. 打开右上方的溢出菜单(三个点),然后为所有用户选择卸载。

答案 2 :(得分:1)

编辑:您可以在终端中输入

flutter run

然后r进行热重装。您可能必须先按Ctrl + C并先输入n

它比F5慢,但仍然有效!

enter image description here

我的原始答案: 我通过在终端中键入命令来解决此问题

flutter run -d <deviceId>

对于我的LG手机,是

flutter run -d LGUS998d7315d51

答案 3 :(得分:1)

打开 android \ app \ build.gradle 并为该应用设置其他应用ID。

defaultConfig {
  // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
  applicationId "com.othervalue.sbmicalc"
}

然后删除以前的版本:

flutter clean

然后再次运行:

flutter run

答案 4 :(得分:0)

解决方案很简单

对于项目中可能发生的热重装 问题

这是您的设备出现的问题,而不是颤抖 Android Studio

当您的 logcat 挂断时,就会发生这种情况。

您可能要增加您的缓冲区大小

为此,请进入您的设备模拟器

设置>开发者选项确保它们已打开),

将缓冲区大小更改为更大的数字。

然后再次运行 flutter运行-v

答案 5 :(得分:0)

我一直在为此苦苦挣扎一年,这是我刚刚发现的使它无法在我的系统上运行的原因。

我今晚发现,如果我运行了病毒防护功能,我的模拟器就会停在
“ --->
内置build \ app \ outputs \ apk \ debug \ app-debug.apk。 然后我得到一个白色的屏幕。我关闭了病毒防护功能,并且在调试模式下可以正常工作。 如果打开,我必须继续前往终端并执行以下操作:“ flutter run”以查看我所做的任何更改。 也许这会帮助某人。

答案 6 :(得分:0)

确保您的MainActivity.java在正确的位置,它具有MainActivity类声明,并且程序包与您的程序包ID相匹配。

答案 7 :(得分:0)

我遇到了这个问题并找到了解决方案。(我使用模拟器)

看来这只是一个模拟器问题。

# Define UI ui <- fluidPage( #Navbar structure for UI navbarPage("Selection de modeles", theme = shinytheme("slate"), tabPanel("Programme", fluid = TRUE, icon = icon("spinner"), tags$style(button_color_css), # Sidebar layout with a input and output definitions sidebarLayout( sidebarPanel( h3("Chargement des donnees"), fileInput("file", "Charger un jeu de donnees :"), checkboxGroupInput(inputId = "DataExemple", label = "Utiliser les donnees de base :", choices = c("Donnees de base" = "D1")), hr(), actionButton(inputId = "DeleteData", label = "Supprimer les donnees", icon = icon("trash-alt")), hr(), h3("Implementation de la procedure de selection"), #shinythemes::themeSelector(), # Select modele checkboxGroupInput(inputId = "ModeleFinder", label = "Choix des modele(s):", choices = c("Modele 1" = c(1), "Modele 2 " = c(2),"Modele 3 " = c(3),"Modele 4 " = c(4)), selected = "M1"), hr(), # Select ratio 1 sliderInput(inputId = "SliderRatio1", label = "Choix ratio 1", min = 0, max = 100, 30 ), # Select ratio 2 sliderInput(inputId = "SliderRatio2", label = "Choix ratio 2", min = 0, max = 100, 30 ), # Select ratio 3 sliderInput(inputId = "SliderRatio3", label = "Choix ratio 3", min = 0, max = 100, 30 ), # Select ratio 4 sliderInput(inputId = "SliderRatio4", label = "Choix ratio 4", min = 0, max = 100, 30 ), # Select ratio 5 sliderInput(inputId = "SliderRatio5", label = "Choix ratio 5", min = 0, max = 100, 30 ), hr(), hr(), # Select alpha 1 sliderInput(inputId = "SliderAlpha1", label = "Importance du ratio", min = 0, max = 1, 0.3 ), # Select alpha 2 sliderInput(inputId = "SliderAlpha2", label = "Importance de l'erreur d'apprentissage", min = 0, max = 1, 0.3 ), # Select alpha 3 sliderInput(inputId = "SliderAlpha3", label = "Importance de l'erreur test", min = 0, max = 1, 0.3 ), # Select alpha 4 sliderInput(inputId = "SliderAlpha4", label = "Importance du temps de calcul", min = 0, max = 1, 0.3 ), # Select alpha 5 sliderInput(inputId = "SliderAlpha5", label = "Importance de la complexite du modele", min = 0, max = 1, 0.3 ), hr(), actionButton(inputId = "calculate", label = "Calculer", icon = icon("check")), hr(), h3("Sauvegarder les resultats"), selectInput(inputId = "Export1", label = "Choisir le format", choices = c("csv", "texte","PDF","xlsx","SPSS","SAS","Stata"), selected = "csv"), downloadButton("downloadData1", "Download") ), mainPanel( ### add your style inline css values here ### added a line of code here too `.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover `### tags$style(HTML(" .dataTables_wrapper .dataTables_length, .dataTables_wrapper .dataTables_filter, .dataTables_wrapper .dataTables_info, .dataTables_wrapper .dataTables_processing, .dataTables_wrapper .dataTables_paginate, .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover { color: #ffffff; } ### ADD THIS HERE ### .dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:0.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#ffffff !important;border:1px solid transparent;border-radius:2px} ###To change text and background color of the `Select` box ### .dataTables_length select { color: #0E334A; background-color: #0E334A } ###To change text and background color of the `Search` box ### .dataTables_filter input { color: #0E334A; background-color: #0E334A } thead { color: #ffffff; } tbody { color: #000000; } " ) ), h4("Tableau de resultats"), dataTableOutput("tab_res"), hr(), h4("Meilleur modele"), dataTableOutput("best_mod") ) ) ), tabPanel("Code & Donnees", fluid = TRUE, icon = icon("database"), sidebarLayout( sidebarPanel( h3("Affichage des donnees"), radioButtons(inputId = "Display1", label = "", choices = c("preview", "str","summary"), selected = "preview"), hr(), h3("Affichage du code"), checkboxGroupInput(inputId = "CodeR", label = "", choices = c("Afficher le code R" = "R1")) ), mainPanel() ) ), tabPanel("Graphiques", fluid = TRUE, icon = icon("chart-line"), sidebarLayout( sidebarPanel( h3("Choix du modele"), radioButtons(inputId = "Display2", label = "", choices = c("Modele 1", "Modele 2","Modele 3","Modele 4"), selected = "Modele 1"), hr(), h3("Sauvegarder le graphique"), selectInput(inputId = "ExportGraph", label = "Choisir le format", choices = c("PNG", "JPEG","BMP"), selected = "PNG"), downloadButton("downloadData2", "Download") ), mainPanel() ) ), navbarMenu("Plus d'informations", icon = icon("info-circle"), tabPanel("Étude", fluid = TRUE, fluidRow( column(6, h4(p("Résumé")), h5(p("Cette étude a été réalisée au cours d'un stage de fin d'études en deuxième année de Master DSMS (Data Science et Modélisation Statistique) à l'Université de Bretagne Sud. Le stage s'est déroulé au sein du LMBA (Laboratoire de Mathématiques de Bretagne Atlantique) sur une période de six mois."), p("Le sujet du stage était le suivant : « Automatisation d'une procédure de sélection de modèles dans le cadre du Couplage Modèle-Données »."), p("Au cours d'un projet précédent, un outil avait été contruit afin d'ajuster un modèle (de type Couplage Modèle-Données) sur des données et de collecter certaines informations associées à celui-ci. L'objectif de notre stage était donc d'éprouver l'outil déjà existant, d'augmenter sa robustesse et son niveau de généricité et enfin d'automatiser la procédure complète de sélection de modèles."), p("Cette interface Shiny est en quelque sorte la mise en forme de nos travaux."), p("Les détails qui sont propres à notre programme sont référencés dans l'onglet intitulé « Détails ».") ) ), column(6, h4(p("Le Couplage Modèle-Données")), h5(p("Si l'on se réfère aux travaux effectués par FLOURENT (2019) dans le domaine du Smart Farming (l'agriculture de précision), on peut dire que le Couplage Modèle-Données est une approche qui se situe à mi-chemin entre les approches dîtes « Black Box » et « White Box »."), p("Le type de modèle appelé « Black Box » fait en grande partie référence aux modèles classiques du Machine Learning (réseaux de neurones .). D'après GORCZYCA et al (2018), VALLETTA et al. (2017), MA et al. (2014) et IP et al. (2018), la popularité de ces modèles peut s'expliquer par leur facilité d'utilisation, ainsi que par la diversité des problèmes pouvant être résolus grâce à de tels algorithmes. Néanmoins ces modèles contiennent peu de connaissances a priori. Par conséquent, les outils basés sur ce type de modèles sont peu informatifs d'un point de vue biologique (TAN et GILBERT (2003), SHAVLIK et al. (1995), HUBBARD et REINHARDT (1998)). Il faut également noter qu'il est nécessaire d'apprendre les paramètres de ces modèles à partir de beaucoup de données et ceci dans le but de pallier l'absence d'expertise biologique (DUMPALA et al. (2017))"), p("À l'inverse, les modèles « White Box » correspondent à des modèles mécanistes réalistes (VAZQUEZ-CRUZ et al. (2014)). Si l'on se penche sur les travaux de BASTIANELLI et SAUVANT (1997) et MARTIN et SAUVANT (2010), la construction de modèles mécanistes réalistes est une tâche complexe menant généralement à un modèle contenant un grand nombre d'équations et de paramètres à déterminer. Ce type de modèle nécessite d'avoir beaucoup de connaissances concernant le système étudié."), p("On cite une nouvelle fois les travaux de FLOURENT : « Le Couplage Modèle-Données consiste à intégrer des connaissances concernant la dynamique du système étudié via la construction d'un modèle mathématique et à utiliser ensuite des données pour ajuster les paramètres du modèle construit ». On peut aussi reprendre les travaux de FRENOD (2017), ROUSSEAU et NODET (2013), SACKS et al. (2007) et WANG et al. (2010), et dire que le Couplage Modèles-Données consiste à construire un modèle mathématique parcimonieux, correspondant à une synthèse mathématique du système étudié.") ) )) ), tabPanel("Détails", fluid = TRUE, fluidRow( column(6, #br(), h4(p("Modèles")), h5(p("Notre programme comporte trois types de modèles et quatre modèles différents. Deux modèles de type Couplage Modèle-Données (les modèles 1 et 2), un modèle de type réseau de neurones (le modèle 3) et un modèle de type linéaire (le modèle 4).")), br(), h4(p("Paramètres")), h5(p("Le premier modèle de type Couplage Modèle-Données est composé de trois paramètres ajustés. Le second modèle de type Couplage Modèle-Données est composé de deux paramètres ajustés et d'un paramètre fixe. Le modèle de type réseau de neurones est composé de trois couches cachées (la première et la troisième couches comportent trois neurones, la deuxième couche compte six neurones).")), br(), h4(p("Informations")), h5(p("Notre outil permet de collecter un certain nombre d'informations sur chacun des modèles comme l'erreur d'apprentissage, l'erreur test ou encore le temps de calcul. Certaines de ces informations nous sont utiles pour calculer notre indicateur de comparaison.")) #hr(), ), column(6, #br(), h4(p("Indicateur")), h5(p("Notre indicateur de comparaison se base sur cinq informations différentes, à savoir : l'erreur test, l'erreur d'apprentissage, le temps de calcul, la complexité du modèle et la ratio.")), br(), h4(p("Programme")), h5(p("Le programme, sur la base de l'indicateur, renvoie le « meilleur » modèle ainsi qu'un tableau de résultats avec un certain nombre d'infomations. L'utilisateur a la possibilité de sélectionner les modèles qu'il souhaite comparer, de choisir différents ratios (taille des données d'apprentissage et de test) ainsi que les poids associés (alphas) aux paramètres de l'indicateur.")), br(), h4(p("Poids associés")), h5(p("alpha 1 : poids associé au ratio")), h5(p("alpha 2 : poids associé à l'erreur d'apprentissage")), h5(p("alpha 3 : poids associé à l'erreur test")), h5(p("alpha 4 : poids associé au temps de calcul")), h5(p("alpha 5 : poids associé à la complexité du modèle")) ) ), br(), hr(), h6( p( a("Université de Bretagne Sud", href = "https://www.univ-ubs.fr/fr/index.html"), br(), br(), a("Laboratoire de Mathématiques de Bretagne Atlantique", href = "http://www.lmba-math.fr/"))), h6("Conçu avec", img(src = "https://www.rstudio.com/wp-content/uploads/2014/04/shiny.png", height = "30px"), "par", img(src = "https://www.rstudio.com/wp-content/uploads/2014/07/RStudio-Logo-Blue-Gray.png", height = "30px"), ".") ) ) ) )

也许您需要做 server <- function(input, output, session) { results <- eventReactive(input$calculate, { procedure_finale_shiny( input$SliderAlpha1, input$SliderAlpha2, input$SliderAlpha3, input$SliderAlpha4, input$SliderAlpha5, c(input$SliderRatio1, input$SliderRatio2,input$SliderRatio3, input$SliderRatio4, input$SliderRatio5), as.numeric(input$ModeleFinder)) }) output$tab_res <- renderDataTable({ results()[[1]] }) output$best_mod <- renderDataTable({ results()[[2]] }) } ,但问题会解决。

答案 8 :(得分:0)

我的解决方案是检查Android应用程序的package名称(iOS为applicationId)。 我最近将软件包的名称从默认的“ com.example.app_name”更改为更多自定义名称。但是,我忘记了更改所有位置。

我认为最重要的位置如下: Mac / iOS

  • build.gradle-搜索“ applicationId”

Android

  • [app_name]\android\app\src\debug\AndroidManifest.xml
  • [app_name]\android\app\src\main\AndroidManifest.xml
  • [app_name]\android\app\src\profile\AndroidManifest.xml

只需搜索package="

答案 9 :(得分:0)

在我的情况下,它没有从手机上正确卸载flutter应用程序,因为我的手机具有正常的空间和私有空间...因此,当我从正常空间中卸载应用程序时,它是被卸载的,而不是从私有空间中卸载的。然后从私人空间中删除该应用并运行

flutter clean

然后再次运行就可以了!

flutter run