Kivy iOS,此工具旨在为 iOS 编译必要的库以运行应用程序并管理 Xcode 项目的创建

网友投稿 570 2022-11-05 21:56:04

Kivy iOS,此工具旨在为 iOS 编译必要的库以运行应用程序并管理 Xcode 项目的创建

Kivy for iOS

This toolchain is designed to compile the necessary libraries for iOS to run your application and manage the creation of the Xcode project.

Currently, we do not provide any binary distributions of this toolchain, but we aim to. Until then, you do need to compile it at least once before creating your Xcode project.

The toolchain supports:

iPhone Simulator (x86 and x86_64)iPhone / iOS (armv7 and arm64)

These recipes are not ported to the new toolchain yet:

lxml

Requirements

Currently, the toolchain requires a few tools for compilation. You will need:

Xcode 6 or above, with an iOS SDK and command line tools installed: xcode-select --install Using brew, you can install the following dependencies: brew install autoconf automake libtool pkg-configbrew link libtool Install Cython (0.23): # pip method if available (sudo might be needed.)pip install cython==0.23

Using the toolchain

Any Python extensions or C/C++ library must be compiled: you need to have what we call a recipe to compile it. For example, Python, libffi, SDL2, SDL_image, freetype... all the dependencies, compilation and packaging instructions are contained in a recipe.

You can list the available recipes and their versions with:

$ ./toolchain.py recipesfreetype 2.5.5hostpython 2.7.1ios masterkivy ios-poly-archlibffi 3.2.1openssl 1.0.2epyobjus masterpython 2.7.1sdl2 iOS-improvementssdl2_image 2.0.0sdl2_mixer 2.0.0sdl2_ttf 2.0.12

Then, start the compilation with:

$ ./toolchain.py build kivy

You can build recipes at the same time by adding them as parameters:

$ ./toolchain.py build openssl kivy

Recipe builds can be removed via the clean command e.g.:

$ ./toolchain.py clean openssl

The Kivy recipe depends on several others, like the sdl* and python recipes. These may in turn depend on others e.g. sdl2_ttf depends on freetype, etc. You can think of it as follows: the kivy recipe will compile everything necessary for a minimal working version of Kivy.

Don't grab a coffee, just do diner. Compiling all the libraries for the first time, 4x over (remember, 4 archs, 2 per platforms by default) will take time.

For a complete list of available commands, type:

$ ./toolchain.py

Create the Xcode project

The toolchain.py can create the initial Xcode project for you:

