㈠ 如何用shell sh脚本找到并删除Localizable.strings中 Xcode 工
1、在SupportingFiles文件夹右键,NewFile…->iOS->Resources->StringFiles,命名为Localizable.strings(不要换成别的名字,我测试时,改成其它名字,不能实现本地化);2、选中Localizable.strings点击XCode->View->Utilities->FileI
㈡ iOS开发知识体系之《脚本自动化打包--xcodebuild》
iOS脚本自动化打包方案--xcodebuild
本文主要xcodebuild脚本自动化打包并上传到蒲公英或者AppStore,废话不多说,直接上干货!
先了解一下xcodebuild打包需要的一些指令
-workspace XXX.xcworkspace
XXX.xcworkspace需要编译工程的工作空间名称,如果工程不是.xcworkspace的,可以不需要-workspace XXX.xcworkspace这段话
-scheme XXX
XXX是工程名称,-scheme XXX是指定构建工程的名称
-configuration Release
填入打包的方式是Debug或Release,就跟在Xcode中编译前需要在Edit scheme的Build configuration中选择打出来的包是Debug还是Release包一样,-configuration就是配置编译的Build configuration
-archivePath ./myArchivePath
配置生成.xcarchive的路径, ./表示生成在当前目录下,myArchivePath是生成的.Archive文件名称
ODE_SIGN_IDENTITY=证书
配置打包的指定证书,如果该工程的Xcode已经配置好了证书,那么不加入这段话也可以,打包出来的证书就是Xcode中配置好的。
PROVISIONING_PROFILE=描述文件UUID
配置打包的描述文件,同上,Xcode已经配置好了就不用在填入这段话了
CONFIGURATION_BUILD_DIR
配置编译文件的输出路径,如果需要用到.xcarchive文件内部的dSYM等文件,可以使用改字段指定输出路径。
如果工程是勾选了Automatically manage signing,那么就不用在配置ODE_SIGN_IDENTITY和PROVISIONING_PROFILE,今天这里讲到的Automatically manage signing自动配置证书,手动配置的就不多说了,有兴趣的话可以自己研究。
xcode工程配置自动获取证书,如下图:
打包所需要文件
配置打包的ExportOptions.plist文件,可以在任意一个Xcode工程中新建一个ExportOptions.plist文件。dev和adHoc和AppStore的配置文件内容不一样,可以先手动打包后看下plist文件的样式,这里提供一个样例:
这里method对应的value为打包对应的环境,有development、ad-hoc、app-store、enterprise根据打包环境来配置不同的值
编译脚本命令
xcodebuild archive -workspace XXX.xcworkspace -scheme XXX -configuration Release -archivePath ./myArchivePath CONFIGURATION_BUILD_DIR ./dir ODE_SIGN_IDENTITY=证书 PROVISIONING_PROFILE=描述文件UUID
导出ipa包命令
xcodebuild -exportArchive -archivePath ./myArchivePath.xcarchive -exportOptionsPlist ./ExportOptions.plist -exportPath ./out
-archivePath ./myArchivePath.xcarchive指定需要打包的.xcarchive路径,./myArchivePath.xcarchive表示在当前终端路径下的myArchivePath.xcarchive文件
-exportOptionsPlist ./ExportOptions.plist指定打包需要的ExportOptions.plist配置文件路径
-exportPath ./out指定打包输出的路径, ./out表示打包结果输出在终端的当前路径下的out文件家中。如果没有out文件夹会自动创建一个
脚本操作
首先:cd到需要自动打包的工程下
然后:在终端中输入touch xcodebuild.sh创建xcodebuild.sh脚本文件
然后:双击打开脚本写入下面 脚本内容(请确保所有版本的plist配置文件都写好了)
最后:在终端中输入./xcodebuild.sh运行脚本,按照步骤完成打包选择(如果运行的时候出现Permission denied,请先在终端中执行chmod a+x *.文件的后缀名后,在运行,相当于提高脚本文件的权限)
脚本内容
此脚本包含了自动上传蒲公英的选择操作,根据输入指令来执行具体操作
脚本实现
具体详细脚本见GitHub地址: https://github.com/Luck-666/xcodebuild.sh.git 如果好用记得给star,谢谢!
如脚本打包执行遇到问题可留言沟通!
㈢ 苹果电脑怎么运行.sh文件
mac终端下运行shell脚本
1、写好自己的 脚本,比如aa.sh
2、打开终端 执行,方法一: 输入命令 ./aa.sh ,
方法二:直接把 aa.sh 拖入到终端里面。
注意事项:
如果 没有成功报出问题::
Permission denied。就是没有权限。
解决办法:
修改该文件aa.sh 的权限 :使用命令:
chmod 777 aa.sh 。
然后再执行 上面第二步的操作 就 OK .
㈣ ios下 怎么在代码中调用ffmpeg的命令
ffmpeg是一个多平台多媒体处理工具,处理视频和音频的功能非常强大。目前在网上搜到的iOS上使用FFMPEG的资料都比较陈旧,而FFMPEG更新迭代比较快; 且网上的讲解不够详细,对于初次接触FFMPEG的新手(例如我)来说确实不太好使用。为了防止忘记,这里对iOS下使用FFMPEG做一个总结。
1. FFMPEG层次结构的简单理解
要使用FFMPEG,首先需要理解FFMPEG的代码结构。根据志哥的提示,ffmpeg的代码是包括两部分的,一部分是library,一部分是tool。api都是在library里面,如果直接调api来操作视频的话,就需要写c或者c++了。另一部分是tool,使用的是命令行,则不需要自己去编码来实现视频操作的流程。实际上tool只不过把命令行转换为api的操作而已。
2. 预热-在mac os下使用ffmpeg
在mac os下使用ffmpeg比较简单,可以直接使用命令行来操作。首先安装ffmpeg,这里默认系统已经安装好brew,只需要在终端上输入:
brew install ffmpeg
等待安装结束即可。
安装结束后,尝试以下命令:
ffmpeg -i input.mp4 output.avi
如果能顺利转换,表明安装成功
3. 编译能在iOS下使用的FFMPEG library库
这一步是编译1所说的library,编译好之后可以调用FFMPEG的api。网上有一些方法,但都要自己手动编译,稍显复杂而且比较陈旧。按照app store的需求,编译出来的包还必须支持arm64。我在万能的github中找到一个能够"一键编译"的脚本,地址如下:
https://github.com/kewlbear/FFmpeg-iOS-build-script
而且写这个脚本的歪果仁挺好人,更新很及时,已经更新到了最新的2.5.3版本。下载下来,只有一个build-ffmpeg.sh脚本文件。在终端中转至脚本的目录,执行命令:
./build-ffmpeg.sh
脚本则会自动从github中把ffmpeg源码下到本地并开始编译。
编译结束后,文件目录如下:
其中,ffmpeg-2.5.3是源码,FFmpeg-iOS是编译出来的库,里面有我们需要的.a静态库,一共有7个。
执行命令:
lipo -info libavcodec.a
查看.a包支持的架构,这几个包都支持了armv7 armv7s i386 x86_64 arm64这几个架构,这个脚本果真是业界良心啊~~~
4.在xcode中引入FFMPEG library库
新建工程,把上面编译好的FFmpeg-iOS拖到xcode工程中,添加一个头文件引用
#include "avformat.h"
添加一个api语句:
av_register_all();
添加一个空的类,把执行文件.m后缀改为.mm,开启混编模式。
添加相应的framework,包括avfoundation和coremedia。
运行工程,如果没有报错,则表明编译成功。
5.在xcode项目中使用命令行
执行到第4步,已经可以使用library库了。但是如果要对视频进行操作,还是需要手动写很多代码去调用api,工作量较大,自然不如直接写命令行方便。为了命令行能够在xcode工程中使用,还需要做以下工作:
(1)添加源码中的tools,具体文件包括:
(2)添加Header Search Paths
在target--build setting中搜索Header Search Paths,并在Header Search Paths下面添加源码ffmpeg-2.5.3和scratch的路径。
(3)修改ffmpeg.h和ffmpeg.c源码
如果此时run这个工程,则会报错,原因是工程里面有2个main函数,此时处理方法为:
在ffmpeg.h中添加一个函数声明:
int ffmpeg_main(int argc, char **argv);
在ffmpeg.c中找到main函数,把main函数改为ffmpeg_main。
(4)调用命令行范例
添加头文件:#import "ffmpeg.h"
调用命令行
int numberOfArgs = 16;
char** arguments = calloc(numberOfArgs, sizeof(char*));
arguments[0] = "ffmpeg";
arguments[1] = "-i";
arguments[2] = inputPath;
arguments[3] = "-ss";
arguments[4] = "0";
arguments[5] = "-t";
arguments[6] = rationChar;
arguments[7] = "-vcodec";
arguments[8] = "";
arguments[9] = "-acodec";
arguments[10] = "aac";
arguments[11] = "-strict";
arguments[12] = "-2";
arguments[13] = "-b:a";
arguments[14] = "32k";
arguments[15] = outputPath;
int result = ffmpeg_main(numberOfArgs, arguments);
其中inputpath和outputpath是文件路径。经测试,这两个路径不支持asset-library://协议和file:// 协议,所以如果是要用相册的文件,我目前的解决办法是把它拷贝到沙盒里面。
6. 改关闭进程为关闭线程
如果顺利进行到了第5步,在app中是能够用命令行处理视频了,但会出现一个问题,app会退出。经肖大神提醒,发现了命令行执行完毕之后会退出进程。而iOS下只能启动一个进程,因此必须改关闭进程为关闭线程,或者直接把关闭进程的方法给注掉。
在ffmpeg.c中可以看到,执行退出进程的方法是exit_program,定位到了cmtils.c中执行了c语言的exit方法。这里我将它改为了pthread_exit(需要添加#include 头文件)。在xcode项目中使用时,则可以用NSThread来新开一个线程,执行完毕之后,把线程关闭了即可。再使用NSThreadWillExitNotification通知,即可监听线程退出的情况。
7. 修复ffmpeg.c里面的一个bug
在实际项目中,可能需要多次调用命令行,但在多次调用命令行的过程中,发现ffmpeg.c的代码中会访问空属性导致程序崩溃。逐步debug后发现,很多指针已经置空了,但它们的计数却没有置零,不知道是不是ffmpeg.c的一个bug。修复方法如下:在ffmpeg_cleanup方法下,将各个计数器置零,包括:
nb_filtergraphs
nb_output_files
nb_output_streams
nb_input_files
nb_input_streams
置零之后,重复使用ffmpeg_main方法一切正常。
㈤ iOS项目添加shell脚本,就这么简单
1.在target -->build Phases 左侧点击 +
2.选中Run Script
4.将.sh文件路径添加到Run Script里
当然此时如果直接编译,可以还会报以下错误:
chmod 修改权限
a 所有用户
收工~
㈥ 苹果mac系统下如何编写.sh脚本调用安装的某个程序打开指定文件
你先找到应用程序里的一个macos文件夹,把里面的可执行文件路径弄下来 后面加上jsf文件的路径
㈦ Mac OS 终端运行.sh脚本
1、编辑脚本文件。例如 test.sh 保存到 /Users/电脑用户名/Documents 目录下。内容:
echo "hello";
2、打开终端,运行 cd /Users/电脑用户名/Documents 进入目录;
3、直接运行 test.sh;
如果提示 -bash: test.sh: command not found 错误,设置 PATH :
export PATH=$PATH:/Users/电脑用户名/Documents
有时候也会提示 -bash: test.sh: No such file or directory,同样运行签名的命令,设置PATH即可解决;
再次运行,在控制台就能看到 hello 了!
如果还不行,试试 chmod u+x test.sh 提升文件权限后,再运行脚本。
㈧ 在mac中怎么运行.sh文件哦
在mac终端下运行shell脚本。
1、写好自己的脚本,比如aa.sh。
2、打开终端执行。
方法一: 输入命令 ./aa.sh
方法二:直接把 aa.sh 拖入到终端里面
(8)sh脚本控制ios扩展阅读:
Mac是苹果公司自1984年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro等计算机。使用独立的Mac OS系统,最新的macOS系列基于NeXT系统开发,不支持兼容。是一套完备而独立的操作系统。
macOS操作系统界面非常独特,突出了形象的图标和人机对话(图形化的人机对话界面最初来自施乐公司的Palo Alto研究中心,苹果借鉴了其成果开发了自己的图形化界面,后来又被微软的Windows所借鉴并在Windows中广泛应用)。
MAC常用快捷键:
1、新增邮件(⌘ + Shift + I)
2、搜寻文字定义(⌘ + Control + D)
3、萤幕截图 (⌘ + Shift + 4)
4、最小化所有视窗 (⌘ + Option + M)
5、显示最常用应用程式(⌘ + Shift + Tab)
6、关闭 Safari 分页(⌘ + W)
7、清空桌面画面(⌘ + F3)
8、微调音量(Option + Shift + F11/F12)
9、直接卷动到最上方或最下方(⌘ + 上/下)
㈨ iOS Framework/SDK 导出脚本配置(含脚本)(.Framework)
1. 选择项目---->TARGETS---->"+"号---->添加.framework
2. 将需要制作成framework的文件依次导入至创建好的.framework文件中,选择项目---->TARGETS---->创建好的framework---->Build Phases---->Headers---->将需要暴露的.h文件移至Public中
3. 选择项目---->TARGETS---->"+"号---->Cross-platform---->Aggregate,创建好后即可在TARGETS中看到,点击,选择Build Phases,添加Script,写入需要执行的.sh文件路径
4. 选择framework中的Kit头文件,添加需要暴露的头文件
5. 创建一个.sh文件夹用于放.sh文件,根据需要完善.sh脚本文件
6. 打开命令行,进入.sh文件夹下后,执行chmod a+x (.sh文件名),开启权限。
SDKName 改成你自己的
AggregateName 可以改成自己的,其实是我自己习惯这样放,你也可以改成你喜欢的路径方式。AggregateName这个文件夹是我自己建的,如果运行有报错说路径错误/路径不存在的话,根据提示自己建个文件夹就成。
㈩ iOS开发-需要了解的Shell脚本语法
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 脚本(shell script),是一种为 shell 编写的脚本程序。在iOS开发中,我们通常编写一些自动化的脚本文件,来提高我们的生产效率,其本质就是通过Shell脚本对一些 xcodebuild , xcode-select , xcpretty , xcrun 等指令的封装。本篇文章,我们就针对 Shell 脚本的语法,做一些罗列,以辅助我们去完成一些自动化封装。
执行脚本
.sh 文件为 Shell 脚本文件格式,通过 sh 指令执行脚本文件
执行结果:
1.通过 echo 输出变量时,需要使用 $ 或者 ${} 修饰
2. (重点)定义变量时,等号之间不能有空格,不然会误认为变量为一个指令
3.可以直接修改 name 变量的值,即当前 name 默认为 readwrite 权限
4.我们给 _var 用 readonly 修饰后,再修改值会抛出异常
执行结果:
执行结果:
执行结果:
执行结果:
$@ 和 $* 都是输出所有参数,前者是 "$1" "$2" "$3" "$4" ,后者是 "$1 $2 $3 $4"
执行结果:
注意:条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ] 。
关于文件检测运算符,这里还是都罗列一下吧,比较重要:
执行结果:
执行结果:
执行结果:
执行结果:
2.有参数
执行结果:
注意: $10 不能获取第十个参数,获取第十个参数需要 ${10} .
使用 man 查询 指令文档
比如我们想查看 xcodebuild 指令下都有哪些操作,直接在终端执行:
当我们不清楚某一个指令下的操作时,就可以通过 man 查询,然后辅助我们来编写 Shell 指令。
在iOS下,了解下这些 Shell 语法就足够了,已经可以帮助我们完成大部分的 Shell脚本 的编写或者阅读别人的 Shell 源码。不需要记忆,简单看下就可以。