我认为我认为这是一个相当标准的现有网络应用程序设置,并希望了解如何最好地通过PhoneGap来创建本机版本,以便我们可以继续开发网络应用程序并且只需很少的返工就可以从中更新phonegap生成的版本。
我是PhoneGap新手。我已经四处搜索并尝试了StackOverflow等的各种建议,但没有运气,至少对我的设置而言。
该应用程序是在GWT中开发的,包括:
/ static / with images,fonts,css。 css定义了一些字体系列,引用/ fonts
中的字体文件我们使用绝对的html文件和JavaScript代码引用这些静态资源 路径。
例如/ LoginGadget,它将使用GWT生成html,Javascript以及有时带有css和css-images的子文件夹。
这些基本上是servlet,其中GWT负责序列化等,并且可以通过XHR在我们的客户端代码中访问
我已经开始考虑使用PhoneGap创建一个打包的应用程序,并遇到一些我需要建议的问题(Android示例)。
我创建了/ assets / www并将index.html文件放在那里并开始运行。 我复制了一个版本的/ static /文件夹和我们的/ LoginGadget文件夹" root"看,并开始使用
super.loadUrl("file:///android_asset/www/index.html");
有效。
在我们所有GWT生成的html和Javascript文件中,我们使用绝对(例如" / static /....")和相对路径(例如来自LoginGadget Javascript,它)引用静态资源可以参考" css / some.css")。
相对路径起作用,因为它们居住在""引用它们的html / js所在的文件夹。
然而,尽管PhoneGap首先说:
,但对绝对路径的引用仍然失败DroidGap: url=file:///android_asset/www/index.html baseUrl=file:///android_asset/www/
我期望引用" /static/images/file.png"从说index.html附加到" baseUrl"提供文件:///android_asset/www/static/images/file.png因此工作,因为这是文件所在的位置。
我必须修改index.html才能使用" static / image / file.png"它的工作原理。 但我必须使用不同的配置重新编译所有GWT应用程序,以修改对资源的所有引用,并将子文件夹中其他文件的引用返回到" / static /"如果被修改为只是"静态/"
,它将无法工作如何获得" map"的绝对路径引用?到/ assets / www或类似? (见下文,我看过使用" base"标签....)
GWT RPC向服务器发出XHR请求,提供html / js。 这非常有用,因为应用程序没有硬编码的主机服务器名称,并且实际上部署在许多不同的appengine appids /域上以进行测试等。
这里的html / js文件是"服务"来自file:///因此我需要以某种方式指定服务器。
我尝试使用" base"标记为已记录,但随后我在html / js中对任何未指定" file://"的资源进行了引用。似乎是在" base"中指定的服务器进行的,因此我不再加载我的本地资源了,我基本上从我的服务器上提供了一个web-app。
我想做的是,能够从我的wab-app的战争(/ static和我的所有/ GWT-Module文件夹)中获取(非常大的)经过编译和测试的应用程序未触动并将它们复制到我的PhoneGap应用程序上的/ assets / www中,然后添加一些样板或启动代码并按原样运行。
听起来像是一个很大的要求,但我想如果我能正确指定两件事:
文件路径用作" root"对于没有指定http / https协议的资源请求的绝对路径(或者我已经看到的其他协议......在DroidGap.java中处理)
用于任何XHR请求的服务器(协议,主机名,端口)
然后一切都会在洗涤中出现!
我认为这将是一个快速的标准"设置已经涵盖。也许是这样,我只是遗漏了一些东西。
评论?建议?
提前感谢您的帮助。
答案 0 :(得分:3)
你知道mgwt吗? http://www.m-gwt.com
它是由GWT指导委员会成员之一建立的GWT移动框架,它也为GWT应用程序提供了phonegap集成。
项目中有很多文档和非常友好的用户组。
让我用更详细的方式解决你的问题:
<强>问题1:强>
如果您使用绝对路径,您将获得与phonegap不一致的行为,因为浏览器在本地构建这些URL,并且对/表示手机上的根条目。 大多数时候使用绝对URL是一个坏主意,我建议你在应用程序中更改它(就像你已经做的那样)。
<强> Problem2:强>
要将GWT RPC与phonegap一起使用,请阅读我为解决问题所做的博文:http://blog.daniel-kurka.de/2012/04/gwt-rpc-with-phonegap-revisited.html
答案 1 :(得分:0)
我们通过两个单独的行动解决了这些问题:
1)我编写了一个ant目标,作为构建的一部分,它采用了web-app,并替换了它找到的所有内部url引用中的路径,使它们适合在应用程序中工作所需的内容。它似乎仍然是我手机中的一个主要错误。也许它已在新版本中得到修复?
2)我们将RPC服务类子类化并将其修改为具有作为服务端点的静态成员。在我们的phonegap应用程序启动时,我们修改端点以指向所需的服务器和presto ....我们所有的GWT RPC都指向正确的位置。