При использовании релиза apk некоторый код был удален Dart AOT Compiler (TFA) - PullRequest
0 голосов
/ 25 января 2020

Я хотел дать некоторым друзьям apk-версию моего проекта, чтобы протестировать ее. в моей IDE мой проект работает отлично , возможно, есть некоторые ошибки, но основная концепция работоспособна.

Они сообщают о некоторых ошибках, которые не происходят на моей стороне, поэтому я попробовал релиз apk , и когда я запускаю некоторые специфические методы Появляется эта ошибка:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Attempt to execute code removed by Dart AOT
compiler (TFA)

это сообщение об ошибке

методы, которые вызывают эту ошибку:

Future askFriends(String friendName) async {
    print("Send FRIENDS Request");
    print(friendName);
    await _fs
        .collection("Users")
        .document(await pbd.getEmail(friendName))
        .collection("FriendsRequest")
        .document(await pbd.getUserName())
        .setData({
      "profilPicture": await pbd.getProfilePicture(),
      "friendName": await pbd.getUserName(),
      "friendEmail": currentUserEmail,
    });
  }

void acceptFriends(String friendName, String profilPicture) async {
    var reference = randomAlphaNumeric(20);
    String friendEmail = await pbd.getEmail(friendName);
    String userName = await pbd.getUserName();
    print("ADD FRIENDS");
    await _fs
        .collection("Users")
        .document(currentUserEmail)
        .collection("FriendsRequest")
        .document(friendName)
        .delete();
    await _fs
        .collection("Users")
        .document(friendEmail)
        .collection("Friends")
        .document(userName)
        .setData({
      "profilPicture": await pbd.getProfilePicture(),
      "friendName": userName,
      "friendEmail": currentUserEmail,
      "chatReference": reference,
    });
    await _fs
        .collection("Users")
        .document(currentUserEmail)
        .collection("Friends")
        .document(friendName)
        .setData({
      "profilPicture": profilPicture,
      "friendName": friendName,
      "friendEmail": friendEmail,
      "chatReference": reference,
    });
    _fs.collection("PrivateChat").document(reference).setData({
      "users": [userName, friendName]
    });
    _fs.collection("Users").document(currentUserEmail).updateData({
      "friends": await pbd.getUserFriendsNumber(currentUserEmail) + 1,
    });
    _fs.collection("Users").document(friendEmail).updateData({
      "friends": await pbd.getUserFriendsNumber(friendEmail) + 1,
    });
  }

Также при работе "Флаттер работает - -release -v "в отношении AOT возвращает только:

c:\src\flutter\bin\cache\artifacts\engine\common\flutter_patched_sdk_product/ --target=flutter -Ddart.developer.causal_async_stacks=true
-Ddart.vm.profile=false -Ddart.vm.product=true --bytecode-options=source-positions --aot --tfa --packages D:\Willy\myApp\Komeet\.packages
--output-dill D:\Willy\myApp\Komeet\.dart_tool\flutter_build\605851d98f347f3bc8bcbe0b131320ff\app.dill --depfile
D:\Willy\myApp\Komeet\.dart_tool\flutter_build\605851d98f347f3bc8bcbe0b131320ff\kernel_snapshot.d package:Komeet/main.dart
[+15101 ms] [+15122 ms] kernel_snapshot: Complete
[ +198 ms] [ +266 ms] invalidated build due to missing files:
c:\src\flutter\bin\cache\artifacts\engine\android-arm64-release\windows-x64\gen_snapshot
[ +600 ms] [ +509 ms] android_aot_release_android-arm64: Starting due to {InvalidatedReason.inputChanged, InvalidatedReason.inputMissing}
[   +1 ms] [   +6 ms] executing: c:\src\flutter\bin\cache\artifacts\engine\android-arm64-release\windows-x64\gen_snapshot
--causal_async_stacks --deterministic --snapshot_kind=app-aot-elf
--elf=D:\Willy\myApp\Komeet\.dart_tool\flutter_build\605851d98f347f3bc8bcbe0b131320ff\arm64-v8a\app.so --strip
D:\Willy\myApp\Komeet\.dart_tool\flutter_build\605851d98f347f3bc8bcbe0b131320ff\app.dill
[   +1 ms] [        ] aot_android_asset_bundle: Starting due to {InvalidatedReason.inputChanged}
[ +197 ms] [ +231 ms] aot_android_asset_bundle: Complete
[+10601 ms] [+10568 ms] android_aot_release_android-arm64: Complete
[ +198 ms] [ +245 ms] android_aot_bundle_release_android-arm64: Starting due to {InvalidatedReason.inputChanged}
[ +101 ms] [  +59 ms] android_aot_bundle_release_android-arm64: Complete
[        ] [  +82 ms] Persisting file store
[  +99 ms] [  +65 ms] Done persisting file store
[   +1 ms] [   +3 ms] build succeeded.

Запись на чтение в firestore не является проблемой, так как многие методы, которые используются в apk, используют Cloud Firestore и полностью в порядке .

