起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22283|回复: 32

[分享] 【服务器部署分享】 IOS ipa打包发布分享(补充)

  [复制链接]

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
发表于 2016-8-4 14:57:07 | 显示全部楼层 |阅读模式
本帖最后由 kenminkajp 于 2017-2-5 19:57 编辑

一切开发的困难,在程序猿面前都是纸老虎。
WeX5虐我千百遍、我待WeX5如初恋
先得感谢WeX5越来越完善,为我们准备了许多资源。

基于WeX5发布部署ipa苹果app总共需要四个步骤
一、Mac_OS_X虚拟机搭建
1、安装虚拟机,我用的是VMware-workstation-full-12.1.1-3770994,并安装unlocker207才能支持MAC。
2、下载WeX5官网提供的MAC虚拟机,下载链接(官方最新的3.5)
3、接着进行虚拟机环境搭建,参考官方文档
      ※1:用最新Mac版本的WeX5_V*替换虚拟机中旧版WEX5,需与原来的WEX5文件夹同名。
      ※2:XCODE更换最新版的,目前是V7.31
      ※3:JAR更换最新版,目前是V1.8
      窍门:在WINDOWS设置共享文件夹,方便与代理服务器交换文件。用户用everyone,权限设成全部许可。
4、要点:代理服务器中的TOMCAT端口一定要设成8080,否则连接不上代理服务器。
              http://代理服务器IP8080/app-builder
5、代理服务器不爽时,还可以考虑直接用代理服务器中的WEX5进行打包。

二、苹果证书申请
1、注册苹果开发者帐户。(申请周期相当长的工作,建议列入开发准备工作日程)
     准备注册的找度娘问问,用关键字检索:苹果开发者注册
2、生成证书,请看WEX5官方提供参考。(生成证书是件挺麻烦的事)
     窍门:生成mobileprovision文件时,需要指定应用包名。把指定的应用包名最后一位用*(通配符)来代替。
                 这样生成的mobileprovision文件,就可以重复使用N次。
                 例:生成mobileprovision文件时,指定应用包名为com.justep.*
                        今后打包时,应用包com.justep.001、com.justep.002、com.justep.00n... 都可以用。
3、当遇到提示“此证书签发者无效”时,不着急,有解药
      要点: mobileprovision文件生成时,用得到的有三种模式
       20160804145222.png
      iOSApp Development:内部测试时用(需绑定UDID,限100台手机),配套测试P12文件
      Ad Hoc:小范围测试时用(需绑定UDID,限100台手机),配套发布P12文件
      App Store:正式发布时用,配套发布P12文件

三、WeX5项目打包
苹果证书申请好了后,就能进行打包了。参考官方的打包链接
      要点:
      打包WEX5的TOMCAT端口必须与服务器的端口一致。
      数据库的连接设置必须与服务器的设置一致。

四、项目部署发布
1、Apk或ipa安装包的下载部署:参考链接
      注意:搭建HTTPS服务,其实就是一个Web服务的https路径。参考的Kiko的帖子
      如何在GitHub上创建repository仓库的方法,直接参考
      还可以试用:蒲公英内测应用专家
      ※:iOSApp Development模式,小范围内测时,可以直接通过ITURE把IPA包安装到手机。
            安卓包则直接扫二维码下载安装。
