我已经编写了一个简单的只使用前端的webapp应用程序,它在浏览器中工作得很好,我想在Chrome上提供它。这是一个巨大的痛苦,但我担心的是,有些东西我没有得到。
我首先在项目中添加一个manifest.json文件。它与火狐的manifest.webapp文件略有不同,但不管怎么说,没有直接冲突,所以我只需添加一些额外的参数,并复制其余的。
看起来我也需要一个后台脚本来启动我的应用程序,否则它只会被看作是一个扩展,而不是一个在自己的窗口中打开的应用程序。很复杂,但我想它让我对我的应用程序的发布方式有了更多的控制,所以这是有意义的。所以我在舱单上添加了这样的东西:
{
"background": {
"scripts": ["main.js"]
}
}然后在main.js中我有这样的东西:
chrome.app.runtime.onLaunched.addListener(function() {
var screenWidth = screen.availWidth;
var screenHeight = screen.availHeight;
var width = 500;
var height = 300;
chrome.app.window.create('index.html', {
id: "myapp",
outerBounds: {
width: width,
height: height,
left: Math.round((screenWidth-width)/2),
top: Math.round((screenHeight-height)/2)
}
});
});现在我的应用程序正在启动ok,但是我在控制台上发现了一个错误:window.localStorage is not available in packaged apps. Use chrome.storage.local instead.。奇怪的是,我不能仅仅使用W3规范localStorage标准。查找chrom.storage.local时,它甚至没有使用标准的localStorage语法。相反,getItem是get,在不修改我现有的代码的情况下,在localStorage周围使用一个简单的包装器会造成问题。
所以我的问题是:如果他们想在Chrome上得到一个应用程序,这是Google所期望的开发者会经历的事情吗?还是我误解了什么?
发布于 2014-10-26 20:00:37
想想什么是"Chrome应用程序“。
您尝试构建的是以前称为“打包应用程序”( 一种独立的、几乎是原生的应用程序 )的东西。因此,预计开发人员将遵循一组略有不同的规则。正如RobW所提到的,您可以使用<webview>标记将web应用程序嵌入到UI中,但这可能不是您的目标。
如果你想要一个web应用程序出现在商店里,而且这个应用程序已经托管在某个地方,并且你不想要一个与普通浏览器分开的UI,那么你看错了应用类型。
在Chrome术语中,.webapp-defined应用程序与托管应用程序相对应。它只是一个元数据文件,连接到您现有的web应用程序,您可以在商店中列出。
发布于 2014-10-27 03:47:10
Chrome应用程序是一个应用程序平台,如Windows、OS、Android、Linux等,因此,它们有着独特的需求和约束。
如果他们想要在Chrome上得到一个应用程序,这是谷歌所期望的,还是我误解了什么呢?
似乎你要问的是如何在Chrome上轻松地列出一些东西。从这个角度来看,您的沮丧是可以理解的:要获得超级便宜的发行版,您希望开发人员的工作量非常低。但这是“可怕的误解”,用你的术语。便宜的发行版可能是你的目标,但它不是谷歌的目标。Chromebooks平台是一个独特的应用平台,专为确保应用程序在Chromebook和其他Chrome设备上表现良好而设计。顺便说一句,是的,生态系统的一部分是一个商店,帮助分配。但这只是平台开发的一小部分。
看看应用程序,并尝试一些示例应用程序。您会发现web开发的好部分仍然存在,但是坏的部分(像localStorage这样的同步API、面向页面的生命周期模型、危险的内联脚本)被删除了,而全新的部分(新的硬件和UI API、出色的脱机行为、更好的发行版和更强大的安全模型)也被删除了。
Chrome应用程序平台是精益的,它适合类似的精益Chrome操作系统。花一两天时间让自己沉浸在其中。这是值得的。在Chromebook上编写一个质量优良、运行良好的应用程序,您所寻找的发行版自然会遵循。
https://stackoverflow.com/questions/26577137
复制相似问题