【问题标题】:Phonegap app for Android without Phonegap Build没有Phonegap Build的Android Phonegap应用程序
【发布时间】:2013-09-18 05:31:09
【问题描述】:

我在将我的 PhoneGap 1.x 应用程序升级到 Phonegap 3.0 时遇到了很多问题,至少对于 Android 来说是这样(我什至还没有开始升级 iOS 版本)。我认为如果我将所有这些内容整合到问答中,可能会对很多人有所帮助。

所以问题是:将现有应用升级到 Phonegap 3.0 时需要注意什么?

这是一本深入了解一些细节的顶级手册。我正在为 Mac 用户描述该过程,虽然命令和工具可能不同,但 Windows 的原理是相同的。

【问题讨论】:

    标签: android ios cordova upgrade


    【解决方案1】:

    提前警告...

    首先,不要打扰官方文档升级手册。这只会帮助您从 1.0 升级到 1.1,然后从 1.1 升级到 1.2,然后从 1.2 升级到 1.3,等等。如果您想跳过多个版本,您不知道自己是否做对了。因此,当您升级时,请从头开始创建一个新项目。

    此外,向前跳跃以确保您不会在流程中陷入困境:如果您的 3.0 之前的 Phonegap 应用程序使用自定义插件,那么如果您想要升级,请仔细考虑。向前滚动到“注意自定义插件”以了解原因。

    一步一步

    话虽如此,这是一步一步的过程,以行分隔。


    1.命令行

    Phonegap 3.0 完全是关于命令行工具。它看起来比实际上要可怕得多。您只需要安装一些您将在那里使用的工具(主要是通过在命令行中键入命令)。

    需要了解的最重要的一般命令是:

    //For Mac and Windows (on Windows, replace slashes by backslashes)
    cd mySubfolder //Go to the subfolder "mySubfolder"
    cd /MyTopLevelFolder/SomeOtherSubfolder //Go to any folder using the entire address
    
    //Show a list of files and subfolders where you currently are
    dir //On Windows
    ls //On Mac
    

    2。在正确的地方

    命令行工具最关键的方面是您必须始终注意您当前所在的目录。仅当您位于该应用的主文件夹中时,告诉 Phonegap 构建和部署您的应用才有效。

    通常,要对您的 Phonegap 项目进行操作,您需要使用以下命令导航到项目的主目录:

    cd /Users/yourself/thePathToYourWorkspace/YourCurrentPhonegapProject //On Mac
    cd D:\ThePathToYourWorkspace/YourCurrentPhonegapProject //On Windows
    

    3.启蒙之路

    PS:为确保您安装的工具正确运行,您有时需要告诉计算机,如果它在当前目录中找不到文件,它应该在许多额外的目录中查找。您编辑称为路径变量的东西。在别处查找,这并不太难,但对于 Windows 和 Mac 来说是不同的。


    4.先获取工具箱的工具箱

    首先,basic docs 没问题。您下载并安装 node.js,这是其他工具将使用的工具,然后使用它来安装 phonegap/cordova 命令行工具。 p>

    //Like so, for Mac
    $ sudo npm install -g phonegap
    //Note: the "sudo" bit is needed to install a number of necessary files in folders that Apple protects from direct user editing
    

    从现在开始,您可以使用“phonegap”命令为您的项目执行多项任务。


    5.打开工作区

    您需要做的第一件事是创建一个工作区,它是所有项目的主文件夹的通用词(您可以使用 Windows 资源管理器、Finder 或任何其他用户来执行此操作- 也很友好)。

    特别是对于 Windows,请尝试确保您可以键入该文件夹的完整路径而不使用空格。所以永远不要把你的工作空间放在像“我的文档”这样的地方,尤其是因为那是 C:\Documents and settings\John Doe\" 的子目录。而是尝试像 "D:\Workspace\" 这样的地方。

    如果您已经将 Dropbox 用于其他目的,并且更改 Dropbox 文件夹的位置并不麻烦,请考虑使用它来自动备份您的工作区。只需将 Dropbox 文件夹放在 D:\ 或其他磁盘的根目录中即可。然后将 Workspace 添加为 Dropbox 的直接子文件夹。

    使用 Dropbox偶尔会在开发过程中妨碍您同步项目中的文件。但结果是您可以自动备份文件的多个版本:当天的所有版本,昨天的一些版本,前一天的一个版本。


    6.创建您的项目

    接下来,您在命令行控制台中使用cd 命令转到您的工作区目录。在那里,您告诉 Phonegap 使用命令

    放置一个空应用的基本结构
    $ phonegap create hello com.yourCompanyName.yourAppName HelloWorld
    

    这将创建一个文件夹 HelloWorld 并在其中填充许多子目录,其中包含作为应用程序主干的文件。


    7.把它挂在脚手架上

    然后你开始填充这个结构。大多数情况下,您的应用程序将是一堆 HTML、CSS 和 Javascript 文件。那些放在主 www 文件夹中。该文件夹还包含 config.xml 文件,其中包含您应用的许多设置,例如使用什么图标、显示什么名称、是否显示 Android 状态栏、哪些域要列入白名单等。

    Phonegap 将这些文件组合在 /www 目录中,因此您可以将所有“可编辑”的东西放在一起。如果您不想让您的应用使用插件来做任何花哨的事情,那么您就可以开始了。


    8.以正确的方式列入白名单

    如果您的应用程序的任何部分实际访问互联网,即使只是针对 Google Analytics(分析)之类的东西,您也必须告诉 Phonegap 将相应的域名“列入白名单”。如上所述,这是使用 MyProject\www\config.xml 中的标签完成的。

    这是一个棘手的问题,因为 Phonegap 在处理这个问题上的平台差异时遇到了麻烦。

    对于 Android(以 Google Analytics 为例),将您的域添加到白名单中,如下所示:

    您添加此域两次的原因是,许多在线服务以未经验证的简单 http:// 协议开始,但它们的某些功能随后可能会从/向同一安全 https:// 地址获取或发送代码域。

    星号很重要,因为您希望能够从 **www.**google-analytics.com 以及主 google-analytics.com 或任何子域下载脚本和其他内容。


    9.插入附加功能

    如果您的应用需要特殊功能(Android 会要求用户许可的功能,例如访问您的手机或通讯录或相机或加速度计),那么您需要在您的应用项目中安装插件。

    查看文档中的here 了解如何操作。

    另外,请确保在 config.xml 中添加一行,告诉 Phonegap 不要请求任何不必要的权限:

        <preference name="permissions" value="none" />
    

    文档说这意味着您只要求一个权限(网络访问),但事实并非如此。示例:如果您安装了相机插件,无论您是否添加了上述 value=none 偏好标签,应用程序都会向用户询问相机访问权限。所有其他功能/权限相同。


    10.小心使用自定义插件

    另外,这似乎是 Phonegap 中的一个错误,无论您的插件和权限设置如何,该应用程序总是会尝试获得其他三个权限:RECORD_VIDEO、ACCESS_COARSE_LOCATION 和 ACCESS_FINE_LOCATION。

    Phonegap 只是将它们放在 Android 清单中,就好像您在某处指定了一样。当您构建应用程序以实际发布到应用程序商店时,您需要修复此问题。如何:在最后一次构建之后,但在签名和发布包之前编辑你的 AndroidManifest.xml。

    这样你就可以获得这些讨厌的权限。但是每次您将新的应用版本上传到应用商店时,您都必须重复此操作!


    除了标准插件,Phonegap 一直有大量第三方自定义插件。 Phonegap 3.0 中的安装方式与以前完全不同。已经知道这个练习的懒惰的专家说“就像安装核心插件一样”,但没有人费心在任何地方举个例子。

    如果您知道如何将 3.0 之前的插件安装过程翻译成 3.0+ 的过程,请添加评论,我将复制粘贴到本手册中。


    当您准备好开始测试您的应用时,请先连接您的设备(或安装模拟器)。这些命令将是最有用的,但并非所有命令都有很好的记录...

    $ phonegap build android //This builds a test app, but doesn't run it
    $ phonegap run android //This builds the test app AND runs it on device/emulator
    

    然后,当应用完全按照您的意愿运行,并且您已准备好将其放入应用商店时,您需要采取最后几个步骤来创建一个可用于商店的应用应用程序包 (.apk)。

    您需要安装“ant”。在我的例子中,安装所有其他的东西意味着 ant 也被自动安装了,这很可能是你的情况。 Ant 是一个构建包的工具(我的愚蠢推论,不是经过验证的事实)。


    11.蚂蚁去哪里

    到目前为止,您一直在命令行控制台中从项目的主目录中执行命令。但是,现在您需要使用您使用这些命令创建的 Android apk,而“ant”不知道“phonegap”在哪里可以找到这些命令。

    所以转到子目录...

    cd platforms/android //This is a subdir of blabla/workspaces/myproject.
    

    这是您制作的 HTML/CSS/Js 内容的 Android 应用的 Java 原生“包装器”的位置。


    12.准备发布

    如果您需要对应用程序进行最后的修改(例如从 AndroidManifest.xml 中删除奇怪的权限请求),请立即进行。请务必编辑 /platforms/android 文件夹中的 AndroidManifest.xml,而不是 /platforms/android/bin 中的那个。

    由于 Phonegap 中的错误,您可能需要进行一些修改:

    • 删除不需要的权限请求
    • 手动设置版本代码(Phonegap sets it to 1 即使您在 config.xml 中指定了不同的方式)

    13.释放蚂蚁

    如果您真的准备好将您的东西放入应用商店,只需启动此命令即可。准备好出错:您一次处理这些步骤比我将整个 if-then 过程放在本手册中要容易。

    ant release
    

    ant 完成后,您应该在文件夹 /Platforms/Android/bin 中找到一个名为 YourAppName-release.apk 的文件。这是您可以上传到 Google Play 的文件。


    14. “ant release”的可能问题...

    A.您的应用需要私钥

    密钥存储在私有密钥库(文件)中。如果这不是您的第一个应用程序版本,请从您存储的任何地方获取这些内容,并将其放在一个简单、易于键入的位置,例如 D:\Developer\Keystores。如果这是您的第一个应用版本,请创建一个密钥。

    B. Ant 找不到您的密钥

    Ant 不知道在哪里可以找到这个密钥库,因此您需要在platforms/Android 目录中编辑一个文件以将其指向正确的方向。该文件称为 ant.properties。使用纯文本编辑器添加这些属性:

    //Point it to the right directory:
    key.store=/Users/Me/Dropbox/Developer/Keystores/keystoreForMyFirstApp //For Mac
    key.store = D:\Dropbox\Developer\Keystores\keystoreForMyFirstApp //For Windows
    
    //This describes the name of your signing key, as stored in the keystore
    key.alias=FirstKey
    

    您现在可能准备好将 apk 文件放入 Google Play 或其他一些 Android 商店。我并没有详尽无遗,但这些步骤应该会让你走得很远。欢迎评论!

    【讨论】:

    • 好吧,我只能快速通读一遍,但它看起来非常棒!这个周末我会花更多的时间来验证一切,但这似乎是一个非常有用的帖子!也许您想在 Cordova 博客上将其作为客座帖子发布? (cordova.apache.org/blog)
    • 让我知道您的验证结果如何。同时,这个人有一篇文章解释了一种完全不使用任何命令行的方式进行升级的方法。我不确定我是否希望他是对的...... :) stackoverflow.com/questions/18035566/…
    【解决方案2】:

    我认为,如果您遵循升级指南并记录您观察到的任何不一致或差异,这将非常有帮助:

    安卓:http://cordova.apache.org/docs/en/3.0.0/guide_platforms_android_upgrading.md.html#Upgrading%20Android

    iOS:http://cordova.apache.org/docs/en/3.0.0/guide_platforms_ios_upgrading.md.html#Upgrading%20iOS

    我认为您可能需要逐步进行“升级”,例如,您不能从 1.x 跳转到 3.0,但是,您可能可以结合一系列步骤。无论如何,实际上通过这个过程,验证它是否有效,并向https://github.com/apache/cordova-docs/ 提交任何拉取请求将帮助很多人。谢谢!

    【讨论】:

    • 您好 MBillau,您比我先回答了我自己的问题 :) 如您所见,我的建议不是执行多个升级步骤,而是在最新的 Phonegap 中创建一个全新的项目版本。
    • 嗯。好吧,我已经阅读了文档,唯一真正推荐的方法是使用 CLI 创建一个新应用程序,然后复制粘贴您的 /www/ 文件夹...然后测试并修复损坏的内容。如果您记录了实际的修复程序,这可能会很有用!祝你好运!
    • 我们说的是同一件事。不要逐步升级,而是创建一个全新的应用程序(“项目”)并复制 www 的东西。一旦你这样做了,我的回答可能会包含过程中可能出现的一些问题的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多