Unact / yandex_mapkit

Flutter implementation of YandexMapkit
MIT License
132 stars 151 forks source link

После обновления до 3.3.0 ексепшн "java.lang.AssertionError: setApiKey() should be called before initialize()" появляется и на релизе #321

Closed pamir72 closed 8 months ago

pamir72 commented 10 months ago

После обновления до 3.3.0 ексепшн "java.lang.AssertionError: setApiKey() should be called before initialize()" теперь появляется и на релизе. До 3.3.0 это было только в debug. См. закрытые топики #271 and #206. Яндекс не рекомендует вставлять MapKitFactory.setApiKey("Your API key") в MainActivity, а рекомендует это делать в onCreate Application. Подскажите пожалуйста, кто-нибудь уже решал успешно данную проблему во flutter ?

AbrorEsonov commented 10 months ago

same too, any news?

intraector commented 9 months ago

same here

AlexSmirnov9107 commented 8 months ago

i had temporary solution which helped me. i wrapped with try catch


import com.yandex.mapkit.MapKitFactory
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity : FlutterFragmentActivity() {

    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        try {
            MapKitFactory.setApiKey("")
        } catch (e: AssertionError) {

        }
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }

}
image
pamir72 commented 8 months ago

Спасибо, добрый человек ! Вроде как работает !

Ravensof commented 8 months ago

в документации яндекса для андроид написано делать setApiKey в Application. вынес в Application.onCreate и краши прекратились

pamir72 commented 8 months ago

Не поделитесь со всеми ?

Ravensof commented 8 months ago

https://yandex.ru/dev/mapkit/doc/ru/android/quickstart#setup

image

class App : FlutterApplication() {
    private val yandexApiKey = if (BuildConfig.DEBUG)
        "debug key"
    else
        "release key"

    override fun onCreate() {
        MapKitFactory.setApiKey(yandexApiKey)

        super.onCreate()
    }
}

upd: у яндекса какие-то нестабильные адреса документации https://yandex.ru/dev/mapkit/doc/ru/android/generated/getting_started#provide-key

pamir72 commented 8 months ago

В общем, есть 2 рабочих варианта решения проблемы: 1) В MainActivity : https://github.com/Unact/yandex_mapkit/issues/321#issuecomment-1698622003 2) Во FlutterApplication : https://github.com/Unact/yandex_mapkit/issues/321#issuecomment-1700820245 Во 2м варианте не забыть изменить android:name в AndroidManifest.xm

Закрываю Issue.

dumptyhumpty2014gmail commented 5 months ago

try catch не помогает. Все равно в Firebase сыпет ошибку. А где найти FlutterApplication, я не понимаю. В OnCreate у MainActivity не срабатывает. А в проекте флаттера я не вижу, где у нас FlutterApplication.

DaryaRyz commented 5 months ago

Не подскажете, как именно добавлять FlutterApplication в проекте Flutter исходя из этого ответа https://github.com/Unact/yandex_mapkit/issues/321#issuecomment-1700820245?

Ravensof commented 5 months ago

у вас ОДИН единственный Application на всё флаттер приложение:/ ищите в android/app/src/