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

网友投稿 536 2022-11-05

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

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-Port : 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-Port : 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/85203.html"><img src="https://www.finclip.com/news/zb_users/cache/ly_autoimg/o/ODUyMDM.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.finclip.com/news/f/85203.html" title="后台小程序开发的全方位指南">后台小程序开发的全方位指南</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>536</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/84999.html"><img src="https://www.finclip.com/news/zb_users/cache/ly_autoimg/o/ODQ5OTk.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.finclip.com/news/f/84999.html" title="itchat 详细介绍如下">itchat 详细介绍如下</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>536</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/84856.html"><img src="https://www.finclip.com/news/zb_users/cache/ly_autoimg/o/ODQ4NTY.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.finclip.com/news/f/84856.html" title="6 篇有关查询天气文章推荐">6 篇有关查询天气文章推荐</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>536</span> <span><i class="fa fa-clock-o"></i>2022-11-05</span> </div> </div> </article> </div> </div> <div id="comment" class="post-comment clearfix sb br mt"> <p id="comments-title" class="c-title mb bn"><span><i class="fa fa-pencil"></i> 发表评论</span></p> <div class="compost"> <form id="frmSumbit" target="_self" method="post" action="https://www.finclip.com/news/zb_system/cmd.php?act=cmt&postid=30444&key=dac56c4c5774e4065986894065758a58"> <input type="hidden" name="inpId" id="inpId" value="30444"/> <input type="hidden" name="inpRevID" id="inpRevID" value="0"/> <div class="com-name"> <a rel="nofollow" id="cancel-reply" href="#comments" style="display:none;">取消回复</a> </div> <div class="com-info"> <ul> <li> <span class="hide" for="author"></span> <input class="ipt" type="text" name="inpName" id="inpName" value="" tabindex="2" placeholder="昵称(必填)"> </li> <li> <span class="hide" for="author"></span> <input class="ipt" type="text" name="inpEmail" id="inpEmail" value="" tabindex="3" placeholder="邮箱"> </li> <li> <span class="hide" for="author"></span> <input class="ipt" type="text" name="inpHomePage" id="inpHomePage" value="" tabindex="4" placeholder="网址"> </li> </ul> </div> <div class="com-box"> <textarea placeholder="来都来了,说点什么吧..." class="textarea" name="txaArticle" id="txaArticle" cols="5" rows="5" tabindex="1"></textarea> </div> <div class="com-info"><button class="com-submit br brightness" name="sumbit" type="submit" tabindex="5" onclick="return zbp.comment.post()">发布评论</button></div> </form> </div> <div class="comment-list mt"> <p class="no-comment"><i class="iconfont icon-sofa"></i> 暂时没有评论,来抢沙发吧~</p> <span id="AjaxCommentBegin"></span> <div class="pagination pagination-multi"> <ul> </ul> </div> <span id="AjaxCommentEnd"></span> </div> </div> </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/87997.html">小程序容器助力企业在金融与物联网领域实现高效合规运营,带来的新机遇与挑战如何管理?</a></li> <li><a title="小程序引擎如何促进企业在金融行业的数字化转型及合规运营" href="https://www.finclip.com/news/f/87996.html">小程序引擎如何促进企业在金融行业的数字化转型及合规运营</a></li> <li><a title="企业如何通过vue小程序开发满足高效运营与合规性需求" href="https://www.finclip.com/news/f/87995.html">企业如何通过vue小程序开发满足高效运营与合规性需求</a></li> <li><a title="react 前端框架如何驱动企业数字化转型与创新发展" href="https://www.finclip.com/news/f/87994.html">react 前端框架如何驱动企业数字化转型与创新发展</a></li> <li><a title="微前端架构如何改变企业的开发模式与效率提升" href="https://www.finclip.com/news/f/87993.html">微前端架构如何改变企业的开发模式与效率提升</a></li> <li><a title="轻量级前端框架助力开发者提升项目效率与性能" href="https://www.finclip.com/news/f/87992.html">轻量级前端框架助力开发者提升项目效率与性能</a></li> <li><a title="前端开源框架如何提升开发效率与用户体验的关键因素" href="https://www.finclip.com/news/f/87991.html">前端开源框架如何提升开发效率与用户体验的关键因素</a></li> <li><a title="前端移动端框架如何推动数字化转型与创新发展" href="https://www.finclip.com/news/f/87990.html">前端移动端框架如何推动数字化转型与创新发展</a></li> <li><a title="angular前端框架如何塑造现代企业的数字化转型之路" href="https://www.finclip.com/news/f/87989.html">angular前端框架如何塑造现代企业的数字化转型之路</a></li> <li><a title="前端框架选型是企业提升开发效率与用户体验的关键因素" href="https://www.finclip.com/news/f/87988.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/news/category-2.html" title="小程序SDK">小程序SDK</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-3.html" title="Finclip技术文档">Finclip技术文档</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-4.html" title="小程序开发">小程序开发</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-5.html" title="小程序容器">小程序容器</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-6.html" title="小程序框架">小程序框架</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-7.html" title="Finclip小程序平台">Finclip小程序平台</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-8.html" title="Finclip用户投稿">Finclip用户投稿</a></h4></li><li><h4><a href="https://www.finclip.com/news/category-9.html" title="车联网">车联网</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/9435.html" title="小程序SDK是什么意思?小程序sdk和插件有什么区别?">小程序SDK是什么意思?小程序sdk和插件有什么区别?</a></h4></li><li><h4><a href="https://www.finclip.com/news/f/58967.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/21082.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/solutions/bank" title="银行解决方案">银行解决方案</a></h4></li><li><h4><a href="https://www.finclip.com/solutions/broker" title="证券解决方案">证券解决方案</a></h4></li><li><h4><a href="https://www.finclip.com/solutions/internet" title="互联网解决方案">互联网解决方案</a></h4></li><li><h4><a href="https://www.finclip.com/solutions/oa" title="政企OA解决方案">政企OA解决方案</a></h4></li><li><h4><a href="https://www.finclip.com/solutions/technology" title="科技解决方案">科技解决方案</a></h4></li><li><h4><a href="https://www.finclip.com/solutions/car" title="智能车载解决方案">loT解决方案</a></h4></li><li><h4><a href="https://www.finclip.com/solutions/zerotrust" 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"><div class="active"><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> </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"> <a href="https://beian.miit.gov.cn" target="_blank" rel="nofollow">粤ICP备2023123045号-2 </a> <span> <a href="#"></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> 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=552"></script> <script language="javascript" src="https://www.finclip.com/news/zb_users/plugin/ZF_ad/js/ZF_ad__cookie.js"></script> </body> </html> <!--927.16 ms , 28 queries , 21062kb memory , 0 error-->