$ ./toolchain.py create <app_directory>$ ./toolchain.py create Touchtracer ~/code/kivy/examples/demo/touchtracer</p><p>Your app directory must contain a main.py. A directory named <title>-ios will be created, with an Xcode project in it. You can open the Xcode project using:</p><p>$ open touchtracer-ios/touchtracer.xcodeproj</p><p>Then click on Play, and enjoy.</p><p>NoteEverytime you press Play, your application directory will be synced to the <title>-ios/YourApp directory. Don't make changes in the -ios directory directly.</p><p>Configuring your App</p><p>You can configure and customize your app in various ways:</p><p>Set the icon and launch images in XCode. Note that XCode requires that you specify these assests per device or/and iOS version.When you first build your XCode project, a 'main.m' file is created in your XCode project folder. This file configures your environment variables and controls your application startup. You can edit this file to customize your launch environment.Kivy uses SDL, and as soon as the application starts the SDL main, the launch image will disappear. To prevent that, you need to have 2 files named Default.png and Default-Landscape.png, and put them in the Resources folder in Xcode (not in your application folder)</p><p>NoteIf you wish to restrict your apps orientation, you should do this via the 'export_orientation' function in 'main.m'. The XCode orientation settings should be set to support all.</p><p>Using recipes</p><p>Recipes are used to install and compile any libraries you may need to use. These recipes follow the same format as those used by the Python-for-Android sister project. Please refer to the recipe documentation there for more detail.</p><p>Reducing the application size</p><p>If you would like to reduce the size of your distributed app, there are a few things you can do to achieve this:</p><p>Minimize the build/python/lib/python27.zip: this contains all the python modules. You can edit the zip file and remove all the files you'll not use (reduce encodings, remove xml, email...) Go to the settings panel > build, search for "strip" options, and triple-check that they are all set to NO. Stripping does not work with Python dynamic modules and will remove needed symbols. By default, the iOS package compiles binaries for all processor architectures, namely x86, x86_64, armv7 and arm64 as per the guidelines from Apple. You can reduce the size of your ipa significantly by removing the x86 and x86_64 architectures as they are usually used only for the emulator. The procedure is to first compile/build all the host recipes as is: ./toolchain.py build hostpython Then build all the rest of the recipes using --arch=armv7 --arch=arm64 arguments as follows: ./toolchain.py build kivy --arch=armv7 --arch=arm64 Note that these packages will not run in the iOS emulators, so use them only for deployment.</p><p>FAQ</p><p>Fatal error: "stdio.h" file not found You need to install the Command line tools: xcode-select --install You must build with bitcode disabled (Xcode setting ENABLE_BITCODE should be No). We don't support bitcode. You need to go to the project setting, and disable bitcode.</p><p>Support</p><p>If you need assistance, you can ask for help on our mailing list:</p><p>User Group : https://groups.google.com/group/kivy-usersEmail : kivy-users@googlegroups.com</p><p>We also have an IRC channel:</p><p>Server : irc.freenode.netPort : 6667, 6697 (SSL only)Channel : #kivy</p><p>Contributing</p><p>We love pull requests and discussing novel ideas. Check out our contribution guide and feel free to improve Kivy for iOS.</p><p>The following mailing list and IRC channel are used exclusively for discussions about developing the Kivy framework and its sister projects:</p><p>Dev Group : https://groups.google.com/group/kivy-devEmail : kivy-dev@googlegroups.com</p><p>IRC channel:</p><p>Server : irc.freenode.netPort : 6667, 6697 (SSL only)Channel : #kivy-dev</p><p>License</p><p>Kivy for iOS is released under the terms of the MIT License. Please refer to the LICENSE file.</p><p> <strong>版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。</strong> </p></div> <div class="article_footer clear"> <div class="fr tag">标签:<a href="https://www.finclip.com/news/tags-838.html">python</a> </div> <div class="bdsharebuttonbox fl share"> <div class="share-widget fl"> <div class="social-share" data-sites="wechat,weibo, qq, qzone"></div> </div> </div> </div> <!-- 广告位ad4 --> <div class="post-navigation clear"> <div class="post-previous fl"> <span>上一篇:</span><a href="https://www.finclip.com/news/f/30443.html">#yyds干货盘点# leetcode算法题:缺失的第一个正数</a> </div> <div class="post-next fr"> <span>下一篇:</span><a href="https://www.finclip.com/news/f/30445.html">Stylist是一个高度可扩展的平台,用于创建和维护应用程序的基本Android XML主题集</a> </div> </div> </div> <div class="related_article"> <div class="box_title clear"> <span><i class="icon fa fa-paper-plane"></i>相关文章</span> </div> <div class="related_list clear"> <article class="fl"> <div class="related_img"><a href="https://www.finclip.com/news/f/67001.html"><img src="https://www.finclip.com/news/zb_users/theme/zblog5_news/image/random_img/8.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.finclip.com/news/f/67001.html" title="python开发安卓app优缺点">python开发安卓app优缺点</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>570</span> <span><i class="fa fa-clock-o"></i>2022-11-05</span> </div> </div> </article> <article class="fl"> <div class="related_img"><a href="https://www.finclip.com/news/f/36121.html"><img src="https://www.finclip.com/news/zb_users/theme/zblog5_news/image/random_img/9.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.finclip.com/news/f/36121.html" title="Leetcode题目71. 简化路径">Leetcode题目71. 简化路径</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>570</span> <span><i class="fa fa-clock-o"></i>2022-11-05</span> </div> </div> </article> <article class="fl"> <div class="related_img"><a href="https://www.finclip.com/news/f/90299.html"><img src="https://www.finclip.com/news/zb_users/theme/zblog5_news/image/random_img/10.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.finclip.com/news/f/90299.html" title="AI数字生态的技术重构与产业实践">AI数字生态的技术重构与产业实践</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>570</span> <span><i class="fa fa-clock-o"></i>2022-11-05</span> </div> </div> </article> </div> </div> <!--<p class="comment-disable sb br mb"><i class="iconfont icon-cry"></i>抱歉,评论功能暂时关闭!</p>--> </div> </div> <div class="sidebar"> <div id="divPrevious" class="part clear previous"> <div class="top"> <h3 class="title">最近发表</h3> </div> <div class="side divPrevious"><ul><li><a title="触点数字孪生,揭秘它的独特魅力" href="https://www.finclip.com/news/f/90711.html">触点数字孪生,揭秘它的独特魅力</a></li> <li><a title="App 2.0开发模式的行业看法" href="https://www.finclip.com/news/f/90688.html">App 2.0开发模式的行业看法</a></li> <li><a title="微信小程序蓝牙开发教程带你探索物联网的便捷与魅力" href="https://www.finclip.com/news/f/90674.html">微信小程序蓝牙开发教程带你探索物联网的便捷与魅力</a></li> <li><a title="小程序数据埋点分析如何助力提升用户体验与运营效率?" href="https://www.finclip.com/news/f/90641.html">小程序数据埋点分析如何助力提升用户体验与运营效率?</a></li> <li><a title="游戏化互动技术如何改变我们的学习与交流方式" href="https://www.finclip.com/news/f/90509.html">游戏化互动技术如何改变我们的学习与交流方式</a></li> <li><a title="小程序支付的技术解析与实践应用,助力开发者提升用户体验" href="https://www.finclip.com/news/f/90475.html">小程序支付的技术解析与实践应用,助力开发者提升用户体验</a></li> <li><a title=".club域名真的好吗?探讨其优缺点及适用场景" href="https://www.finclip.com/news/f/89585.html">.club域名真的好吗?探讨其优缺点及适用场景</a></li> <li><a title="探索大模型编程IDE在软件开发中的应用,如何提高开发效率和代码质量" href="https://www.finclip.com/news/f/88904.html">探索大模型编程IDE在软件开发中的应用,如何提高开发效率和代码质量</a></li> <li><a title="提升跨平台小程序开发效率与安全性的关键—软件开发配置管理" href="https://www.finclip.com/news/f/88750.html">提升跨平台小程序开发效率与安全性的关键—软件开发配置管理</a></li> <li><a title="微信小程序群发功能代码实现详细分析" href="https://www.finclip.com/news/f/87752.html">微信小程序群发功能代码实现详细分析</a></li> </ul></div> </div> <div id="newmodule" class="part clear 更多内容"> <div class="top"> <h3 class="title">更多内容</h3> </div> <div class="side newmodule"><ul><ul class="hot_posts"> <li><h4><a href="https://www.finclip.com/landpage-product?channel=news" title="小程序SDK">小程序SDK</a></h4></li> <li><h4><a href="https://www.finclip.com/mop/document/?channel=news" title="Finclip技术文档">Finclip技术文档</a></h4></li> <li><h4><a href="https://www.finclip.com/start/?channel=news" title="小程序快速入门">小程序快速入门</a></h4></li> <li><h4><a href="https://www.finclip.com/downloads/?channel=news" title="资源下载使用">资源下载使用</a></h4></li> <li><h4><a href="https://www.finclip.com/product/now/?channel=news" title="实时内容互动引擎">实时内容互动引擎</a></h4></li> <li><h4><a href="https://www.finclip.com/device-compatibility/?channel=news" title="跨终端设备适配">跨终端设备适配</a></h4></li> <li><h4><a href="https://www.finclip.com/landpage-transformation/?channel=news" title="小程序生成App">小程序生成App</a></h4></li> <li><h4><a href="https://www.finclip.com/product/management/?channel=news" title="小程序生命周期管理">小程序生命周期管理</a></h4></li> <li><h4><a href="https://www.finclip.com/landing/finclip-studio/?channel=news" title="AI 开发小程序">AI 开发小程序</a></h4></li> </ul></ul></div> </div> <div id="tuijianwenzhang" class="part clear 推荐文章"> <div class="top"> <h3 class="title">推荐文章</h3> </div> <div class="side tuijianwenzhang"><ul><ul class="hot_posts"> <li><h4><a href="https://www.finclip.com/news/f/88613.html" title="前端跨端方案的未来,技术与市场的双重挑战">前端跨端方案的未来,技术与市场的双重挑战</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/88609.html" title="超级应用的崛起,重塑数字生活的未来">超级应用的崛起,重塑数字生活的未来</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/58064.html" title="企业app开发(企业app开发定制外包)">企业app开发流程是什么?</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/52142.html" title="app运营模式框架(app运营体系搭建)">app运营模式有哪些?</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/88588.html" title="小探讨如何通过融媒体宣发矩阵建设,提升用户体验与品牌曝光率">探讨如何通过融媒体宣发矩阵建设,提升用户体验与品牌曝光率</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/48029.html" title="小程序生态分析(小程序经济环境分析)">小程序生态分析的机会和威胁</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/54499.html" title="flutter 小程序(flutter 小程序方案)">Flutter入门这一篇效率文章就够了</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/39393.html" title="原生与跨平台解决方案分析,跨平台软件开发技术方案">原生与跨平台解决方案分析,跨平台软件开发技术方案</a></h4></li> <li><h4><a href="https://www.finclip.com/news/f/58899.html" title="热更新技术:让软件更新变得更加轻松快速">热更新技术:让软件更新变得更加轻松快速</a></h4></ul></ul></div> </div> <div id="jiejuefangan" class="part clear 解决方案"> <div class="top"> <h3 class="title">解决方案</h3> </div> <div class="side jiejuefangan"><ul><ul class="hot_posts"> <li><h4><a href="https://www.finclip.com/landpage-bank/?channel=news" title="银行解决方案">银行解决方案</a></h4></li> <li><h4><a href="https://www.finclip.com/landpage-common/?channel=news" title="超级App 解决方案">超级App 解决方案</a></h4></li> <li><h4><a href="https://www.finclip.com/landpage-car/?channel=news" title="智慧车载解决方案">智慧车载解决方案</a></h4></li> <li><h4><a href="https://www.finclip.com/landing/information-technology-application-innovation/?channel=news" title="信创解决方案">信创解决方案</a></h4></li> <li><h4><a href="https://www.finclip.com/landpage-iot/?channel=news" title="物联网解决方案">物联网解决方案</a></h4></li> <li><h4><a href="https://www.finclip.com/landpage-game/?channel=news" title="小游戏解决方案">小游戏解决方案</a></h4></li> <li><h4><a href="https://www.finclip.com/media-landpage/?channel=news" title="音视频解决方案">音视频解决方案</a></h4></li> </ul></ul></div> </div> <div id="hot_posts" class="part clear hot_posts"> <div class="top"> <h3 class="title">热评文章</h3> </div> <ul class="hot_posts"><li><h4><a href="https://www.finclip.com/news/f/21046.html" title="AppCan:基于混合模式的移动应用开发,移动混合模式应用开发方案">AppCan:基于混合模式的移动应用开发,移动混合模</a></h4></li><li><h4><a href="https://www.finclip.com/news/f/7989.html" title="Hybrid App混合模式开发的了解">Hybrid App混合模式开发的了解</a></h4></li><li><h4><a href="https://www.finclip.com/news/f/5713.html" title="小程序容器技术助力券商数字营销突围,小程序容器化的意义">小程序容器技术助力券商数字营销突围,小程序容器化的意</a></h4></li><li><h4><a href="https://www.finclip.com/news/f/14756.html" title="用mpvue开发微信小程序基础知识(vue.js开发微信小程序)">用mpvue开发微信小程序基础知识(vue.js开发</a></h4></li><li><h4><a href="https://www.finclip.com/news/f/33154.html" title="小程序多端框架全面测评对比,强烈推荐!">小程序多端框架全面测评对比,强烈推荐!</a></h4></li><li><h4><a href="https://www.finclip.com/news/f/69022.html" title="券商app架构 - 解析券商应用程序的构建与设计">券商app架构 - 解析券商应用程序的构建与设计</a></h4></li></ul> </div> <div id="sidebar_ad" class="part clear sidebar_ad"> <div class="part sidebar_ad"><a href='http://www.finclip.com/?channel=jtseo' target='_blank'><img style='width:100%;height:100%' src='https://www.finclip.com/news/zb_users/upload/2022/11/%E4%B8%80%E7%AB%AF%E5%BC%80%E5%8F%91%EF%BC%8C%E8%B7%A8%E7%AB%AF%E8%BF%90%E8%A1%8C-370_680.png'></a><br></div> </div> </div> </div> </section> </div> <footer class="p-footer"> <div class="contant_box"> <div class="discover_tmt"> <div class="text_box"> <h5 class="" style="margin-bottom: 5px; margin-right: 5px;"><a href="https://www.finclip.com/" title="Finclip小程序容器技术" style="text-align: left;">小程序容器技术</a></h5> <a href="https://www.finclip.com/product/wxsupport/" title="微信生态支持" target="_blank" style="text-decoration: none; color: black; margin-right: 5px;" onmouseover="this.style.textDecoration='underline'; this.style.color='blue'" onmouseout="this.style.textDecoration='none'; this.style.color='black'" onclick="this.style.textDecoration='underline'; this.style.color='blue'">微信生态支持</a> <a href="https://www.finclip.com/product/management" title="小程序生命周期管理" target="_blank" style="text-decoration: none; color: black; margin-right: 5px;" onmouseover="this.style.textDecoration='underline'; this.style.color='blue'" onmouseout="this.style.textDecoration='none'; this.style.color='black'" onclick="this.style.textDecoration='underline'; this.style.color='blue'">小程序生命周期管理</a> <a href="https://www.finclip.com/product/developertools" title="开发生态工具完善" target="_blank" style="text-decoration: none; color: black; margin-right: 5px;" onmouseover="this.style.textDecoration='underline'; this.style.color='blue'" onmouseout="this.style.textDecoration='none'; this.style.color='black'" onclick="this.style.textDecoration='underline'; this.style.color='blue'">开发生态工具完善</a> <a href="https://www.finclip.com/product/sdk" title="小程序SDK" target="_blank" style="text-decoration: none; color: black; margin-right: 5px;" onmouseover="this.style.textDecoration='underline'; this.style.color='blue'" onmouseout="this.style.textDecoration='none'; this.style.color='black'" onclick="this.style.textDecoration='underline'; this.style.color='blue'">小程序SDK</a> <a href="https://www.finclip.com/technology-alliance-partner" title="技术生态" target="_blank" style="text-decoration: none; color: black; margin-right: 5px;" onmouseover="this.style.textDecoration='underline'; this.style.color='blue'" onmouseout="this.style.textDecoration='none'; this.style.color='black'" onclick="this.style.textDecoration='underline'; this.style.color='blue'">技术生态</a> </div> </div> <div class="collaboration_box"> <h5>交流与合作</h5> <div class="text_box"> <a href="#" title="地址">地址:深圳市福田区凯丰路 10号 国际金融科技城 19层</a> <a href="#" title="电话">电话:0755-86967467</a> <a href="#" title="邮箱">邮箱:contact@finogeeks.com</a> </div> </div> <div class="we_img_box clear"> <div class="img_box"> <img src="https://www.finclip.com/news/zb_users/theme/zblog5_news/image/ewm.png" alt="" class="hover_tmt"> </div> </div> </div> <p class="info">© 2023 XWNews <a href="#" target="_blank" rel="nofollow">京ICP备1111040123号-1</a> <span> <a href="https://www.zblogcn.com/">版权归zblog所有</a></span> </p> </footer> <div id="backtop" class="backtop"> <div class="bt-box top"> <i class="fa fa-angle-up fa-2x"></i> </div> </div> <script type='text/javascript' src="https://www.finclip.com/news/zb_users/theme/zblog5_news/script/custom.js"></script> <script type='text/javascript' src="https://www.finclip.com/news/zb_users/theme/zblog5_news/script/nav.js"></script> <link rel="stylesheet" href="https://www.finclip.com/news/zb_users/theme/zblog5_news/share/css/share.min.css"> <script src="https://www.finclip.com/news/zb_users/theme/zblog5_news/share/js/jquery.share.min.js"></script> <!-- Initialize Swiper --> <script> var swiper = new Swiper('.swiper-container', { pagination: '.swiper-pagination', paginationClickable: true, loop: true, autoplay:2000, nextButton: '.swiper-button-next', prevButton: '.swiper-button-prev', spaceBetween: 30, effect: 'fade', }); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?b724df561c68ae808f6c323456db4430"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> (()=>{const e="https://analyze.jiasou.cc/api/v1/page_view/report/",n="a92e22b2e862418c89a0fb0e07e0b287";let t=null;const o=new Proxy({},{get:(e,n)=>localStorage.getItem(window.btoa(n)),set:(e,n,t)=>!!t&&(localStorage.setItem(window.btoa(n),t),!0)});new Promise((t=>{if(o.fingerprint)t();else{const a=function(){var e={};if(e.userAgent=navigator.userAgent||"",e.plugins=[],navigator.plugins&&navigator.plugins.length>0)for(var n=0;n<navigator.plugins.length;n++){var t={name:navigator.plugins[n].name||"",filename:navigator.plugins[n].filename||"",description:navigator.plugins[n].description||""};e.plugins.push(t)}e.languages=navigator.languages||[navigator.language||""],e.timezone=(new Date).getTimezoneOffset(),e.screenResolution={width:window.screen.width||0,height:window.screen.height||0,pixelDepth:window.screen.pixelDepth||0,colorDepth:window.screen.colorDepth||0};var o=document.createElement("canvas").getContext("2d"),a=[],i=["monospace","sans-serif","serif"];for(n=0;n<i.length;n++){var r=i[n];o.font="12px "+r,o.measureText("abcdefghijklmnopqrstuvwxyz0123456789").width>0&&a.push(r)}return e.fonts=a,e.cookieEnabled=navigator.cookieEnabled||!1,e.localStorage=void 0!==window.localStorage,e.sessionStorage=void 0!==window.sessionStorage,e.doNotTrack="1"===navigator.doNotTrack||"1"===window.doNotTrack||"1"===navigator.msDoNotTrack||"yes"===navigator.doNotTrack,e}();fetch(`${e}u/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:n,f:window.btoa(JSON.stringify(a))})}).then((e=>{console.debug("browser fingerprint sent"),200===e.status&&e.json().then((e=>{console.debug("browser fingerprint received",e),o.fingerprint=e.fp,t()}))}))}})).then((()=>{e&&o.fingerprint&&fetch(e+`?${new URLSearchParams({token:n}).toString()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({c:window.btoa(JSON.stringify({u:o.fingerprint,l:window.location.href,r:document.referrer}))})}).then((e=>{200==e.status&&e.json().then((e=>{e.track_id&&(t=e.track_id)}))}))})),window.addEventListener("beforeunload",(async n=>{t&&fetch(e+`?${new URLSearchParams({track_id:t}).toString()}`,{method:"GET",headers:{"Content-Type":"text/plain"},keepalive:!0}),n.returnValue=""}))})(); </script><script language="javascript" src="https://www.finclip.com/news/zb_users/plugin/ZF_ad/js/index.js?id=139"></script> <script language="javascript" src="https://www.finclip.com/news/zb_users/plugin/ZF_ad/js/ZF_ad__cookie.js"></script> </body> </html><!--66.35 ms , 17 queries , 23970kb memory , 0 error-->