Мы используем Android комплектов приложений с Dynami c Доставка активов в нашем Android приложении. Мы успешно реализовали все поставки файлов и протестировали их с помощью внутреннего тестирования приложений, файлы загружаются по требованию (это звуковые образцы, сохраненные в папке assets / sounds /), и приложение использует их без проблем.
В соответствии с документацией после загрузки файлов к ним обращаются следующим образом:
val assetManager = createPackageContext(this.packageName, 0).assets
val filename = "sounds/sound1.ogg"
val fd = assetManager.openFd(filename)
Все хорошо и шикарно.
Наше приложение также использует Admob, когда мы интегрируем и инициализируем мобильную рекламу. Это делается как можно раньше при запуске приложения, как рекомендует документация.
MobileAds.initialize(this, "<AD_UNIT_ID>");
Но эта единственная строка приводит к тому, что файлы не будут найдены! Если мы переместим инициализацию MobileAds после чтения файлов, это сработает. Но не раньше!?
//THIS WORKS
val assetManager = createPackageContext(this.packageName, 0).assets
val filename = "sounds/sound1.ogg"
val fd = assetManager.openFd(filename)
MobileAds.initialize(this, "<AD_UNIT_ID>");
//THIS FAILS
MobileAds.initialize(this, "<AD_UNIT_ID>");
val assetManager = createPackageContext(this.packageName, 0).assets
val filename = "sounds/sound1.ogg"
val fd = assetManager.openFd(filename) // fileNotFound
вызывает
java.io.FileNotFoundException: sounds/sound1.ogg
Делает ли инициализация MobileAds что-то с контекстом? Мы не можем реализовать это таким образом, потому что, когда мы пытаемся прочитать файлы в любой момент после инициализации MobileAds, это также приведет к сбою.
мы используем Mobile Ads SDK 19.1.0
Есть идеи? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Спасибо!