将Python应用打包为APK安装包的工具,Python for Android

fmms 12年前
     <p>由于Google的Android Scripting项目<a href="/misc/goto?guid=4959500604474032925" target="_blank">SL4A</a>,开发者可以使用脚本语言来开发Android应用,比如Python、Perl、JRuby、Lua、shell等,都可在Android上执行。不过使用它并不能帮助创建一个易安装、自包含可执行二进制文件的Python应用。因此,一个新的旨在让在Android系统上发布Python更加容易的项目 ——Python for Android推出了。</p>    <p> </p>    <p><a href="/misc/goto?guid=4959500604564173244" target="_blank">Python for Android</a>是由Kivy团队开发的一个项目(<span lang="EN-US">Kivy</span><span>是一个可用以快速创建新颖用户界面应用的开源</span><span lang="EN-US">Python</span><span>库</span>),该项目旨在帮助你创建自己的可以包含任何你想要模块的Python distribution应用,并帮助你将Python应用打包为可在Android设备运行的APK文件。打包工作可通过四步来完成:</p>    <p> </p>    <ol>     <li>下载Android SDK/NDK并确认已正确安装。</li>     <li>设置好环境。</li>     <li>创建一个包含模块的Python发行版本(Distribution)。一个Distribution由Python库、一些内置的模块(kivy、pygame、pil等)、一个Java bootstrap以及一个build script组成。</li>     <li>使用该发行版本创建一个Python应用的APK文件。</li>    </ol>    <p>详细内容可以参见这篇<a href="/misc/goto?guid=4959500604751841180" target="_blank">文章介绍</a>。<br /> <br /> 为了比较,我们可以查看下Python for Android与其他项目的比较:</p>    <p> </p>    <table style="border-collapse:collapse;" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">     <tbody>      <tr>       <td style="padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><strong><span>Project</span></strong></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><strong><span>Native Python</span></strong></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><strong><span>GUI libraries</span></strong></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><strong><span>APK generation</span></strong></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><strong><span>Custom build</span></strong></p> </td>      </tr>      <tr>       <td style="padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Python for android</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>      </tr>      <tr>       <td style="padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>PGS4A</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Yes</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>      </tr>      <tr>       <td style="padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Android scripting</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>      </tr>      <tr>       <td style="padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>Python on a chip</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>       <td style="border-left:medium none;padding-bottom:4.5pt;padding-left:9.75pt;padding-right:9.75pt;background:white;border-top:medium none;padding-top:4.5pt;"> <p style="text-align:left;" class="MsoNormal" align="left"><span>No</span></p> </td>      </tr>     </tbody>    </table>    <p> </p>    <p class="MsoNormal">目前,该工具只有一个用于支持Kivy模块的Java bootstrap,开发人员鼓励其他开发者创建出更多的bootstrap。其现在可用的模块包括:peg、pil、png、sdl、sqlite3、 pygame、kivy、android、libxml2、libxslt、lxml、ffmpeg、openssl等。<br /> <br /> Python for Android以LGPLv2许可证开源,代码托管与<a href="/misc/goto?guid=4959500604751841180" target="_blank">Github</a>上。<br /> <br /> 介绍来自:<a href="/misc/goto?guid=4959500604848955823" target="_blank">http://www.iteye.com/news/23978</a></p>