# -- 提交到Google Play

在经历了想Apple App store提交签名应用的噩梦之后，那么现在可以治疗一下了。相比之下，向Google Play提交应用就超级简单了。在开始之前，麻烦先[注册Google Play Developer](https://play.google.com/apps/publish/signup/)。\
记住，提交应用之前需要用一个keystore文件对应用进行签名。\
**重点：**&#x5982;果你用了Crosswalk插件，那么在构建的时候会生成两个.apk。提交流程基本还是一样的，但是确保阅读本课最后的关于上传来两个.apk到同一个应用的注意事项。

## 打包Android应用

跟iOS应用不一样，无论是Mac还是Windows，打包Android应用都是同一个方法。如果你用的是PC，想要同时也打包iOS应用，那么意味着你要用PhoneGap Build了，由于你已经用过PhoneGap Build了，那么用于Android也没啥难度了。所以如果没有Mac的话我建议你用PhoneGap Build来打包Android，除非你只想打包Android。\
如果你在使用PhoneGap Build的话，你已经有一了个签名了&#x7684;**.apk**，这样你可以跳到下一步**提交应用到Google Play**。如果没有的话，按照如下步骤执行。\
\*\*> 创建文件 platforms/android/release-signing.properties 文件，添加如下内容：

```
storeFile=snapaday-release.keystore
keyAlias=snapaday
```

这个文件告诉打包流程如何对应用签名。这里需要提供在签名课程里面生成的**keystore**文件，还有keystore的别名。第一行应该是keystore文件的存放路径，为简单化我将keystore文件移动到了这个文件的目录下，当然你也可以指定一个喜欢的路径【译者：老外好罗嗦啊，有点受不了】。第二行是别名。\
此文件就位之后，只要运行如下命令即可：

```
ionic build android --release
```

这个命令会给你生&#x6210;**.apk**文件（如果使用了Crosswalk的话，不止一个了），位置在：**platforms/android/build/outputs/apk/**

## 提交应用到Google Play

* 登录到[Google Play Developer Console](https://play.google.com/apps/publish/signup/)
* 点&#x51FB;**+Add New Application**:

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3BDorWUfVklKiqO%2F8.6.1.jpg?generation=1525685965047025\&alt=media)

* 填好提醒框点击**Upload APK**

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3DKXsXudCzQR8Eu%2F8.6.2.jpg?generation=1525685964955744\&alt=media)

* 然后会看到这样的页面：

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3HSgyK1APvBGp3a%2F8.6.3.jpg?generation=1525685964998312\&alt=media)

* 点击**Upload your first APK to Production**并上传签好名&#x7684;**.apk**文件

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3JwXs7C4xJdkRV9%2F8.6.4.jpg?generation=1525685965056725\&alt=media)

* 现在你可以看到页面更新：

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3LSj6erlDzL9NYw%2F8.6.5.jpg?generation=1525685965179575\&alt=media)

* 点击**Store Listing**填入信息包括截屏和促销素材然后点击**Save Draft**

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3Nrpe57lnH4ilQq%2F8.6.6.jpg?generation=1525685965142167\&alt=media)

* 接下来无**Content Rating**给应用创建一个内容评级点击**Save Draft**

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3PQHmmGsIQRk_U9%2F8.6.7.jpg?generation=1525685964969381\&alt=media)

* 去**Priceing & Distribution**填好信息点击**Save Draft**

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3RFATmX9aOeM4AO%2F8.6.8.jpg?generation=1525685965060080\&alt=media)

完成上面这些页面的填写之后点击**Publish App**应用就提交上去了！\
跟Apple App Store不同，你的应用数小时内就可以在Google Play上看到了。

## 上传Crosswalk的多个APK

crosswalk的有趣之处在于会生成两个.apk文件，每个用户根据设备的不同需要的不同的.apk。现在在**platforms/android/build/outputs/apk/**&#x5185;会看到两个发布的.apk文件：

* android-armv7-release.apk
* android-x86-release.apk

这给我们带来一个难题，我们要上传哪个到应用商店呢？\
也许你已经在论坛上看到如何合并这两个apk文件了，但是幸运的是这个问题很好解决。\
你可以把两个apk都提交上去，上传新版本的应用需要比之前上传的应用版本的版本号要求要高（可以在config.xml中设置）。这是提交应用后更新应用的方法，增加config.xml文件里的版本号，重新打包，重新提交。\
接下来展示如何给同一个应用提交多个apk：

* 点击Upload APK按钮上传第一个apk文件，无论是android-armv7-release.apk还是android-x86-release.apk都可以
* 上传完成后点击右上角&#x7684;*\[Switch to Advanced Mode]*

![Google Play](https://877130497-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBtuaet5GRr7L6p_j6_%2F-LBty0R2-90Yy_bs85eB%2F-LBty3XamUhJ8N-pOD6c%2F8.6.9.jpg?generation=1525685965068244\&alt=media)

转换到高级模式后，再次点击上传按钮上传第二个apk。\
这样两个apk文件都上传好了，可以在列表中看到了。可以看到他们版本号一样但是版本代号有点不用 -- 有一个的版本比另一个高 -- crosswalk自动处理。
