当前位置: 首页 > 知识库问答 >
问题:

无Phonegap构建的Android Phonegap应用程序

井镜
2023-03-14

我在升级PhoneGap 1时遇到了很多问题。x app到Phonegap 3.0,至少对于Android来说是这样(我甚至还没有开始升级iOS版本)。我想如果我把所有这些东西都放在一个Q里,可能会对很多人有所帮助

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

这是一本顶级手册,深入介绍了一些细节。我正在描述Mac用户的过程,但尽管命令和工具可能不同,但Windows的原则是相同的。

共有2个答案

易弘亮
2023-03-14

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

Android:http://cordova.apache.org/docs/en/3.0.0/guide_platforms_android_upgrading.md.html#UpgradingAndroid

网间网操作系统:http://cordova.apache.org/docs/en/3.0.0/guide_platforms_ios_upgrading.md.html#Upgrading网间网操作系统

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

皮煜
2023-03-14

预先警告...

首先,不要为官方文档升级手册而烦恼。这只会帮助你从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、先拿到工具箱

开始时,基本文档还可以。下载并安装节点。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

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

5.打开工作区

您需要做的第一件事是创建一个工作区,它是所有项目主文件夹的通用词(您可以使用Windows资源管理器、查找器或任何其他用户友好的工具来完成)。

尤其是对于Windows,请尝试确保您可以在不使用空格的情况下键入该文件夹的整个路径。因此,永远不要将您的工作区放在像“我的文档”这样的地方,尤其是因为那是C:\Documents and set\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文件夹中。该文件夹还包含配置。xml文件,其中包含应用程序的许多设置,如要使用的图标、要显示的名称、是否显示Android状态栏、要白名单的域等。

Phonegap将这些文件合并到/www目录中,这样您就可以将所有“可编辑”的内容放在一起。如果你的应用程序不能像插件一样做任何花哨的事情,那么你就可以开始了。

8、将正确的方法列入白名单

如果你的应用程序的任何部分确实访问了互联网,即使只是为了Google Analytics之类的东西,你也必须告诉Phonegap“白名单”相应的域名。如上所述,这是使用MyProject\www\config中的标记完成的。xml。

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

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

您两次添加此域的原因是许多在线服务以简单的未经验证的超文本传输协议://协议开始,但其中一些功能随后可能会从/发送代码到同一域上的安全https://地址。

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

9.插入额外功能

如果你的应用程序需要特殊功能(Android会要求用户许可的东西,比如访问你的手机、通讯录、摄像头或加速计),那么你需要在你的应用程序项目中安装插件。

看看这里的文档,看看怎么做。

此外,请确保在配置中添加一行。告诉Phonegap不要请求任何不必要的权限的xml:

    <preference name="permissions" 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.

这是您的Android应用程序的java本机“包装器”的位置,用于您制作的HTML/CSS/Js内容。

12、准备发布

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

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

  • 删除不需要的权限请求
  • 手动设置版本代码Phonegap将其设置为1,即使您在config.xml中指定不同)

13、释放蚂蚁

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

ant release

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

14.“蚂蚁发布”可能存在的问题...

A、 你的应用程序需要私钥

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

B、 Ant找不到您的密钥

Ant不知道在哪里可以查找此密钥库,因此您需要编辑平台/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商店。我还没有穷尽,但这些步骤应该会让你走很长的路。欢迎评论!

 类似资料:
  • 我创建了一个phonegap项目,并通过以下方式添加了android平台http://docs.phonegap.com/en/4.0.0/guide_cli_index.md.html#The此文档的命令行界面。当我尝试使用以下命令构建它时: cordova build或cordova build android 我得到了这个错误。

  • 使用PhoneGap构建程序构建iOS和Android(无MAC) 有两种方法将Cordova/PhoneGap合并到你的应用中,你可以通过命令行来使用本地安装版,或者使用PhoneGap Build云服务。 选择很简单: 如果你有一台Mac:在本地使用Cordova 如果你不是构建iOS应用:在本地使用Cordova 如果你没有Mac但是想要创建iOS应用:使用PhoneGap Build Ph

  • 我目前正在开始使用jQuery mobile构建一个移动应用程序,并将其包装为Phonegap以支持本机应用程序,这是对我们已经存在的用Django编写的桌面应用程序的扩展,我的问题是,将用html5/js/css编写的客户端应用程序连接到服务器端的最佳方式是什么,我会使用JSON发送/接收数据吗,有人写过关于这方面的好文章吗?

  • 我正在为iOS和Android开发一个应用程序,我正在使用Phonegap构建来创建它。我想要显示闪屏,我有。为每个平台创建的PNG文件;在iOS中,一切都很好,但在Android中,不会出现闪屏。 我的config.xml如下所示(相关代码): 我按照Phonegap文档创建了我的闪屏,Android的大小如下: 屏幕-ldpi-port.png-(320x426) 屏幕-mdpi-port.p

  • 我正在使用Moovweb SDK构建我的移动网站。 > 我想将我的移动站点转换为jQuery Mobile Web App。有没有办法用氚语言做到这一点?是否有任何支持jQuery Mobile的氚库? 接下来,我想构建一个Phonegap应用程序(iOS

  • 在gradle attemp构建项目后有一个日志(使用Pro buf) :app:GeneratedBugProto失败 失败:生成失败,出现异常。 > 错误:任务“:app:generateDebugProto”的执行失败。 协议:标准输出:。stderr:/Users//app/build/extracted protos/main:警告:目录不存在/用户//app/src/debug/pro