2服务器的配置:我用的是KDDIVPS服务器。
      OS:把原来默认安装的CENTOS6.5,改装成WIN2012数据库中心版
      DB:mariaDB10.1(下载MSI版,安装后直接添加了MYSQL的服务。)
      JDK:1.8
      运行环境:WeX5-runtime-Java V3.5 官方参考文档官方下载
      要点(都是用多少泪水换来的)
  ①端口设置(我用的是80端口):WeX5-runtime-Java 解压目录/apache-tomcat/conf/server.xml
    20160804153237.png
  ② 配置数据源:WeX5-runtime-Java 解压目录/runtime/BaasServer/baas/db.config.m
         把开发环境的文件考来用就成,怎么设置,你懂的。
  ③ 数据库连接设置:WeX5-runtime-Java 解压目录/apache-tomcat/conf/context.xml
         中添加你连接数据库的设定。必须和打包时的设置一致。
        <Resourcename="数据名称" auth="Container"type="javax.sql.DataSource"
          driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/数据名称"
          username="******"password="*******" maxActive="100"maxIdle="30" validationQuery="select 1"/>
      其中validationQuery="select1是为了维持数据库连接池的连接。
  ④ 心得:
           a、关于打包后www文件夹(/model/Native/你的项目/www)中的内容。
                虽然每次打包时www文件夹中有个文件夹的名字每次都不一样。只有当你的UI修改后,才需要重装测试机上的APP。
                20160808170341.png
           b、关于baas_model_service.jar文件,只有当数据库连接, 自己写的方法修改后,才需要把文件更新到服务器。
           c、当使用到第三方的JAVA包时,一定要加到runtime\BaasServer\WEB-INF\lib文件夹中。
  ⑤ 把数据库和TOMCAT做成服务(个人喜好,需要的参考)
           把MYSQL做成服务。如果安装mariaDB10.1,下载MSI版,安装后直接添加了MYSQL的服务。
           把TOMCAT做成服务,只不过修改的是BIN文件夹中的service.bat中的相关设置。


service.zip

2.09 KB, 下载次数: 603

TOMCAT做成服务

评分

参与人数 6威望 +90 收起 理由
zzytxx + 15 很给力!
少翊 + 20 很给力!
biyaooo + 10 很给力!
Masion + 20 赞一个!
负暄 + 10 很给力!

查看全部评分

851

主题

2560

帖子

5714

积分

论坛元老

Rank: 8Rank: 8

积分
5714
QQ
发表于 2016-8-4 15:15:27 | 显示全部楼层
厉害,好详细啊!!
企业应用定制开发。X5开发者。
手机:15065117236
QQ:87356667
回复 支持 反对

使用道具 举报

56

主题

370

帖子

963

积分

高级会员

Rank: 4

积分
963
QQ
发表于 2016-8-4 19:28:02 | 显示全部楼层
恭喜!祝贺!佩服!

点评

一起加油!  发表于 2016-8-4 19:45
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-8-10 09:40:45 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-8-10 19:40 编辑

【分享】关于苹果手机运行WEX5的APP,下拉选择框中的首条记录无法被选中的对应办法
服务器OS:win2012 数据中心版
运行环境:WeX5-runtime-Java V3.5
其它:用代理服务器打的苹果IPA包和安卓APK包。
在安卓手机运行WEX5的APP,对下拉框的操作正常。但是在苹果机手机运行WEX5的APP,发现下拉框无法选择首条记录。
对应办法:给下拉框设置初始值。就是在初始化数据记录时,给下拉框的字段设置个初始值。
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-8-12 09:16:23 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-8-22 09:51 编辑

【分享】关于JavaMail正文编码的设定,希望伙伴们不要和我一样走弯路
上网问度娘,通常会得到如下答案:
message.setRecipient(RecipientType.TO, to);// 设置邮件标题
message.setSubject("测试邮件");// 设置邮件的内容体
message.setContent("这里是正文区域", "text/html;charset=UTF-8");// 发送邮件
Transport.send(message);
System.out.println("发送成功");

心得:

WEX5官方的案例(邮箱注册案例)中,用的是TEXT的格式,默认编码是GBK。
对应中文当然没有问题,可是要对应特殊字符就乱码。比如说:日文全角的中间点・

所以要改码成UTF-8
将原代码中
message.settext("这里是正文区域");    改成
message.settext("这里是正文区域"
, "text/html;charset=UTF-8") ;   结果当然是编译不通过。
后来经 wgs7909指点(感谢),改用HTMK的格式,就可以加编码了。
正确代码如下:
message.setContent("这里是正文区域", "text/html;charset=UTF-8");

