标签: run-script

如何在Xcode的运行脚本中转义$ SRCROOT中的空格?

我有一个运行脚本,通过$ SRCROOT获取当前项目路径的值.我将此路径作为参数传递给脚本中的应用程序.问题是,如果我的项目名称有空格,$ SRCROOT不会评估完整,正确的路径.它在第一个空格后截断.

是否有可能在Xcode的这个运行脚本构建阶段中转义$ SRCROOT?

xcode escaping path ios run-script

3
推荐指数
1
解决办法
2710
查看次数

在多个目标之间共享相同的资产

我正在寻求有关如何在项目中的 4 个目标之间共享资产的建议:A.app、B.app、C.app、D.app


方法 1 - 最佳情况。我尝试过但没有成功

  1. 创建 Assets.bundle 目标。
  2. 在“运行脚本”阶段,将文件从 Assets.bundle 复制到 *.app 目标中,如下所示:

    cd "${BUILT_PRODUCTS_DIR}" ls Assets.bundle | sed '/Info.plist/d' | sed '/Info.plist/d' | xargs -t -I {} cp -r Assets.bundle/{} "${CONTENTS_FOLDER_PATH}/"

但是,当我运行该应用程序时,用户界面看起来不正确。.xib 已加载,但未加载任何图像!图像文件和 nib 文件似乎已正确复制到 .app 文件夹中。我的假设是,编译后的 .nib 文件假定它位于 Assets.bundle 文件夹内,从而解释了为什么它在位于 Assets.bundle 文件夹外时不起作用。

我在这种方法中遗漏了什么吗?


方法 2 - 未经测试

创建一个由 {A,B,C,D}.app 目标#imported 的 Assets.xcconfig 文件。


方法 3 - 未经测试

将“复制捆绑资源”从 A.app 目标镜像到 {B,C,D}.app 目标

使用 ruby​​ 脚本,我可以更新“project.pbxproj”文件。


方法 4 - 我目前的方法

在 {A,B,C,D}.app 目标上手动维护“复制捆绑资源”。

编辑:我想放弃这种“目标会员”方法,因为这是一个大项目,很多人都在贡献。


方法 5 - …

xcode nsbundle ios run-script

1
推荐指数
1
解决办法
3393
查看次数

django-extensions:使用runscript运行脚本,该脚本位于脚本内的文件夹内

我在使用django-extensions中包含的runscript命令运行脚本文件夹内的文件夹中的脚本时遇到问题。

我的项目中的文件夹结构如下:

-apps
-scripts
    -syllabus
        -first.py
    -second.py
Run Code Online (Sandbox Code Playgroud)

文件first.py和second.py相同。

它具有django-extension runscript命令所需的运行功能。

def run(*args):
    # my function call for the script.
Run Code Online (Sandbox Code Playgroud)

我已经很好地放置了init .py,并且可以从命令中运行second.py:

./manage.py runscript second --script-args=excel.xlsx

但是以某种方式我无法从runscript命令运行first.py文件。使用此命令:

./manage.py runscript first --script-args=excel.xlsx

我懂了

No (valid) module for script 'first' found Try running with a higher verbosity level like: -v2 or -v3

我什至尝试在添加-v2-v3结束时使用更高的详细级别。但是得到了这个错误:

No (valid) module for script 'first' found

我知道我缺少一些简单的东西,有人可以帮我吗?

python django run-script django-extensions

1
推荐指数
1
解决办法
3325
查看次数

为自动UITesting设置模拟器

我需要设置我的Simulators for Automated UITesting.特别是从键盘上删除Autocorrection,Spellchecking,Prediction等.

我正在为一个模拟器这样做:

plutil -replace KeyboardAutocapitalization -bool NO -- ~/Library/Developer/CoreSimulator/Devices/319FF855-F54C-4BB7-BDED-F0CC4B1FF8FC/data/Library/Preferences/com.apple.Preferences.plist
Run Code Online (Sandbox Code Playgroud)

问题是,当测试在另一台设备上运行时,它将不会设置模拟器,因为UUID是硬编码的.

我也能够像这样启动/选择模拟器:

currentUUID="$(xcrun simctl list devices | grep "iPhone 7 (" | egrep -o -i "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}")"
Run Code Online (Sandbox Code Playgroud)

我必须放在哪里iPhone 7 (才能获得UUIDiPhone 7而不是7+.这也只有在我之前在Xcode中选择iPhone 7作为模拟器时才有效.另一种方法是更换iPhone 7 (with booted.

但为了使其工作,脚本需要模拟器已经运行.当它已经运行时,更改plist文件实际上不会更新模拟器上的设置.

我怎样才能启动模拟器,然后在设置之前抓住它的UUID?

谢谢.

automated-tests simulator ios run-script xcode-ui-testing

1
推荐指数
1
解决办法
278
查看次数

在构建阶段运行脚本中使用 Firebase 上传符号时,Xcode 构建永远不会完成

我在我的应用中启用了 Firebase Analytics 和 Crashlytics。根据Firebase 网站,我在运行脚本中的 Xcode 构建阶段下实现了以下内容:

find dSYM_directory -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p platform \{\}
Run Code Online (Sandbox Code Playgroud)

我从 Xcode 收到以下输出:

Running upload-symbols in Build Phase mode
Validating build environment for Crashlytics...
Validation succeeded. Exiting because upload-symbols was run in validation mode
Run Code Online (Sandbox Code Playgroud)

据称该脚本成功完成了其工作,如 中所述Console.app。请参阅附加的屏幕截图以获取输出。 上传符号脚本的 Console.app 输出

在 Xcode 中收到上述消息后,构建进度不会再进一步​​。它卡在Building 2069 of 2081 tasks。在分发了新的应用程序版本后,我可以手动成功运行此脚本。但是谷歌为 Firebase 提供这个脚本的重点是自动化整个过程。

有没有人在他们的运行脚本中成功实现上传符号脚本?任何想法为什么我的 Build 停滞不前并且永远不会完成?

xcode ios run-script firebase crashlytics

1
推荐指数
2
解决办法
1581
查看次数