我是如何实现electron 打印功能的在线升级热更新功能的

使用electron构建跨平台Node.js桌面应用经验分享-GAD腾讯游戏开发者平台当前位置:
(javascript)Electron app 自动更新功能该如何实现?是否可以只更新asar文件?
(javascript)Electron app 自动更新功能该如何实现?是否可以只更新asar文件?
来源:网络整理&&&&&时间: 22:26:51&&&&&关键词:自动更新,tron
关于网友提出的“(javascript)Electron app 自动更新功能该如何实现?是否可以只更新asar文件?”问题疑问,本网通过在网上对“(javascript)Electron app 自动更新功能该如何实现?是否可以只更新asar文件?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:(javascript)Electron app 自动更新功能该如何实现?是否可以只更新asar文件?
描述:Electron app 自动更新功能该如何实现?是否可以只更新asar文件?解决方案1:现在正在测试electron-updater
还有点问题!
以上介绍了“(javascript)Electron app 自动更新功能该如何实现?是否可以只更新asar文件?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1034457.html
上一篇: 下一篇:初探 Electron - 实践篇1
经历过的洗礼,相信大家已经掌握了 Electron 基本的用法,那么还在等什么,快上手项目试试吧!
&a id=“more”&&/a&
实践篇将以项目主导,我打算由浅入深从零到一去完成该项目,我们来做一个图片文字识别工具 ,目标如下:
图片上传:拖拽或点击上传
图片预览:上传完成,直接进入预览页,同时执行文字识别
菜单页:简单的导航列表,持续扩充
在线演示功能:提供了更多的图片,便于演示效果
繁体字识别:繁体字需要调用付费接口,所以需要单独处理,增加了繁体校准功能
大图裁切:为了精准识别,需要将图片化繁为简
体验优化:图片识别成功后返回结果,并拷贝入粘贴板,支持语音播报
涉及到的技术如下:
electron, electron-compile, electron-reload, react, react-router@4, react-motion, ES6/ES7, Promise, Surperagent, Less, CSS-Modules, eslint, babelrc, cropper, Material-UI…
一、先睹为快
本文的示例代码已经放在了
上,效果图如下:
你可以直接 clone 项目 npm i & npm run start 运行,或者按照本文的思路一步步实现。
二、创建项目
首先,我们本地创建项目 Electron-OCR-demo,如下:
# 找到合适的目录,创建项目
mkdir Electron-OCR-demo
三、初始化项目
1.创建 app 文件夹,用于存放前端项目主体文件;
2.创建 service 文件夹,存放请求服务文件以及后端文件;
3.创建 .gitignore 文件:
vi .gitignore
并写入规则:
node_modules
5.增加 README.md 文件;
touch README.md
6.初始化 package.json 文件:
ok,大功告成,我们来同步一下此时的项目结构:
├── README.md
├── app
├── .gitignore
├── package.json
└── service
四、快速开始
上面我们做了一些前期的准备工作,既然是用 ELectron 来做,那么当然需要安装依赖了:
npm install electron --save-dev
安装比较慢,建议使用淘宝镜像 cnpm install electron --save-dev 来安装。
我们先来运行一个简单示例,进入 app 目录,添加三个文件,分别是:
const { app, BrowserWindow } = require('electron')
const path = require('path')
const url = require('url')
let mainWindow
function createWindow () {
mainWindow = new BrowserWindow({width: 800, height: 600})
// 启动文件入口,如 index.html
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
// 开启 Chromium DevTools
mainWindow.webContents.openDevTools()
// 监听窗口关闭事件
mainWindow.on('closed', function () {
mainWindow = null
// 加载就绪
app.on('ready', createWindow)
// 监听所有窗口关闭的事件
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') {
app.quit()
// 激活窗口
app.on('activate', function () {
if (mainWindow === null) {
createWindow()
2.index.html
&!DOCTYPE html&
&meta charset=&UTF-8&&
&title&Hello World!&/title&
&/head&
&h1&Hello World!&/h1&
// 当然,我们也可以引入其他 js 文件
require('./renderer.js')
&/script&
&/body&
&/html&
3.render.js
let myNotification = new Notification('Jartto', {
body: 'Hello Everybody!'
myNotification.onclick = () =& {
console.log('Click!')
如果你不懂这是在干什么,建议先阅读
最后一步,设置启动项,打开 package.json:
将 &main&: &index.js& 修改为:
&main&: &app/main.js&,
同时增加 &start&: &electron .& 配置项,指定使用 Electron 启动:
&scripts&: {
&start&: &electron .&,
&test&: &echo \&Error: no test specified\& && exit 1&
接下来,我们打开命令行,执行:
npm run start
如果你看到了窗口中的 Hello World!,那么恭喜你,示例已经正确运行了。
五、继续升级
我们通过手动创建完成了和官网起手项目类似的功能,但路还有些远,我们来做一些升级工作,使用 react 来开发项目。
react 需要额外的一些解析,所以我们借助
来动态编译。
先来安装 react, react-dom, electron-compile,如果太慢请考虑使用 cnpm :
npm install electron-compilers --save-dev
npm install react react-dom electron-compile --save
因为要预编译文件,所以我们需要为 electron-compile 指定入口文件,在项目根目录下新建 index.js 文件,写入:
注意,记得将 package.json 中,做同步修改 &main&: &index.js&
const path = require('path');
let appRoot = path.join(__dirname, '');
require('electron-compile').init(appRoot, require.resolve('./app/main'));
这里先指定在 app 目录下的启动文件 main.js,其实也就是该目录下的主进程文件。
接下来,我们用 react 改写一下 render.js,修改如下:
import React from 'react';
import ReactDOM from 'react-dom';
class MainWindow extends React.Component {
constructor(props) {
super(props);
this.state = {
render() {
Good, React Ready!
&/div&
const mainWndComponent = ReactDOM.render(
&MainWindow/&, document.getElementById('content'));
最后一步,去 index.html 注册 react 组件:
&!DOCTYPE html&
&meta charset=&UTF-8&&
&title& Electron-OCR &/title&
&/head&
&div id=&content&&&/div&
require('./render.js');
&/script&
&/body&
&/html&
基本工作完成,我们试着启动一下:
npm run start
什么,没启动起来?
Uncaught SyntaxError: Unexpected token import
不要紧张,我们还需要增加个编译规则文件,这很重要!
六、配置编译规则
大家可能都配置过或者间接使用过
做转换编译,electron-compile 中的 .compilerc 如出一辙,我们先创建文件:
touch .compilerc
然后写入我们的规则,如下:
&development&: {
&application/javascript&: {
&presets&: [&env&, &react&],
&sourceMaps&: &inline&,
&text/less&: {
&dumpLineNumbers&: &comments&
&production&: {
&application/javascript&: {
&presets&: [&env&, &react&],
&sourceMaps&: &none&,
这里记得安装依赖包文件 babel-preset-env 和 babel-preset-react
npm install babel-preset-env babel-preset-react --save-dev
OK,搞定,来看看此时我们的 package.json 文件:
&name&: &electron-ocr-demo&,
&version&: &1.0.0&,
&description&: &&,
&main&: &index.js&,
&scripts&: {
&start&: &electron .&,
&test&: &echo \&Error: no test specified\& && exit 1&
&keywords&: [
&electron&,
&author&: &jartto&,
&license&: &ISC&,
&devDependencies&: {
&babel-preset-env&: &^1.6.1&,
&babel-preset-react&: &^6.24.1&,
&electron&: &^1.7.10&,
&electron-compilers&: &^5.9.0&
&dependencies&: {
&electron-compile&: &^6.4.2&,
&react&: &^16.2.0&,
&react-dom&: &^16.2.0&
此时的项目结构应该如下:
├── app
├── index.html
├── main.js
└── render.js
├── node_modules
├── ...
├── service
├── .compilerc
├── .gitignore
├── index.js
├── package.json
└── README.md
一切就绪,启动 npm run start,如果你看到:Good, React Ready! ,那么恭喜你,react 和 compile 文件已经可以正常工作了。
六、热启动
太棒了,美中不足的就是 react 不能热加载,没关系,我们还有 electron-reload,先安装依赖包:
npm install electron-reload --save-dev
同时,需要在主进程文件 main.js 中增加如下代码:
const isDevelopment =
if (isDevelopment) {
/* eslint-disable */
require('electron-reload')(__dirname, {
electron: require('${__dirname}/../../node_modules/electron'),
ignored: /node_modules|[\/\\]\./
重新启动,快更新文件试试吧,热更新也已经就绪了!
七、回顾小结
实践篇,我们从零到一搭建了一个用 react 来开发 electron 的简单框架,完成了支持 es6 的编译配置,同时也添加了热加载。到这里,项目已经初具规模,你可以去做任何想做的事情了~
下一节,我们将继续深入,对框架做一些易用性的优化以及补充,逐步完善项目。传送门在此:。
你可能感兴趣的文章:
本书是Javascript入门教程。Javascript是Web开发中应用最早、发展最成熟、用户最多的脚本语言。其语法简洁,代码可读性在众多脚本语言中最好,它在使用时不用考虑数据类型,是真正意义上的动态语言。本书总分为四篇,共21章...
如今,各种开发框架层出不穷,各有千秋。哪些是去年较受开发者关注的呢?前不久,云适配根据Github上的流行程度整理了2014年最受欢迎的6个前端开发框架,并进行对比说明,希望帮助有需要的朋友选择合适自己的前端框架。
1. Bootstrap...
Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端。http.Server 是一个基于事件的 HTTP 服务器,它的核心由 Node.js 下层 C++部分实现,而接口由 Jav...
本报告数据,来源于百度统计所覆盖的超过150万的站点,而不是baidu.com的流量数据。
注:奇虎360浏览器份额在2010年10月至2011年3月,和2012年9月以来,两次大幅下降,是因为360浏览器去掉了原本的浏览器特征(User...
在互联网行业中,一个行业从零到成熟,开发者生态也是对应的,我们今年看到很多大公司,包括像微软和Google,也参与到了HTML5
开发者生态的建设当中。关于HTML5移动游戏的开发和盈利生态的走向又该去往何处?下面我们来试着讨论一下。
IO.js 是为 V8 引擎编写的基于事件 IO 的实现。Node.js中一群不满Joyent公司控制的信徒发起了另外一个项目io.js,即另外一个支持服务器端JavaScript的变种,称为io.js或iojs 。
IO.js 1.0.0...
2015如何让做好web2.0和ajax的优化?JavaScript中文网总结当下提出以下四大优化意见,旨在帮助W前端开发人员有效利用APM解决上述问题。
随着Web应用程序速度与效率快速增长,网站已经成为企业与其客户进行交互的第一途径——...
随着HTML5的定稿,以及JS的迅速发展,我们有理由相信,在接下来的一年里,将会涌现出大量的WEB应用,网站的表现形式将不再仅仅局限于过去的形式,必将在2015年引来一次重大改革!
规则调整:日开始,Mac操作系统中不再包含ipad、iphone市场份额。
1.离线缓存为HTML5开发移动应用提供了基础
HTML5 Web Storage API可以看做是加强版的cookie,不受数据大小限制,有更好的弹性以及架构,可以将数据写入到本机的ROM中,还可以在关闭浏览器后再次打开时恢复数据,以减少...
别说了,前端今年要变天了扫描二维码关注公众号了解详情
本站(www.javascriptcn.com)所提供的等资源来源互联网,仅供学习研究之用,版权归该资源的合法拥有者所有,如用于商业用途,请购买正版,原作者若认为本站侵犯了您的版权,请联系我们,我们会立即删除!
鄂ICP备号-1
没有账号?nginx 平滑重启与升级的实现方法
转载 &发布时间:日 17:16:46 & 作者:
有时候我们需要平滑重启nginx服务,防止出现问题,这里简单的总结,方便需要的朋友
如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,同样可以通过发送系统信号给Nginx主进程的方式来进行.不过,重启之前,要确认Nginx配置文件(nginx.conf)的语法是正确的,否则Nginx将不会加载新的配置文件。通过以下命令可以判断Nginx配置文件是否正确:
/usr/local/webserver/nginx/sbin/nginx&&& -t& -c/usr/local/webserver/nginx/conf/nginx.conf如果配置文件不正确,屏幕将会提示配置文件的第几行出错:
[emerg]:unknowndirective"abc"inlusrllocaUwebserverlnginxjconflnginx.conf:55Configurationfile/usr/local/webserver/nginx/conf/nginx·conf test failed
如果配置文件正确,屏幕将提示以下两行信息:
The configuration file/usr/loca/webserver/nginx/conf/nginx.conf syntax is& okConfiguration file/usr/local/webserver/nginx/conf/nginx.conf test is& successful
这时候,就可以平滑重启Nginx了。 代码如下: /usr/local/www/nginx/sbin/nginx -xs reloadx
代码如下: killx -HUP `cat /usr/local/www/nginx/logs/nginx.pidx`
下面是一些补充:
平滑重启 kill -HUP `cat /usr/local/www/nginx/logs/nginx.pid`
平滑升级nginx
cd /yujialinwget http://nginx.org/download/nginx-1.0.6.tar.gztar zxvf nginx-1.0.6.tar.gzcd nginx-1.0.6
/usr/local/www/nginx/sbin/nginx -Vnginx: nginx version: nginx/1.0.4nginx: built by gcc 4.1.2
(Red Hat 4.1.2-50)nginx: configure arguments: --prefix=/usr/local/www/nginx --with-pcre=/yujialin/pcre-8.12 --with-http_stub_status_module --with-http_gzip_static_module这步是要得到编译参数
./configure --prefix=/usr/local/www/nginx --with-pcre=/yujialin/pcre-8.12 --with-http_stub_status_module --with-http_gzip_static_module用上面这段编译
然后make,千万别make install
make完了 在objs目录下就多了个nginx,这个就是新版本的程序了mv /usr/local/www/nginx/sbin/nginx /usr/local/www/nginx/sbin/nginx-cp objs/nginx /usr/local/www/nginx/sbin/nginx
/usr/local/www/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfu
make upgrade 执行升级
执行完后 /usr/local/nginx/sbin/nginx -Vnginx: nginx version: nginx/1.0.6nginx: built by gcc 4.1.2
(Red Hat 4.1.2-50)nginx: configure arguments: --prefix=/usr/local/www/nginx --with-pcre=/yujialin/pcre-8.12 --with-http_stub_status_module --with-http_gzip_static_module
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
【Ionic】Ionic实现iOS与Android端代码『热更新』与Android升级下载功能 ( v1.3.x版本 )
摘要:热更新的好处通常ionic源码可包括(HTML,JavaScript,CSS文件和其他资源),往常我们必须通过提交程序到应用市场,经过漫长的审核后才可让用户更新,每改动一个小地方都需要重新打新版本。现在ionic通过使用cordova插件cordova-hot-code-push实现实现iOS与Android端代码『热更新』功能,可不必发布应用市场经平台审核,便可动态更新App源码的目的。热更新实现原理基础实现方法1、安装cordova-hot-code-push-cli使用
热更新的好处 通常ionic源码可包括(HTML,JavaScript,CSS文件和其他资源),往常我们必须通过提交程序到应用市场,经过漫长的审核后才可让用户更新,每改动一个小地方都需要重新打新版本。
现在ionic通过使用cordova插件cordova-hot-code-push实现实现iOS与Android端代码『热更新』功能,可不必发布应用市场经平台审核,便可动态更新App源码的目的。
热更新实现原理
基础实现方法 1、安装 cordova-hot-code-push-cli
使用命令安装 npm install -g cordova-hot-code-push-cli
主要是生成检测配置文件,通常是在 www 目录下动态生成 chcp.json 和 chcp.manifest 生成两个文件,插件源码地址:
https://github.com/nordnet/cordova-hot-code-push
2、创建项目
包含 www 目录的项目,已有项目无需重新创建
3、安装热更新插件
使用命令安装 ionic plugin add cordova-hot-code-push-pluginionic plugin add cordova-hot-code-push-local-dev-addon
4、打包封装
执行命令cordova-hcp build 或者 cordova build
5、启动 hcp server 服务
重新打开一个终端窗口,cd到项目目录(包含www目录的父级目录)执行命令 cordova-hcp server
稍等会在 www 目录下动态生成 chcp.json 和 chcp.manifest 生成两个文件
6、正常在运行完成前4步以后会在我们config.xml动态加入如图所示链接地址
图中链接地址https://1980480f.ngrok.io/chcp.json,修改为在第8步www目录里chcp.json文件可访问的地址:
例如:http://kaibin.me/hotcode/chcp.json
7、运行代码或打包我们的App
8、修改我们想要更新的代码
然后修改 chcp.json 文件的 content_url ,此地址为我们项目放置的地址 { &autogenerated&: true, &release&: &-11.36.13&, &content_url&: &http://kaibin.me/hotcode&, &update&: &now&}
9、将项目www目录代码上传到服务器可访问的目录里
例如在服务器根目录创建hotcode命名的目录将项目www里的文件上传上去
10、 关闭我们的应用重新打开,看看代码是否更新成功
**优化流程 1.创建cordova-hcp模板**
线上测试可卸载掉 cordova-hot-code-push-local-dev-addon防止每次自动更新新版本,可通过命令卸载: cordova plugin remove cordova-hot-code-push-local-dev-addon
可以在 cordova 项目根目录下放一个 cordova-hcp.json,这是个模板文件 这样每次执行 cordova-hcp build
就会利用这个模板生成新的 chcp.json,而不用手动更改 www/chcp.json了。 cordova-hcp.json内容如下: { &autogenerated&: true, &content_url&: &http://kaibin.me/hotcode&, &min_native_interface&: 1, // app内核版本号 &ios_identifier&: &https://itunes.apple.com/cn/app/***&, // iOS上线后的地址,用于内核版本更新后的确认跳转 &update&: &now&}
2.Build options build设置,配置开发环境、测试环境与生产环境
在 /Cordova/Testproject/ 下创建 chcpbuild.options 文件,文件内容如下: { &dev&: { &config-file&: &https://dev.kaibin.me/hotcode/www/chcp.json& }, &production&: { &config-file&: &https://kaibin.me/hotcode/chcp.json& }, &QA&: { &config-file&: &https://test.kaibin.me/hotcode/chcp.json& }}
这样在build app的时候, 转为开发要用的服务器, 可执行: ionic build -- chcp-dev
结果就是, 特定拍下的 config.xml 文件(比如, /Cordova/TestProject/platforms/android/res/xml/config.xml) 变成了这样: &chcp& &config-file url=&https://dev.kaibin.me/hotcode/chcp.json&/&&/chcp&
当我们需要上架app的时候 (Google Play, App Store) - 我们正常build: ionic build --release
这样 config.xml 不会改变
如果没有使用 chcpbuild.options 插件会使用 config.xml 里面默认的值。
文件必须位于 Cordova 项目根目录. 在这个文件里面,指定(JSON格式) 所有想改变 config.xml 文件的配置,源文件 config.xml (Cordova项目根目录) 不会发生变动, 改变的是 特定平台下的 config.xml (在cordova build过程的 after_prepare 阶段)。
通过min_native_interface监控app是否提示更新
所需最小的外壳app版本. 这是app的build版本号,是个整型数字, 不是应用商店中看到的形如”1.0.0”字符串。
在 config.xml中,这样指定build版本号: &chcp& &native-interface version=&1&/& &config-file url=&http://kaibin.me/hotcode/chcp.json&/&&/chcp&
与www目录下的chcp.json里面的min_native_interface数值相对应
例如:app外壳里的config.xml是这样的: &chcp& &native-interface version=&1&/& &config-file url=&http://kaibin.me/hotcode/chcp.json&/&&/chcp&
若服务器里的min_native_interface也对应是1,不会出现提示用户升级的状态,正常修改www目录的内容通过更新release值,可实现热更新。 { &autogenerated&: true, &content_url&: &http://kaibin.me/hotcode&, &min_native_interface&: 1, // app内核版本号 &ios_identifier&: &https://itunes.apple.com/cn/app/***&, // iOS上线后的地址,用于内核版本更新后的确认跳转 &release&: &-12.22.11&, &update&: &now&}
假设你的外壳app加了个新的插件,应该会更新外壳app。为了防止用户通过热更新下载了不适合他现有外壳app的web内容,你应该设置 min_native_interface 这个值 { &autogenerated&: true, &content_url&: &http://kaibin.me/hotcode&, &min_native_interface&: 1, // app内核版本号 &ios_identifier&: &https://itunes.apple.com/cn/app/***&, // iOS上线后的地址,用于内核版本更新后的确认跳转 &release&: &-12.28.21&, &min_native_interface&: 2, &update&: &now&}
插件加载到这段json的时候, 发现 min_native_interface 比当前外壳app的build号要大,便不会下载web内容。而是触发一个chcp_updateLoadFailed 错误通知, 告诉用户需要升级外壳app了。
chcp.json中update字段含义
指定了什么时候安装web内容更新,支持的值有:
start - app启动时安装更新,默认值 resume - app从后台切换过来的时候安装更新 now - web内容下载完毕即安装更新
引导用户去应用商店更新外壳app或下载新版本 通过给web更新设置最小支持的外壳app版本 min_native_interface。 如果插件检查发现用户安装的外壳app版本比服务端新的web内容要求的版本要低,就会触发错误事件,错误码: chcp.error.APPLICATION_BUILD_VERSION_TOO_LOW
通过这个错误码可通过弹窗提示用户去升级,跳转到AppStore或下载新安装包(国内因GFW,跳转到google应用商店就算了= =)
chcp.json 里增加min_native_interface的值
js端监听相应事件,并在出现错误的时候调用 chcp.requestApplicationUpdate 方法
cordova-plugin-file,cordova-plugin-file-transfer,cordova-plugin-file-opener2先把这几个插件安装好 var appUpdate = { // Application Constructor initialize: function() { this.bindEvents(); }, // Bind any events that are required. // Usually you should subscribe on 'deviceready' event to know, when you can start calling cordova modules bindEvents: function() { document.addEventListener('deviceready', this.onDeviceReady, false); document.addEventListener('chcp_updateLoadFailed', this.onUpdateLoadError, false); }, // deviceready Event Handler onDeviceReady: function() { }, onUpdateLoadError: function(eventData) { var error = eventData.detail. // 当检测出内核版本过小 if (error &;&; error.code == chcp.error.APPLICATION_BUILD_VERSION_TOO_LOW) { var dialogMessage = '有新的版本,请下载更新'; // iOS端 直接弹窗提示升级,点击ok后自动跳转 if(ionic.Platform.isIOS()){ chcp.requestApplicationUpdate(dialogMessage, this.userWentToStoreCallback, this.userDeclinedRedirectCallback); // Android端 提示升级下载最新APK文件 }else if(ionic.Platform.isAndroid()){ var confirmPopup = $ionicPopup.confirm({ template: '有新的版本,请下载更新', cssClass: 'popup', cancelText:'取消', okText:'升级' }); confirmPopup.then(function (res) { if (res) { $ionicLoading.show({ template: &已经下载:0%& }); window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function(fileEntry) { fileEntry.getDirectory(&***(app名称)&, { create: true, exclusive: false }, function (fileEntry) { //下载代码 var fileTransfer = new FileTransfer(); fileTransfer.download(&app下载地址&, fileEntry.toInternalURL()+&***(app名称).apk&, function(entry) { // 打开下载下来的APP cordova.plugins.fileOpener2.open( entry.toInternalURL(),//下载文件保存地址 'application/vnd.android.package-archive', {//以APK文件方式打开 error: function(err) { }, success: function() {} }); }, function(err) { },true); fileTransfer.onprogress = function(progressEvent) { $timeout(function () { var downloadProgress = (progressEvent.loaded / progressEvent.total) * 100; $ionicLoading.show({ template: &已经下载:& + Math.floor(downloadProgress) + &%& }); if (downloadProgress & 99) { $ionicLoading.hide(); } }); }; },function(err){alert(&创建失败&)}); }); } }); } } }, userWentToStoreCallback: function() { // user went to the store from the dialog }, userDeclinedRedirectCallback: function() { // User didn't want to leave the app. // Maybe he will update later. } }; appUpdate.initialize();
iOS与Android的出现的问题 在build ios的app时config.xml的 &name&***&/name&
name不可使用中文,设置app名称为中文,可通过Xcode修改Resources目录下的*-Info.plist内的Bundle display name字段即可
感谢分享:http://kaibin.me//ionic-hotcode/
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
为您提供0门槛上云实践机会
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
【Ionic】Ionic实现iOS与Android端代码『热更新』与Android升级下载功能 ( v1.3.x版本 )相关信息,包括
的信息,所有【Ionic】Ionic实现iOS与Android端代码『热更新』与Android升级下载功能 ( v1.3.x版本 )相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International

我要回帖

更多关于 electron登录功能 的文章

 

随机推荐