顺便提一下:
文本格式的换行和HTML格式的换行是不一样的
文本格式换行:/r/n
HTML格式换行:<br/>










回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-8-22 10:05:49 | 显示全部楼层
本帖最后由 kenminkajp 于 2016-8-22 13:17 编辑

【分享】关于苹果应用的开发,建议小伙伴们在测试时,直接用苹果和安卓两种真机测试。
              把心得分享出来,希望伙伴们不要和我一样走弯路
WEX5的控件,在IPHONE手机和安卓手机上的表现还是有差别的。
所以建议小伙伴们在测试时,直接用苹果真机测试。
我第一次开发苹果手机应用,开发的过程基本上是自己的手机 S6 edge在测试。
经过一个多月的时间申请,终于拿到苹果的测试证书。
在安卓下测试表现不错的APP,到了苹果平台,就有点受考验了。
1、下拉选择控件的初始值无法选择第一条。     对应方法:把所有的下拉选择框加上初始值。
2、windowdialog控件的题头被调用页面的题头盖住。
等等表现不一样的地方。
我的对应方法是:用代理服务器、发布个模式3的手机应用。
这样就可以适时确认不同的控件在苹果手和安卓手机上的表现。

回复 支持 反对

使用道具 举报

377

主题

2594

帖子

5117

积分

论坛元老

Rank: 8Rank: 8

积分
5117
QQ
发表于 2016-8-22 10:19:08 | 显示全部楼层
LZV5
长春鱼熊企业管理咨询有限公司



X5开发出入库培训视频
(出处: 起步论坛)
回复

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-8-31 17:35:29 | 显示全部楼层
【分享】删除服务器上的文件(本文适合使用WEX5三个月以上的同学
模仿官方的随手拍的案例,给自己的应用添加图片上传功能。
问题:图片上传到服务器,还作了处理,真好。可是当用户删除图片时,只删除了数据记录。原文件还在服务器上。日积月累将成无条件占用服务器用钱买来的资源空间。
解决:添加了个方法。在用户删除数据记录的同时,删除在服务器上的原文件。
分三个步骤
一、获得文件
二、获得所在的服务器路
三、确认坏人在不在,在的话就抓

具体如下:
  1、在删除的操作中调用服务(添加以下代码),如何添加和调用方法可参考相关分享
      // 调用服务删除服务器上的原始文件
                justep.Baas.sendRequest({
                        "url" : "/visa/delFile",    //自己写的方法路径
                        "action" : "delFile",        //自己写的方法名
                        "async" : false,
                        "params" : {
                                storeFileName : this.storeFileName ,        // 把保存在服务器上的原文件名获得,并作为参数传给自己写的JAVA方法。storeFileName的获得方法很多,可参考随手拍。
                                ownerID : this.ownerID                        // 文件分类目录
                        },
                        "success" : function(data) {
                        }
                });
  2、DelFile.java文件内容如下:
      public class DelFile {
        //获得java方法所在的服务的路径,通过这个路径来拼得原文件保存的路径。本路径适合于WeX5-runtime-Java V3.5的文件结构,可根据实际情况适当调整。
        private static final String baasPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() + ".." + File.separator + ".." + File.separator  + "data/attachmentSimple/";
        //删除服务器端客户删除的图片原始文件
        public static JSONObject delFile(JSONObject params, ActionContext context) throws SQLException, NamingException {
                //获取文件路径
                String storeFileName = params.getString("storeFileName");
                String ownerID = params.getString("ownerID");
                //拼写文件路径和文件名
                String filePath = baasPath + ownerID + "/" + storeFileName ;
                File file = new File(filePath);
                //判断文件存在,就删除
                if (file.exists()) {
                    file.delete();
                }
                return null;
        }
}


DelFile.zip

702 Bytes, 下载次数: 407

回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-9-29 08:50:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

73

主题

345

帖子

1695

积分

金牌会员

Rank: 6Rank: 6

积分
1695
QQ
 楼主| 发表于 2016-9-29 08:57:23 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 20:51 , Processed in 0.069160 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表