作家
登录

iOS编译过程的原理和应用

作者: 来源: 2017-04-11 09:44:33 阅读 我要评论

  

本来这篇文┞仿还有很多内容想写,篇幅限制,就先如许吧。比来产生了很多不高兴的事,这里提示本身一句:吃一堑,长一智。

后面有时光了,会介绍一些编译期黑科技:

  • 写入额外的编译信息
  • 函数的调用过程和运行时找到函数在二进制文件中的的地址
  • ……

附录

主动编译打包脚本

  1. export LC_ALL=zh_CN.GB2312; 
  2. export LANG=zh_CN.GB2312 
  3. buildConfig="Release" //这里是build模式 
  4. projectName=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'
  5. projectDir=`pwd` 
  6. wwwIPADir=~/Desktop/$projectName-IPA 
  7. isWorkSpace=true 
  8. echo "~~~~~~~~~~~~~~~~~~~开端编译~~~~~~~~~~~~~~~~~~~" 
  9. if [ -d "$wwwIPADir" ]; then 
  10. echo $wwwIPADir 
  11. echo "文件目次存在" 
  12. else 
  13. echo "文件目次不存在" 
  14. mkdir -pv $wwwIPADir 
  15. echo "创建${wwwIPADir}目次成功" 
  16. fi 
  17. cd $projectDir 
  18. rm -rf ./build 
  19. buildAppToDir=$projectDir/build 
  20. infoPlist="$projectName/Info.plist" 
  21. bundleVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $infoPlist` 
  22. bundleIdentifier=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" $infoPlist` 
  23. bundleBuildVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $infoPlist` 
  24.   
  25. if $isWorkSpace ; then  #是否用CocoaPod 
  26. echo  "开端编译workspace...." 
  27. xcodebuild  -workspace $projectName.xcworkspace -scheme $projectName  -configuration $buildConfig clean build SYMROOT=$buildAppToDir 
  28. else 
  29. echo  "开端编译target...." 
  30. xcodebuild  -target  $projectName  -configuration $buildConfig clean build SYMROOT=$buildAppToDir 
  31. fi 
  32.   
  33. if test $? -eq 0 
  34. then 
  35. echo "~~~~~~~~~~~~~~~~~~~编译成功~~~~~~~~~~~~~~~~~~~" 
  36. else 
  37. echo "~~~~~~~~~~~~~~~~~~~编译掉败~~~~~~~~~~~~~~~~~~~" 
  38. exit 1 
  39. fi 
  40.   
  41. ipaName=`echo $projectName | tr "[:upper:]" "[:lower:]"` #将项目名转小写 
  42. findFolderName=`find . -name "$buildConfig-*" -type d |xargs basename` #查找目次 
  43. appDir=$buildAppToDir/$findFolderName/  #app地点路径 
  44. echo "开端打包$projectName.app成$projectName.ipa....." 
  45. xcrun -sdk iphoneos PackageApplication -v $appDir/$projectName.app -o $appDir/$ipaName.ipa 
  46.   
  47. if [ -f "$appDir/$ipaName.ipa" ] 
  48. then 
  49. echo "打包$ipaName.ipa成功." 
  50. else

      推荐阅读

      在Node.js中看JavaScript的引用

    早期进修 Node.js 的时刻 (2011-2012),有挺多是大年夜 PHP 转过来的,当时有部分人对于 Node.js 编辑完代码须要重启一下表示麻烦(PHP不须要这个过程),于是社区里的同伙就开端倡导应用 >>>详细阅读


    本文标题:iOS编译过程的原理和应用

    地址:http://www.17bianji.com/lsqh/34703.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)