• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zongren
V2EX  ›  程序员

创建 Android、iOS 打包服务器

  •  
  •   zongren · Oct 14, 2016 · 6685 views
    This topic created in 3526 days ago, the information mentioned may be changed or developed.
    我们公司有个项目,需要根据不同的客户快速打包( apk 、 ipa ),然后上传市场,请问有什么好的解决办法吗
    目前想到的办法是搭建内部服务器( macOS ),客服输入客户的相关信息(包名,第三方应用 App Key ,图标等),然后复制一份代码并修改(字符串匹配),调用命令行打包工具,客服手动上传 apk 、 ipa 到市场
    主要复制代码并修改这一步
    27 replies    2016-10-14 14:47:56 +08:00
    0x5e
        1
    0x5e  
       Oct 14, 2016
    可以把配置放在一份 plist 文件里,和图片资源一样只是替换文件,尽量不改代码
    murmur
        2
    murmur  
       Oct 14, 2016
    我们用的 cordova 30 多个发布版(没办法。。虽然是一个东西,但是用户要求自己的 logo 乱七八糟一堆 图标什么的,然后 bundle Id 也一堆,乱七八糟 provision 什么)
    只能改总配置 cordova 重新生成项目
    另外 xcode 的脑残工程格式绝对不是人能理解的 一层套一层 如果你只是认为每个文件都有一个 uuid 就错了 他那个嵌套的层级关系恶心到你想吐 同样的东西你不知道要改几次
    grayon
        3
    grayon  
       Oct 14, 2016
    jenkins 持续集成环境
    zongren
        4
    zongren  
    OP
       Oct 14, 2016
    @0x5e 你是说需要用到这些信息的时候,用代码读取 plist 吗
    zongren
        5
    zongren  
    OP
       Oct 14, 2016
    @grayon 好的,我会了解一下
    zongren
        6
    zongren  
    OP
       Oct 14, 2016
    @murmur 你们是人工改吗
    murmur
        7
    murmur  
       Oct 14, 2016
    @zongren 写了个 nodejs 脚本去编辑这些信息 本来是想挂钩 cordova 的几个步骤的 后来发现有些东西光挂钩做不到 干脆就直接在 build 前全改好了
    zongren
        8
    zongren  
    OP
       Oct 14, 2016
    @murmur 是一个一个文件替换字符串吗
    0x5e
        9
    0x5e  
       Oct 14, 2016
    @zongren 是的,这样还有个好处,其实不用再编译了,把 ipa 解压,替换资源文件重新签名就可以了。。
    hellboys
        10
    hellboys  
       Oct 14, 2016
    建立不同的 Configuration, Project-UserA.xcconfig,Project-UserB.xcconfig

    https://github.com/facebook/pop/tree/master/Configuration/Projects
    zongren
        11
    zongren  
    OP
       Oct 14, 2016
    @0x5e 这个挺好,能解决第三方配置的修改问题
    holmesabc
        12
    holmesabc  
       Oct 14, 2016   ❤️ 1
    我是用 jenkins ,打 Android
    配合各种 Bash 脚本,偶尔写几个专用的命令行小工具。
    sed 来修改 gradle 参数等。

    jenkins 还自带 API ,完全也可自己封个后台给客户
    chmlai
        13
    chmlai  
       Oct 14, 2016   ❤️ 1
    fastlane
    LancerXin
        14
    LancerXin  
       Oct 14, 2016   ❤️ 1
    docker+jenkins 比较好,有时候需要编译多个环境版本,环境变量需要隔离,配置比较麻烦,直接用 docker 隔离省事很多,以后迁移和方便
    zongren
        15
    zongren  
    OP
       Oct 14, 2016
    @holmesabc
    @LancerXin
    @chmlai
    多谢回复,正在了解
    xiubin
        16
    xiubin  
       Oct 14, 2016 via iPhone
    我之前做过一次,把不同的写成配置文件,编译之前用脚本修改
    zongren
        17
    zongren  
    OP
       Oct 14, 2016
    @hellboys 不太清楚怎么用,文件中定义的变量是作为宏吗
    agassi_yzh
        18
    agassi_yzh  
       Oct 14, 2016
    jenkins + Fastlane
    coagent
        19
    coagent  
       Oct 14, 2016
    我们 iOS 打包是 fastlane, Android 是 Gradle ,全部配置到 Jenkins 里去,内测用 Fir.im, Bugly ,在 Jenkins 里有多个 Project, 调不同的代码分支,该分支有代码更新自动打包,测试人员通过 fir.im, bugly 二维码下载 APP 安装。线上发布走 master 分支,手动触发打包。
    zongren
        20
    zongren  
    OP
       Oct 14, 2016
    @coagent 多谢回复!
    coagent
        21
    coagent  
       Oct 14, 2016
    @LancerXin Xcode 怎办?
    coagent
        22
    coagent  
       Oct 14, 2016
    @zongren 不客气的。客户的相关信息(包名,第三方应用 App Key ,图标等),这些可以做成配置类的脚本或者 XML 之类的,然后扔 GIT 里,每次打包时更新,然后脚本改相关信息后再继续打包.
    0x5e
        23
    0x5e  
       Oct 14, 2016
    @coagent 有个 linux 下的签名实现 isign ,不过还不太完善
    ma125125t
        24
    ma125125t  
       Oct 14, 2016
    做过,用的是 jenkins ,属于比较通用的 CI 了,但是要注意的是, iOS 的打包必须使用 OS 系统,你服务器得买一台 OS 云服务器或者用自己的 mac 搭建一个服务器。
    ma125125t
        25
    ma125125t  
       Oct 14, 2016
    jenkins 会不间断地自动去 git 上指定分支进行打包,并且可以根据时间戳、版本号修改当前版本号、编译号,打包完成后可以自动执行脚本,调用第三方市场的上传应用 API 。方便得很
    zongren
        26
    zongren  
    OP
       Oct 14, 2016
    @ma125125t 肯定要用 macOS 系统,这个还是知道的,其实用 git 分支也是个解决办法,不过时不时把需要修改的文件放在分支中,不会把整个项目放里面呢
    kitalphaj
        27
    kitalphaj  
       Oct 14, 2016
    现在主流是 fastlane , iOS 还有一个开源库叫 XcodeEditor ,你可以用它写一个程序专门生成特定的 target ,然后用 fastlane 编译打包上传。 Android 你可以借助 gradle 的 buildType 和 productFlavor 。 iOS 你基本上可以完全自动,但是 Android 你要是想发布 Play Store 暂时无法完成上传截图什么的。我们公司用这个方法搞的,挺方便。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4114 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 05:18 · PVG 13:18 · LAX 22:18 · JFK 01:18
    ♥ Do have faith in what you're doing.