• ios开发小结之app发布升级


    在近两个月的开发中,遇到了挺多问题的,几天加班加点,最后还是在年前发布并更新了一个版本,欢迎下载无觅下载

    最头疼的问题是提交app审核,之前的工程不太规范,导致一些文件icon没有设置好,直接validate就失败了几次。validate通过后 便upload,但upload过程中又出错了,原因是java版本不对(xcode使用java类库进行上传),解决方法在见stackoverflow上的回答。 一切搞定后,还得对付国内的龟速网络,一个15M不到的ipa竟然上传了快半个小时,算下来速度连10Kb/s都不到(带宽可是20M的呀!),聊着天把 ipa上传给app store都快晚上2点了,坑爹呀。再说说关于app审核发布的问题,“无觅阅读”因为metadata被rejected一次,原因在于我们的描述里出 现了安卓这个词,话说apple这个政策也真是小家子气,这么封闭可别最后落个固步自封的境地呀。新app审核的时间大概在2周左右,主要是排队的时间 长,花费了一周多的时间,真正审核的时间也就2-3天,更新app的审核周期更短些,我们两个版本都刚好花费1周的时间。另外需要注意的在创建版本时要选 择“Hold for Developer Release ”,避免由于时差,app半夜就发布出去了,而导致运营和推广安排滞后。

    无觅是小团队,测试方面人力不足,做得不是很好,app推出后没有少挨用户骂。不断迭代,提高app质量是发布后开发人员的重要工作,而收集 crash log是则是fix bug的第一步。我们在app中同时使用了umeng和GA两种统计工具,同时umeng还兼有收集crash log的用处。但umeng sdkv2.13之前的版本都存在Crash Log中dSYM UUID生成的bug,导致能看到错误日志,也无法将错误对应到具体代码。使用了umeng的分析工具,错误分析变得简单,但分析的基本原理还是要懂些 (全是编译原理的东东),可以看看下面这些资料:

    1. 连接crash log的符号表
    2. mac下反汇编工具
    3. 连接符号表的原理(这个刚好是umeng sdkv2.1.3之前版本的bug)

    上面这点资料很少,但比较有用。从umeng分析工具和资料3知道,每次发布新版本后,都需要将archive和当前版本的代码保存下来以便日后分析crash log。

    对于国内开发者而言,除了提交app给app store,还可以提交给很多的越狱市场(目前国内知道的有5、6个),但一个个手动打包很麻烦,所以写了个脚本来做这件事情。

     1 #!/bin/sh
     2 on_fail() {
     3     echo "$*" >&2
     4     exit 1
     5 }
     6 
     7 build() {
     8     echo "using configuration ${CONFIG}"
     9     echo "version suffix:${VERSION}"
    10     echo "cleaning build folder:${BUILD_FOLDER}"
    11     rm -rf "${BUILD_FOLDER}" || die "error when cleaning build folder"
    12     echo "cleaning build done"
    13     xcodebuild -configuration "${CONFIG}" build DISPATCHER_CHANNEL=${DISPATCHER_CHANNEL} BUNDLE_VERSION=${VERSION} || on_fail "build failed"
    14 }
    15 
    16 
    17 package() {
    18     echo "making ipa…"
    19     IPA_NAME="${APPLICATION_NAME}_${VERSION}_${DISPATCHER_CHANNEL}.ipa"
    20     xcrun -sdk iphoneos PackageApplication -v "${BUILD_FOLDER}/${CONFIG}-iphoneos/${APPLICATION_NAME}.app" -o "${RELEASE_FOLDER}/${IPA_NAME}" --sign "${DEVELOPER_NAME}" --embed "${PROVISONING_PROFILE}" || on_fail "package failed!"
    21     echo "finished making ${IPA_NAME}"
    22 }
    23 
    24 usage() {
    25     echo "Usage: $0 version"
    26     exit 1
    27 }
    28 
    29 #setup
    30 if [ $# -ne 1 ]; then
    31 usage
    32 fi
    33 PROJ_FOLDER="$(pwd)"
    34 RELEASE_FOLDER="${PROJ_FOLDER}/ipa"
    35 BUILD_FOLDER="${PROJ_FOLDER}/build"
    36 APPLICATION_NAME='MyApp'
    37 CONFIG='Release'
    38 DEVELOPER_NAME="MyComp"
    39 PROVISONING_PROFILE="config/production.mobileprovision"
    40 VERSION=$1
    41 
    42 if [ ! -d "$RELEASE_FOLDER" ]; then
    43 mkdir "$RELEASE_FOLDER"
    44 fi
    45 for line in $(cat config/stores.dat)
    46 do
    47 DISPATCHER_CHANNEL="${line#*:}"
    48     build
    49     package
    50 done
    51 echo "build successfully!"
    52 exit 0
    

    执行上述脚本必须安装xcode的command line tools,商店渠道保存在config/stores.dat文件中,而开发者证书则为config/production.mobileprovision。

  • 相关阅读:
    Atitti 图像处理 图像混合 图像叠加 blend 原理与实现
    Atitit Gaussian Blur 高斯模糊 的原理and实现and 用途
    Atitit 图像处理 灰度图片 灰度化的原理与实现
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    Atitit 实现java的linq 以及与stream api的比较
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
    Atitit 图像处理--图像分类 模式识别 肤色检测识别原理 与attilax的实践总结
    Atitit apache 和guava的反射工具
    atitit。企业的价值观 员工第一 vs 客户第一.docx
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3190747.html
Copyright © 2020-2023  润新知