Включить cn1lib в локальную сборку Android с кодовым именем?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Включить cn1lib в локальную сборку Android с кодовым именем?

Сообщение Anonymous »

В настоящее время я рассматриваю возможность переноса приложения, которое начинаю разрабатывать с помощью React-Native, на Codenameone. Для этого я все еще проверяю осуществимость и объем работы, которую это потребует (поскольку мне пришлось бы портировать или разработать некоторую привязку собственной библиотеки с реакции-родной на codenameone, потому что codenameone не хватает некоторых из моих потребностей, таких как поддержка Socket.io для пример). Бесплатная облачная служба сборки codenameone ограничена размером приложения в 1 МБ, поэтому мне приходится создавать тестовые сборки локально (с использованием всего нескольких тестовых классов и использования карт Google cn1lib, мое тестовое приложение уже превышает лимит в 1 МБ)
К сожалению, на codenameone нет бесплатной документации о том, как выполнять локальные сборки, и на самом деле я не смог найти в Интернете никаких инструкций о том, как это сделать (в сообщении в блоге я нашел только некоторые базовые и устаревшие инструкции о том, как это сделать). выполнить локальную сборку iOS, но ничего для Android). Так что мне пришлось разобраться в этом самому...
После некоторого времени, потраченного на изучение параметров конфигурации gradle, мне наконец удалось создать локальное базовое приложение под кодовым названием, которое работает на моем тестовом устройстве Android. Но проблема в том, что когда я добавляю внешнюю библиотеку cn1lib (родная версия cn1lib для Google Maps https://github.com/codenameone/codenameone-google-maps), в моем приложении возникает ошибка при открытии экрана, который зависит от этой библиотеки.
В журнале ошибок Android я нашел следующее сообщение:

Код: Выделить всё

D/MyApplication(  551): [EDT] 0:0:0,99 - Exception: java.lang.ClassCastException - com.codename1.googlemaps.InternalNativeMapsImpl cannot be cast to com.codename1.system.NativeInterface
W/System.err(  551): java.lang.ClassCastException: com.codename1.googlemaps.InternalNativeMapsImpl cannot be cast to com.codename1.system.NativeInterface
W/System.err(  551):    at com.codename1.system.NativeLookup.create(Unknown Source)
W/System.err(  551):    at com.codename1.googlemaps.MapContainer.(MapContainer.java:171)
W/System.err(  551):    at com.codename1.googlemaps.MapContainer.(MapContainer.java:151)
W/System.err(  551):    at com.tbdlab.testapp.MyApplication.start(MyApplication.java:207)
W/System.err(  551):    at com.tbdlab.testapp.MyApplicationStub.run(MyApplicationStub.java:183)
W/System.err(  551):    at com.codename1.ui.Display.processSerialCalls(Unknown Source)
W/System.err(  551):    at com.codename1.ui.Display.mainEDTLoop(Unknown Source)
W/System.err(  551):    at com.codename1.ui.RunnableWrapper.run(Unknown Source)
W/System.err(  551):    at com.codename1.impl.CodenameOneThread$1.run(Unknown Source)
W/System.err(  551):    at java.lang.Thread.run(Thread.java:818)
Я не очень понимаю, почему InternalNativeMapsImpl не удалось привести к NativeInterface, поскольку я просмотрел dex-файл моего скомпилированного APK и все необходимые классы (для Android) из карты Google cn1lib правильно включены (так что у меня есть com.codenameone.googlemaps.InternalNativeMaps, com.codenameone.googlemaps.InternalNativeMapsImpl и com.codenameone.googlemaps.MapContainer), а также кодовое имя, один класс собственного интерфейса, от которого они зависят (

Код: Выделить всё

com.codename1.system.NativeInterface
, com.codename1.impl.android.LifecycleListener...). И я их декомпилировал, и код правильный (я все равно не использую никаких методов обфускации, поэтому нет реальной причины, по которой скомпилированный код мог бы отличаться от исходного кода). Вероятно, мне здесь чего-то не хватает, чтобы создать локальную сборку под кодовым именем с использованием cn1lib.

Итак, кто-нибудь уже преуспел в создании локальной сборки с использованием cn1lib, который выполняет собственные привязки? Если да, то какова точная процедура?
Я очень надеюсь, что кто-нибудь сможет помочь, потому что на данный момент я серьезно подумываю о том, чтобы придерживаться React-native (чем я вполне доволен, за исключением того факта, что он не полностью нативный) или прыгайте во флаттер (или нативный Kotlin), даже если я все еще думаю, что codenameone предлагает много преимуществ перед этими другими решениями (но невозможность выполнять локальные сборки на этапе разработки для меня просто невозможна)

Подробнее здесь: https://stackoverflow.com/questions/492 ... roid-build
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»