• 打包时记录编译开始时间并在App中获取


     记录编译开始时间(自己的脚本一定要放在最前面,否则项目不会使用修改完成后的内容)

    # Type a script or drag a script file from your workspace to insert its path.
    app_build_time_path=${SRCROOT}/app_build_time.txt
    info_plist_path=${SRCROOT}/$TARGET_NAME/Info.plist
    app_build_date='APP_BUILD_DATE'
    build_date=`date '+%Y-%m-%d %H:%M:%S'`
    
    if [ -f $app_build_time_path ]
    then
    echo $build_date > $app_build_time_path
    echo `date '+%s'` >> $app_build_time_path
    fi
    
    echo "此次构建开始时间为$build_date"
    
    last_build_date=`/usr/libexec/PlistBuddy -c "Print :$app_build_date" ${info_plist_path}`
    if [[ -n $last_build_date ]]; then
        /usr/libexec/PlistBuddy -c "Set :$app_build_date $build_date" ${info_plist_path}
        echo "上次构建开始时间为$last_build_date"
        /usr/libexec/PlistBuddy -c Save ${info_plist_path}
        echo "更新编译时间完成"
    else
        /usr/libexec/PlistBuddy -c "Add :$app_build_date string $build_date" ${info_plist_path}
        /usr/libexec/PlistBuddy -c Save ${info_plist_path}
        echo "设置编译时间完成"
    fi
    app_build_time.txt 这是我配置的一个文件,不需要可以忽略掉

    变量赋值,不能有空格,否则报错

    字符串拼接不写+号

    echo $text > $filepath  将字符串输出到文件 

    常用的宏和常量

    参考内容:

    Xcode中的常量和环境变量

    $CURRENT_PROJECT_VERSION 当前工程版本号
    $SDK_NAME eg: iphonesimulator5.0
    $PLATFORM_NAME eg:iphonesimulator
    $EXECUTABLE_NAME eg:libUtilLib.a 可执行文件名
    $IPHONEOS_DEPLOYMENT_TARGET eg:5.0
    param description
    $TARGET_NAME 目标 target 名称
    $CONFIGURATION 当前编译配置文件名称。eg:Debug、Release
    $ACTION 当前编译处于哪个阶段。eg: build、compile
    $NS_BLOCK_ASSERTIONS 控制断言开、关(OC)

    $PROJECT_DIR 工程文件所在路径
    $SRCROOT 源代码所在路径,一般情况下和 $PROJECT_DIR 相同
    $BUILT_PRODUCTS_DIR build 成功后的,最终产品路径。包括 .app。可以在 Build Settings 下的 Build Products Path 中进行设置
    $BUILD_DIR build 文件夹。$BUILT_PRODUCTS_DIR 是该文件夹的子文件夹
    $BUILD_ROOT 一般和 $BUILD_DIR 相同(至于什么时候不同还没有详细探究)
    $SYMROOT 测设结果和上面相同
    * @executable_path
    这个变量表示可执行程序所在的目录. 比如 /path/QQ.app/Contents/MacOS/。使用第三方动态库时需要设置这个值

    @loader_path
    这个变量表示每一个被加载的 binary (包括App, dylib, framework,plugin等) 所在的目录.
    在一个程序中, 对于每一个模块, @loader_path 会解析成不用的路径, 而 @executable_path 总是被解析为同一个路径(可执行程序所在目录). 比如一个会被多个程序调用的 plugin, 位于 /path/Flash Player.plugin/Contents/MacOS/Flash Player, 依赖 /path/Flash Player.plugin/Contents/Frameworks/XPSSO.dylib. 那么 XPSSO.dylib 的 INSTALL_PATH 可以设置为 @loader_path/../Frameworks, 这样设置的话, 不论 Flash Player.plugin 目录放到什么位置, XPSSO.dylib 都能正确的被加载.
    ————————————————
    版权声明:本文为CSDN博主「kaiyuanheshang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/kaiyuanheshang/article/details/50284345

  • 相关阅读:
    C# 以GZip解压缩
    C# 获取时间戳(支持毫秒)
    C#中 DateTime 转 DateTimeOffset
    C# WPF中 SecureString 转 String
    C# 根据文件头判断文件类型
    C#中 MD5 32位加密
    C#中 Stream转为byte[]
    C#中byte[]转BitmapImage
    sql按天分组
    eclispe报错PermGen space
  • 原文地址:https://www.cnblogs.com/yuxiaoyiyou/p/14606682.html
Copyright © 2020-2023  润新知