Мгновенные приложения с собственными библиотеками на Android M N (crush)

Я влюбляюсь в устройство Android 7 (N) (Samsung s6 edge), когда запускаю приложение с мгновенным запуском с помощью кнопки [Попробовать].

Установленные службы: службы Google Play для Instant Apps (6.08-выпуск-335882674) и Instant Apps Dev Manager (1.0.261028443).

Мое приложение с мгновенным запуском загружено во внутреннюю бета-версию Google PLay как пакет приложений с поддержкой мгновенного запуска. При тестировании на устройстве Android P все идет нормально - нет давки, но на устройстве Android 7 я сталкиваюсь с давкой (и на устройстве Android 6 тоже). Короче родная либа не найдена. Мое приложение содержит собственные библиотеки в мгновенном модуле, а не в приложении (базе). Я пытался переместить jniLibs в модуль приложения, но раздавливание все еще существует.

Ошибка из logcat:

` 2020-12-01 17:17:01.901 19362-19362/? E/AndroidRuntime: НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной

Process: ru.arproduction.mmrs, PID: 19362
java.lang.UnsatisfiedLinkError: dlopen failed: dlopen failed: library "/data/user/0/com.google.android.instantapps.supervisor/files/native-lib/ru.arproduction.mmrs/110/libEasyAR.so" not found
    at java.lang.Runtime.load0(Runtime.java:897)
    at java.lang.System.load(System.java:1542)
    at cn.easyar.engine.EasyAR.loadLibraries(EasyAR.java:229)
    at cn.easyar.engine.EasyAR.initializeInner(EasyAR.java:157)
    at cn.easyar.engine.EasyAR.initialize(EasyAR.java:134)
    at ru.arproduction.mmrs.cameraeasyar2.CameraActivity.processAREngine(CameraActivity.kt:188)
    at ru.arproduction.mmrs.cameraeasyar2.CameraActivity.onCreate(CameraActivity.kt:142)
    at android.app.Activity.performCreate(Activity.java:6942)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
    at android.app.ActivityThread.-wrap14(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6682)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

Насколько я понимаю, напишите руководителю (служба мгновенных приложений) загрузите мгновенное приложение из Google Play и поместите его в свое внутреннее хранилище, а все нативные библиотеки для этого приложения должны быть в файлах/native-lib/{app-package-ame}/{strange_id }/ каталог. К сожалению, я не могу перечислить этот каталог из оболочки adb ls из-за отказа в разрешении.

собрать grable-файлы: https://cloud.mail.ru/public/2hPq/2yYnB1ZDA

Связанный вопрос: Android Instant App с собственной библиотекой C++, не публикуемой на устройстве/симуляторе под управлением Android N

Связанный чат: https://chat.stackoverflow.com/rooms/145088/discussion-between-spanndemic-and-anirudh

Отслеживание связанных проблем: https://issuetracker.google.com/issues/62074663

--Обновление1--

Хорошо, я внедрил свой край Samsung 6s (Android 7), и теперь я могу видеть, какие файлы содержатся в каталоге из logcat.

Я проверил все каталоги, начиная с /data/user/0/com.google.android.instantapps.supervisor/files/, и нашел файлы .so внутри разделенного jar (CameraEasyAR2.config.arm64_v8a.jar) из sourceDir (context.applicationInfo.sourceDir). После этого я решил извлечь эту банку во время выполнения и поместить файлы .so в каталог из logcat (context.applicationInfo.nativeLibraryDir). В настоящее время система может найти эти библиотеки, но теперь происходит сбой с другим сообщением - 64-битный вместо 32-битного. И это сводит меня с ума.

` 2020-12-03 16:09:29.631 24823-24823/? E/AndroidRuntime: НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной

Process: ru.arproduction.mmrs, PID: 24823
java.lang.UnsatisfiedLinkError: dlopen failed: dlopen failed: "/data/data/com.google.android.instantapps.supervisor/files/native-lib/ru.arproduction.mmrs/116/libEasyAR.so" is 64-bit instead of 32-bit
    at java.lang.Runtime.loadLibrary0(Runtime.java:977)
    at java.lang.System.loadLibrary(System.java:1567)
    at cn.easyar.engine.EasyAR.loadLibraries(EasyAR.java:234)
    at ru.arproduction.mmrs.cameraeasyar2.CameraActivity.processAREngine(CameraActivity.kt:274)
    at ru.arproduction.mmrs.cameraeasyar2.CameraActivity.onCreate(CameraActivity.kt:143)
    at android.app.Activity.performCreate(Activity.java:6942)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
    at android.app.ActivityThread.-wrap14(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6682)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

`


person Alexander Fedoseev    schedule 02.12.2020    source источник