Доктор флаттера

My Pubspe c .yaml

Build.grade [уровень APP ]

Build.grade [Уровень проекта]

В сети я нашел только одну похожую проблему: Попытка выполнить код, удаленный Dart AOT-компилятор (TFA), как устранить эту проблему

Итак, я попытался удалить каталог сборки, очистить флаттер, восстановить кэш флаттера паба, и воссоздать новый проект флаттера и импортировать все компоненты моего проекта. смените канал флаттера.

Также, написав «Очистить флаттер», выведите это предупреждение.

Failed to remove build. A program may still be using a file in the directory or the directory itself. To find and stop such a program, see:
https://superuser.com/questions/1333118/cant-delete-empty-folder-because-it-is-used

Я следовал инструкциям, но ничего не изменилось.

Спасибо за помощь.

1 Ответ

1 голос
/ 25 января 2020

Хорошо. Итак, я решаю эту проблему следующим образом:

- изменение канала флаттера на стабильный

- изменение номера сборки

- с изменением специфики методов:

кажется, что ( облачный пожарный хранилище имеет некоторые проблемы (не обеспечивает тот же результат, что и проект в IDE).

cf: https://github.com/FirebaseExtended/flutterfire/issues/1857

методы раньше:

Future askFriends(String friendName) async {
    print("Send FRIENDS Request");
    print(friendName);
    await _fs
        .collection("Users")
        .document(await pbd.getEmail(friendName))
        .collection("FriendsRequest")
        .document(await pbd.getUserName())
        .setData({
      "profilPicture": await pbd.getProfilePicture(),
      "friendName": await pbd.getUserName(),
      "friendEmail": currentUserEmail,
    });
  }

void acceptFriends(String friendName, String profilPicture) async {
    var reference = randomAlphaNumeric(20);
    String friendEmail = await pbd.getEmail(friendName);
    String userName = await pbd.getUserName();
    print("ADD FRIENDS");
    await _fs
        .collection("Users")
        .document(currentUserEmail)
        .collection("FriendsRequest")
        .document(friendName)
        .delete();
    await _fs
        .collection("Users")
        .document(friendEmail)
        .collection("Friends")
        .document(userName)
        .setData({
      "profilPicture": await pbd.getProfilePicture(),
      "friendName": userName,
      "friendEmail": currentUserEmail,
      "chatReference": reference,
    });
    await _fs
        .collection("Users")
        .document(currentUserEmail)
        .collection("Friends")
        .document(friendName)
        .setData({
      "profilPicture": profilPicture,
      "friendName": friendName,
      "friendEmail": friendEmail,
      "chatReference": reference,
    });
    _fs.collection("PrivateChat").document(reference).setData({
      "users": [userName, friendName]
    });
    _fs.collection("Users").document(currentUserEmail).updateData({
      "friends": await pbd.getUserFriendsNumber(currentUserEmail) + 1,
    });
    _fs.collection("Users").document(friendEmail).updateData({
      "friends": await pbd.getUserFriendsNumber(friendEmail) + 1,
    });
  }

методы сейчас:

Future askFriends(String friendName) async {
    print("Send FRIENDS Request");
    String userName = await pbd.getUserName();
    String friendEmail = await pbd.getEmail(friendName);
    String profilPicture = await pbd.getProfilePicture();
    print(friendName);
    await _fs
        .collection("Users")
        .document(friendEmail)
        .collection("FriendsRequest")
        .document(userName)
        .setData({
      "profilPicture": profilPicture,
      "friendName": userName,
      "friendEmail": currentUserEmail,
    });
  }

void acceptFriends(String friendName, String profilPicture) async {
    var reference = randomAlphaNumeric(20);
    String friendEmail = await pbd.getEmail(friendName);
    String userName = await pbd.getUserName();
    String userProfilPicture = await pbd.getProfilePicture();
    int userFriends = await pbd.getUserFriendsNumber(currentUserEmail);
    int friendFriends = await pbd.getUserFriendsNumber(friendEmail);
    print("ADD FRIENDS");
    await _fs
        .collection("Users")
        .document(currentUserEmail)
        .collection("FriendsRequest")
        .document(friendName)
        .delete();
    await _fs
        .collection("Users")
        .document(friendEmail)
        .collection("Friends")
        .document(userName)
        .setData({
      "profilPicture": userProfilPicture,
      "friendName": userName,
      "friendEmail": currentUserEmail,
      "chatReference": reference,
    });
    await _fs
        .collection("Users")
        .document(currentUserEmail)
        .collection("Friends")
        .document(friendName)
        .setData({
      "profilPicture": profilPicture,
      "friendName": friendName,
      "friendEmail": friendEmail,
      "chatReference": reference,
    });
    _fs.collection("PrivateChat").document(reference).setData({
      "users": [userName, friendName]
    });
    _fs.collection("Users").document(currentUserEmail).updateData({
      "friends": userFriends + 1,
    });
    _fs.collection("Users").document(friendEmail).updateData({
      "friends": friendFriends + 1,
    });
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...