Запуск GluonVM на устройстве iOS [проблемы] - PullRequest
0 голосов
/ 29 сентября 2019

Я пробую GluonVM на iOS с Oracle JDK 10.2.Я заметил, что хотя у меня есть «com.javasuns.test» в src / ios / Default-Info.plist , когда я запускаю команду "./ gradlew launchIOSDevice" ,Идентификатор пакета берется из mainClassName , определенного в build.gradle .

Вот мой пример:

Default-Info.plist

<key>CFBundleIdentifier</key>
<string>com.javasuns.test</string>

build.gradle

dependencies {
     compile 'com.gluonhq:charm:5.0.2'
}

mainClassName = 'test.TestFX'

fxmobile {
    javafxportsVersion = '8.60.12'
    ios { ...... }
}

. / Gradlew launchIOSDevice

com.gluonhq.higgs.Higgs: non-fatal issue for class javafx.scene.web.JSObjectIosImpl (no known superclass) 
command to dsymutil: xcrun dsymutil -o /Volumes/MyApps/testFX/build/gvm/testFX.app.dSYM /Volumes/MyApps/testFX/build/gvm/testFX.app/testFX 
Error getting ProvisioninedDevices, ignore
created
created
created
created
Error getting ProvisioninedDevices, ignore
created
provprofile asked, bid = test.TestFX and origbid = test.TestFX
provprofile asked, bid = test.* and origbid = test.TestFX
provprofile asked, bid = * and origbid = test.TestFX
No provisioning profile found matching signing identity 'iPhone Developer: #NAME#' and app bundle ID 'test.TestFX'
will return PP null
No provisioning profile found matching signing identity 'iPhone Developer: #NAME#' and app bundle ID 'test.TestFX'
will return PP null
No provisioning profile found matching signing identity 'iPhone Developer: #NAME#' and app bundle ID 'test.TestFX'
will return PP null
Warning, getProvisioningProfile is failing
java.lang.NullPointerException

Iудалось обойти проблему, создав новый главный класс java с именем " test.java " в пакете "com.javasuns" (игнорируя, что имена типов java обычно начинаются с заглавной буквы).

build.gradle (изменено)

mainClassName = 'com.javasuns.test'

Однако теперь появляется новая ошибка, что я не знаю, как ее пройти:

13:17:45:491] BosonAppSupport: Validating codesign... 
[SUB] /Volumes/MyApps/testFX/build/gvm/testFX.app: valid on disk
[SUB] /Volumes/MyApps/testFX/build/gvm/testFX.app: satisfies its Designated Requirement
[13:17:46:269] BosonAppSupport: Validation codesign result: true 
[13:17:46:270] BosonAppSupport: Codesign done 
[13:17:46:333] BosonAppBuilder: UploadInternal start 
[13:17:51:041] : Upload Progress: 10% 
[13:17:51:573] : Upload Progress: 20% 
[13:17:52:104] : Upload Progress: 30% 
[13:17:52:916] : Upload Progress: 40% 
[13:17:53:947] : Upload Progress: 50% 
[13:17:54:696] : Upload Progress: 60% 
[13:17:55:520] : Upload Progress: 70% 
[13:17:56:372] : Upload Progress: 80% 
[13:17:57:367] : Upload Progress: 90% 
[13:17:58:414] : Upload Progress: 100% 
[13:17:58:460] BosonAppBuilder: uploadInternal done 

[13:17:58:796] : Progress: CreatingStagingDirectory [5%] 
[13:17:58:798] : Progress: ExtractingPackage [15%] 
[13:17:58:799] : Progress: InspectingPackage [20%] 
[13:17:58:802] : Progress: TakingInstallLock [20%] 
[13:17:58:804] : Progress: PreflightingApplication [30%] 
[13:17:58:805] : Progress: InstallingEmbeddedProfile [30%] 
[13:17:58:812] : Progress: VerifyingApplication [40%] 
[13:17:58:954] : Error: APIInternalError, Description: Failed to unhide archs in executable file:///private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.LXITKr/extracted/testFX.app/TestApp

> Task :launchIOSDevice
[13:17:58:955] BosonAppBuilder: Installing finished due to an error. 
[13:17:58:958] BosonAppBuilder: Install internal failed 
[13:17:58:958] BosonAppBuilder: Something went wrong. App wasn't installed on the device 

Есть идеи, как решить обе проблемы?

1 Ответ

0 голосов
/ 29 сентября 2019

Есть две основные клавиши, которые вы должны установить правильно: CFBundleIdentifier и CFBundleExecutable.

Вы можете проверить образец SingleView-GluonVM :

  • Главное имя класса (см. build.gradle ): com.gluonhq.samples.singleviewgvm.SingleViewWithGluonVM
  • CFBundleIdentifier (см. Default-info.plist ): com.gluonhq.samples.singleviewgvm.SingleViewWithGluonVM

и

или образец DeepLearning-LinearClassifier , с аналогичными настройками.

Как видите, плагин Gluon IDE устанавливаетсяпо умолчанию CFBundleIdentifier в качестве имени основного класса и CFBundleExecutable в качестве имени вашего мобильного проекта.

CFBundleIdentifier

Когда вы хотите развернуть свое приложениедля iOS профиль обеспечения должен иметь этот идентификатор пакета.Тем не менее, вы также можете использовать подстановочные знаки.Просто убедитесь, что вы загрузили и установили на свою машину профиль обеспечения (он должен быть в /Users/<user>/Library/MobileDevice/Provisioning Profiles) с расширением .mobileprovision.

Если вы предварительно просматриваете его (например, из Finder), AppID изэтот файл может быть что-то вроде <TEAM ID>.<mainClassName>, или <TEAM ID>.*.

Это , где плагин jfxmobile устанавливает appId.

CFBundleExecutable

О CFBundleExecutable, это имя, которое будет иметь ваше приложение под build/gvm/.В этом случае обязательно, чтобы он использовал имя вашего проекта (как в названии Gradle).

Это , где плагин jfxmobile устанавливает appName.

Вы найдете ваше приложение под /<appName>/build/gvm/<appName>.app (хотя Finder покажет только <appName>:

image

Если вы увидите содержимое приложения, вы найдете исполняемый файлфайл в /<appName>/build/gvm/<appName>.app/<appName>:

image

Ошибка, которую вы получаете;

[13: 17: 58: 954]: Ошибка: APIInternalError,Описание: не удалось отобразить арки в исполняемом файле: ///private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.LXITKr/extracted/testFX.app/TestApp

показывает testFX.app/TestApp, поэтому, вероятно, ваше имя проекта testFX, но должно быть TestApp?

В качестве альтернативы, вы можете просто сопоставить значение, которое вы установили в CFBundleExecutable, добавивsettings.gradle файл для вашего проекта, с:

rootProject.name = "<your bundle executable value>"
...