没有Phonegap Build的Android Phonegap应用程序

时间:2013-09-13 13:39:46

标签: android ios cordova upgrade

我遇到了很多问题,将我的PhoneGap 1.x应用程序升级到Phonegap 3.0,至少对于Android(我还没有开始升级iOS版本)。如果我将所有这些内容合并到Q& A中,我认为它可能对很多人有所帮助。

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

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

2 个答案:

答案 0 :(得分:12)

提前警告......

首先,请不要使用官方文档升级手册。这只能帮助你从1.0升级到1.1,然后从1.1升级到1.2,然后从1.2升级到1.3,等等。如果你想跳过多个版本,你不知道你是否正在做正确的事。因此,在升级时,从头开始创建一个新项目。

此外,请继续前进以确保您不会陷入困境:如果您的3.0之前的Phonegap应用程序使用自定义插件,请仔细考虑是否要进行升级。向前滚动到#34;注意定制插件"看看为什么。

一步一步

话虽如此,这是一步一步的过程,由线分开。


<强> 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。获取工具箱&#39;工具箱首先

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

//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

从现在开始,您可以使用&#39; phonegap&#39;命令为您的项目执行许多任务。


<强> 5。打开工作区

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

对于Windows,请尝试确保您可以在不使用空格的情况下键入该文件夹的完整路径。所以永远不要把你的工作空间放在像我的文档那样的地方,特别是因为它是C:\ Documents and settings \ John Doe \&#34;的子目录。相反,尝试像&#34; D:\ Workspace \&#34;。

如果您已将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目录中,这样您就拥有了所有可编辑的&#34;东西在一起。如果你的应用没有像插件一样做任何事情,那么你就可以去了。


<强> 8。正确的白名单

如果您的应用的任何部分实际访问互联网,即使只是用于Google Analytics之类的内容,您也必须告诉Phonegap&#34;白名单&#34;适当的域名。如上所述,这是使用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" />

文档说这意味着您只需要一个权限(网络访问权限),但这并不完全正确。示例:如果您已安装摄像头插件,则无论您是否添加了上述值=无偏好标记,该应用都会要求用户提供摄像头访问权限。所有其他功能/权限相同。


<强> 10。注意自定义插件

此外,这似乎是Phonegap中的一个错误,无论您的插件和权限设置如何,该应用总是会尝试获取其他三个权限:RECORD_VIDEO,ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION。< / p>

Phonegap只是将它们放在Android清单中,就像你在某处指定的一样。当您构建用于实际发布到应用商店的应用时,您需要解决此问题。方法:您在上次构建后立即编辑AndroidManifest.xml,但在签署和发布软件包之前。

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


除了标准插件外,Phonegap一直有许多第三方自定义插件。这些安装在Phonegap 3.0中的方式与以前完全不同。已经认识钻头的懒惰专家说这&#34;它与安装核心插件&#34;一样,但没有人愿意在任何地方举例。

如果您知道如何将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

然后,当应用完全符合您的要求,并且您已准备好将其放入应用商店时,您需要采取一些最后步骤创建商店就绪 app package(.apk)。

你需要拥有&#39; ant&#39;安装。在我的情况下,安装所有其他东西意味着蚂蚁也自动安装,这可能是你的情况。 Ant是一个构建包的工具(我的愚蠢推论,而不是经过验证的事实)。


<强> 11。去蚂蚁去的地方

到目前为止,您一直在命令行控制台中从项目的主目录中搜索命令。但是,现在,您将需要使用您使用这些命令创建的Android apk,并且&#39; ant&#39;并不知道&#39; phonegap&#39;在哪里找到那些。

所以继续前进到子目录......

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

这是您的Android应用程序的java native&#34; wrapper&#34;的位置。为你做的HTML / CSS / Js的东西。


<强> 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。 &#34; ant release&#34; ...

可能存在问题

:一种。您的应用需要私钥

密钥存储在私有密钥库(文件)中。如果这不是您的第一个应用程序版本,请从存储它的任何地方获取该内容并将其放在一个简单易用的位置,如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商店。我还没有详尽无遗,但这些步骤应该会让你走得更远。欢迎提出意见!

答案 1 :(得分:0)

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

Android: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/提交任何拉取请求将有助于很多人。谢谢!