zoukankan      html  css  js  c++  java
  • 通过xcode或xcodebuild进行打包

    在实际应用中需要用到debug的安装包,所以决定自己学习一下打包,打包过程中遇到了各种问题,下面记录了一下我在打包中用到的步骤,当然我还有很多不明白的地方,如果有不对的地方,希望可以大家可以指出
     
    环境要求
    1.安装xcode
    直接在AppStore里下载即可,是免费的
     
    2.安装CocoaPods(包管理工具)
     
    3.安装protobuf
    brew install protobuf
    protoc --version
     
    说明:注意protobuf的版本,比如我们需要的是低版本的protocbuf 2.4.1。protobuf高版本和低版本的语法是不一样的
    安装protobuf2.4.1的方法和可能遇到的问题参照我另一篇随笔:http://www.cnblogs.com/meitian/p/5791042.html
     
     
    通过个人appleid打debug包安装到机器
    如果打release包是一样的,只是需要有可以打release包的证书
    个人的applieid及时不去买证书,也支持打debug包了,只有.app格式的,可以直接安装到真机上
     
    1.注册appleid
     
    2.xcode添加appleid
    Xcode->Preferences…,弹框选择Accounts。点击左下角的+号,选择Add Apple ID…。然后选择填写自己的applied账号即可。
     
     
    3.修改工程的General的Identity。
    Bundle Identifiable取一个别人没用过的名字。Team选择自己刚添加applied时生成的一个Team。(可以看到是一个Personal Team)
     
    build setting的tab下包含了签名等选项,默认都是没问题的,如果有问题就按照实际遇到的错误提示来看吧。
     
    最终只要保证Identity下Fix issue没有了就是对的,如果有就点一下Fix Issue按钮,查看具体错误,全部解决后就可以了
     
    4.buld编译
    Product->Build,生成targetname.app文件夹
     
    存放位置默认在/Users/用户名/Library/Developer/Xcode/DerivedData/产品名称-emqwbznkiewpmvggtnsesohciziq/Build/Products
     
    编译结果默认的路径是可以更改的,路径是在Xcode->Preferences...->Locations->Derived Data决定,可以通过Advanced...去更改,具体详见下面两个图
     
    更改build结果存放路径:
     
    5.在模拟器或真机中直接安装包
     
    第一步选择要安装的设备:点击下图红框中的位置选择连上的真机或模拟器
     
     
    第二步run:点击Product->Run
     
    打包生成ipa包
    一、打包前提
    1.首先需要导入证书和Provisioning配置文件,我这里用的是团队共享的
    导入证书:双击.p12文件,如果有密码输入密码,自动安装到钥匙串里了(launchpad->其他->钥匙串)
    导入Provisioning配置文件:双击.mobileprovision共享配置文件,该文件就会被复制到存放配置文件的目录(~/Library/MobileDevice/Provisioning Profiles)
     
    导入的证书,那Bundle Identifier就必须和证书中的一致,否则会编译失败
     
    2.必须连接了真机,否则Archive是置灰的
    通过Window->Devices去添加设备
     
    二、通过xcode打包
    Product->Archive,然后在打包成功页面export即可
     
     
    注意:只有appleid没花钱的那种是不能export出.ipa文件的
     
    三、通过命令行xcodebuild打包生成ipa
     
    第一步:清理
    xcodebuild -target targetname clean
    清理后会防止编译时遇到一些奇怪的问题
     
    第二步:编译
    使用pod后工程目录下有两个文件:xxx.xcworkspace,xxx.xcodeproj
    xcworkspace是工作区文件,xcodeproj是工程文件,工作区文件包含工程文件。
    如果有工作区xcworkspace的直接用工作区去编译就可以了
     
    xcodebuild -scheme shemename -workspace xxx.xcworkspace build
     
    如果没有xcworkspace文件,只有xcodeproj文件,就用下面的命令去编译
    xcodebuld -target targetname build
     
    备注:在build时候有很多其他参数可以选择,例如ARCHS、VALID_ARCHS等,根据自己需要来加吧,会影响到打包后结果,这里我也不是很清楚各个参数
     
    存放位置默认在/Users/用户名/Library/Developer/Xcode/DerivedData/产品名称-emqwbznkiewpmvggtnsesohciziq/Build/Products,参考上面用xcode编译时的结果
     
    第三步:打包
    找到编译成的targetname.app文件夹,使用下面的命令进行打包生成.ipa文件
     
    xcrun -sdk iphoneos PackageApplication -v targetname.app所在目录/targetname.app"  -o 想要输出的目录/文件名.ipa
     
     
     
     
     
    打包时遇到的问题
    问题1:提示protoc版本太高
    This file was generated by an older version of protoc which is
    或者有些依赖包,通过高版本的pod根本就没装成功
     
     
    解决方法:设置一个低版本的protoc,可以参考我的另一篇博客http://www.cnblogs.com/meitian/p/5791042.html
     
    问题2:很多include的文件找不到
     
    解决方法:
    将Build Setting中的Search Paths,Header Search Paths的寻找方式都改为non-recursive(非递归)
     
     
  • 相关阅读:
    docker 常用命令
    linux 查看服务器序列号
    centos 7 lsof 安装使用
    Jenkins +svn +maven +tomcat+ ansible 自动化批量部署
    nginx 部署前期一定要关闭selinux
    yum 执行不了, 解决方法
    IIS发布网站
    使用TreeView 使用多选功能
    C#类和接口
    关于C#垃圾回收
  • 原文地址:https://www.cnblogs.com/meitian/p/5807764.html
Copyright © 2011-2022 走看看