IBM Worklight 5.0.x - изменение основного имени файла HTML

Я хочу, чтобы мой основной HTML-файл имел другое имя, чем мой проект.

Я обнаружил, что Worklight не будет переподключаться, если я не использую то же имя. Я попытался изменить тег mainFile в application-descriptor.xml и изменить запись wlMainFile в worklight.plist на iOS.

Прямое обновление не работает. Что еще более важно приложение не переподключается, и я получаю серый экран (предположительно, потому что iOS пытается запустить, используя неправильный файл).

Например:

Project name: MyProject
main file: home.html
application-descriptor.xml: <mainFile>home.html</mainFile>
worklight.plist: <wlMainFile>home.html</wlMainFile>

Выше не работает.

[Отредактировано позже, чтобы добавить мой application-descriptor.xml]

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Licensed Materials - Property of IBM
             5725-G92 (C) Copyright IBM Corp. 2006, 2012. All Rights Reserved.
         US Government Users Restricted Rights - Use, duplication or
         disclosure restricted by GSA ADP Schedule Contract with IBM Corp. -->
<!-- Attribute "id" must be identical to application folder name -->
<application xmlns="http://www.worklight.com/application-descriptor" id="agent" platformVersion="5.0.6">
 <displayName>My app</displayName>
 <description>My application description </description>
 <author>
    <name>Redacted</name>
    <email>redacted@foo.com</email>
    <homepage>http://redacted.com</homepage>
    <copyright>(c) redacted LLC</copyright>
 </author>
<height>748</height>
<width>1024</width>
<mainFile>home.html</mainFile>
<thumbnailImage>common/images/ipad-app-icon.png</thumbnailImage>
<!--  -->
<ipad bundleId="com.redacted.myproject" version="1.0">
    <worklightSettings include="true"/>
    <security>
        <encryptWebResources enabled="false"/>
        <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
    </security>
</ipad>
<!--  -->
<android version="1.0">
    <worklightSettings include="true"/>
    <security>
        <encryptWebResources enabled="false"/>
        <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/>
        <publicSigningKey>Replace this text with the public key of the certificate with which you sign the APK. 
        For details see the Worklight Developer's Reference Guide.</publicSigningKey>
    </security>
</android>
<worklightServerRootURL>http://${local.IPAddress}:8080</worklightServerRootURL>
</application>

Итак, чтобы быть ясным, если я столкнулся с проблемой с моим mainFile, являющимся именем, отличным от имени проекта. Worklight не всегда вызывает имя файла, указанное в mainfile, особенно после первоначального использования приложения.

2 ответа

Решение

При изменении имени файла HTML обязательно измените также:

  1. application folder название
  2. В application-descriptor.xml:

    • id атрибут в application элемент
    • mainFile значение элемента

Все должны соответствовать друг другу.

Обязательно удалите родную папку и пересоберите проект. Приложение продолжит загрузку после первого раза, а прямое обновление продолжит функционировать.

Единственное решение, которое я нашел, - это присвоить моему основному файлу то же имя, что и у приложения в проекте. Мое приложение работает нормально, когда я делаю это.

[Обратите внимание, что это было отредактировано в соответствии с рекомендацией @Idan Adar выше. Это не ПРОЕКТ, который должен соответствовать mainFile, а имя ПРИЛОЖЕНИЯ]

Следующее работает отлично:

Project name: MyProject
main file: MyProject.html
application-descriptor.xml: <mainFile>MyProject.html</mainFile>
worklight.plist: <wlMainFile>MyProject.html</wlMainFile> (this is a generated file)

Похоже, что Worklight правильно запускает приложение iOS в первый раз, используя файл, указанный в wlMainFile. Затем, когда он должен возобновить или перезапустить, он ищет имя приложения, а не значение, указанное в wlMainFile.

Другие вопросы по тегам