您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > APP

如何轻松发布私有 App

时间:2019-09-02 11:54:26  来源:  作者:

原文地址:Publishing private Apps just got easier
原文作者:Jon Markoff
译文出自:掘金翻译计划
本文永久链接:github.com/xitu/gold-m…
译者:Qiuk17
校对者:PeachChou, xiaxiayang


来自插图 Virginia Poltrack

不论你的团队拥有 5 个还是 100 个 App,你总能找到帮你管理 Play Store 列表的自动化工具。google Play 允许你通过其开发者 API 来管理你的 Play Store 列表、打包好的 APK 等。2017 年 1 月的时候,Google 从 Twitter 收购了名为 Fabric 的开发者套件,其中包含了可以自动化截图、管理测试版部署、签名并将 App 推送到 Play Store 的 fastlane。

除此之外,私有 App 发布 API 允许拥有管理权限的 Google Play 用户在跳过 最低版本检查 的情况下创建并发布私有的 App。Managed Google Play 是为企业版 Android 用户提供私有应用程序支持的应用商店。私有 App 只会被分发给内部用户而不会被大众获取。私有 App 的部署可以在被创建后的几分钟内完成。Jan Piotrowski 向 fastlane 提出的这个 pull request,让零代码部署 App 成为可能。对此特性的请求历史可以在 这里 看到。如果想要更多了解 Managed Google Play 和 Google Play 项目,请看看这篇 博客。

这为什么很重要:私有 App 发布 API 或者 fastlane 大大简化了迁移到 Managed Google Play 的流程,并且可以方便地被集成到 CI 工具中。

配置私有 App 功能

重要:在创建用于调试或产品的 keystore 时,请确保使用最佳的 app 签名方式。千万别丢失您用于生产的 keystore!因为一旦你将它应用于 Google Play 上的某一个 App ID(包括私有 App),你将永远不能在不创建新的应用程序列表及修改其 App ID 的情况下更换 keystore。
推荐:利用 Google Play App Signing 来为你的 APK 文件签名。这是保管的 keystore 的一个好方法。你可以在 这里 看到此方法的细节。
重要:在 Google Play 上的所有 App(包括私有 App)必须具有一个唯一的且不可重用的 App ID。
在发布你的私有 App 之前,你只需要三步。
跟着这篇 指导说明 进行如下三步:

在 Cloud API 控制台中启用 Google Play 的 私有 App 发布 API;
创建一个服务账户,并下载其 JSON 格式的私钥;
启用私有 App 功能。

配置 fastlane

请阅读这篇 文档 来安装 fastlane 。其中包含了 Managed Google Play 支持。

启用私有 App — 获取你的开发者账户 ID

这篇 指南 将告诉你如何创建一个需要通过 OAuth 回调来获取开发者账户 ID 的私有 App。有两种方法来启用私有 App 功能:使用 fastlane 或者使用 API。下面将向你展示如何使用这两种方法并比较其复杂程度:

使用 fastlane — 非常简单

> fastlane run get_managed_play_store_publishing_rights

样例输出:


[13:20:46]: To obtain publishing rights for custom apps on Managed Play Store, open the following URL and log in:

[13:20:46]: https://play.google.com/apps/publish/delegatePrivateApp?service_account=SERVICE-ACCOUNT-EMAIL.iam.gserviceaccount.com&continueUrl=https://fastlane.github.io/managed_google_play-callback/callback.html

[13:20:46]: ([Cmd/Ctrl] + [Left click] lets you open this URL in many consoles/terminals/shells)

[13:20:46]: After successful login you will be redirected to a page which outputs some information that is required for usage of the `create_app_on_managed_play_store` action.

把这个链接粘贴到你的浏览器中你就可以向这个 Managed Google Play 的账户所有者发起授权请求了。

使用 API — 有点复杂

如果 你不打算为了管理你的 App 做一个基于 Web 的前端页面,你可以使用下面的 node 脚本以及 Firebase 的功能来快速获取你的开发者账户 ID。如果你不在意跳转的 URL(continueUrl)的话,你可以把它设置成类似于 foo.bar 这样的假 URL。但是出于安全的考虑,这么做是不被推荐的。
配置 Firebase 的云功能
这篇 指南 将告诉你怎样去配置 Firebase 的云功能。下面的代码可被用于你的终端。

const functions = require('firebase-functions');

exports.oauthcallback = functions.https.onRequest((request, response) => {
  response.send(request.query.developerAccount);
});
functions/index.js

创建私有 App 列表

使用 fastlane — 非常简单

  ENV['SUPPLY_JSON_KEY'] = 'key.json'
  ENV['SUPPLY_DEVELOPER_ACCOUNT_ID'] = '111111111111000000000'
  ENV['SUPPLY_APP_TITLE'] = 'APP TITLE'
  desc "Create the private app on the Google Play store"
  lane :create_private_app do
      gradle(
        task: 'assemble',
        build_type: 'Release'
      )

      # Finds latest APK
      apk_path = Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]

      create_app_on_managed_play_store(
        json_key: ENV['SUPPLY_JSON_KEY'],
        developer_account_id: ENV['SUPPLY_DEVELOPER_ACCOUNT_ID'],
        app_title: ENV['SUPPLY_APP_TITLE'],
        language: "en_US",
        apk: apk_path
      )
    end

样例 Fastfile

> fastlane create_private_app

使用 API — 有点复杂

或许你应当先读读 API 文档。Google 提供了 JAVAPython、C# 和 Ruby 的用户端库文件。

API 样例

下面这段 Ruby 代码在使用 Google 服务账户 的 JSON 格式密钥文件认证之后,通过调用 Play Custom App 服务创建了一个私有 App 并上传了其第一版 APK 文件。这段代码只应当在第一次创建 App 时使用,后续更新应使用 Google Play 的发布 API 中的上传 APK 功能。

require "google/apis/playcustomapp_v1"

# Auth Info
KEYFILE = "KEYFILE.json" # PATH TO JSON KEYFILE
DEVELOPER_ACCOUNT = "DEVELOPER_ACCOUNT_ID" # DEVELOPER ACCOUNT ID

# App Info
APK_PATH = "FILE_NAME.apk" # PATH TO SIGNED APK WITH V1+V2 SIGNATURES
APP_TITLE = "APP TITLE"
LANGUAGE_CODE = "EN_US"

scope = "https://www.googleapis.com/auth/androidpublisher"
credentials = JSON.parse(File.open(KEYFILE, "rb").read)
authorization = Signet::OAuth2::Client.new(
 :token_credential_uri => "https://oauth2.googleapis.com/token",
 :audience => "https://oauth2.googleapis.com/token",
 :scope => scope,
 :issuer => credentials["client_id"],
 :signing_key => OpenSSL::PKey::RSA.new(credentials["private_key"], nil),
)
authorization.fetch_access_token!

custom_app = Google::Apis::PlaycustomappV1::CustomApp.new title: APP_TITLE, language_code: LANGUAGE_CODE
play_custom_apps = Google::Apis::PlaycustomappV1::PlaycustomappService.new
play_custom_apps.authorization = authorization

play_custom_apps.create_account_custom_app(
 DEVELOPER_ACCOUNT,
 custom_app,
 upload_source: APK_PATH,
) do |created_app, error|
 unless error.nil?
   puts "Error: #{error}"
 else
   puts "Success: #{created_app}."
 end
end

更新私有 App
创建 Play Store 列表之后,一旦你创建了一个私有 App,你就可以使用 Google Play 发布 API 来推送你的新 APK 文件。fastlane 支持这个功能。你可以在 这里 找到更多信息。
部署到用户
Managed Google Play 需要 EMM (Enterprise Mobility Management)系统将 App 分发给用户。了解更多请戳这里。
部署和管理企业私有 App 从未变得如此容易。这两种使用 Managed Google Play 来部署 App 的方法都是可行的。使用哪一种取决于你的持续集成系统以及你是否想要写代码。试试 fastlane 吧,你会省下很多时间的。
如果你在使用 fastlane 的时候遇到任何问题或者 bug,请在 github 上给我们提 issue。

如果发现译文存在错误或其他需要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。

作者:Android_开发者
链接:https://juejin.im/post/5cac855f6fb9a0689f4c0f44
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



Tags:App   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
新的一年即将到来,不知各位手机上有多少款年度精选APP,这里给大家分享App Store年度精选的8个iPhone必装APP,每个都爱不释手。 1、拦截100拦截浏览器跳转广告。我们在用Safari...【详细内容】
2021-12-28  Tags: App  点击:(2)  评论:(0)  加入收藏
这是很久以前的一则数据,我在iOS平台开发了“先知 - 优质生活”App,本想依靠封闭式环境,广告少体验不错等优点。会有一定的下载量,没想到开发完成后,就被App store埋藏起来了。个...【详细内容】
2021-12-27  Tags: App  点击:(5)  评论:(0)  加入收藏
  1、明确产品的需求分析+功能  这是最基本的也是第一步,我们要明确自己或者客户真的想要开发一款app应用,其次就要了解到底要开发什么功能什么类别和种类的app应用。所...【详细内容】
2021-12-27  Tags: App  点击:(3)  评论:(0)  加入收藏
应用锁一直是苹果用户的痛点,毕竟这功能隔壁安卓早就有了。 为什么苹果一直不给上应用锁的功能呢?之前记者也有提问过苹果的前设计师(首席声优)艾维,他说在苹果的逻辑里,手机密码...【详细内容】
2021-12-23  Tags: App  点击:(27)  评论:(0)  加入收藏
APP已经成了每个现代人生活里必不可少的东西了吧。 你有没有数过,你一天从睁眼到闭眼,要打开多少个APP? 小沫今天来分享几个我受益颇多的好APP! 直接上图,这9个。 简单归类了一...【详细内容】
2021-12-21  Tags: App  点击:(7)  评论:(0)  加入收藏
据央视新闻客户端消息,中国消费者协会今天(14日)发布《50款APP账号注销及自动化推荐退订测评报告》显示,在是否可以顺利注销APP账号方面,50款APP中有20款APP存在不同程度问题,占总...【详细内容】
2021-12-15  Tags: App  点击:(9)  评论:(0)  加入收藏
“经常听到周围的人跟我说,和朋友聚会时刚谈到一个商品,不久后在手机中就出现了该商品的广告;还有人跟我反映,在用平台类App如打车软件、电商购物App、酒店App时,同样的路线、同样的商品、同样的酒店,不同的手机会显示出不...【详细内容】
2021-12-14  Tags: App  点击:(9)  评论:(0)  加入收藏
来源:人民网电子驾驶证申领失败、身份证信息被占用……随着电子驾驶证的全国推行,一些“交管12123”APP使用过程中遇到的问题也困扰着部分用户。人民网选取了九个...【详细内容】
2021-12-14  Tags: App  点击:(10)  评论:(0)  加入收藏
一些用户可能会遇到这样的问题:当需要使用 Apple ID 时,才发现自己忘记了 Apple ID 的密码。如何快速找回 Apple ID 的密码?苹果官方提供了一个非常简单的方法:如果你现在手上有...【详细内容】
2021-12-14  Tags: App  点击:(10)  评论:(0)  加入收藏
今天详解一个 Python 库 Streamlit,它可以为机器学习和数据分析构建 web app。它的优势是入门容易、纯 Python 编码、开发效率高、UI精美。 上图是用 Streamlit 构建自动驾驶...【详细内容】
2021-12-09  Tags: App  点击:(24)  评论:(0)  加入收藏
▌简易百科推荐
  1、明确产品的需求分析+功能  这是最基本的也是第一步,我们要明确自己或者客户真的想要开发一款app应用,其次就要了解到底要开发什么功能什么类别和种类的app应用。所...【详细内容】
2021-12-27  木子科技    Tags:App   点击:(3)  评论:(0)  加入收藏
前言目前,即时通讯在app中逐渐成了不可或缺的功能,尤其是在疫情期间,音视频会议功能更是火了一把,但是想自己开发即时通讯功能,却一点都不简单,如果用原生开发的话,那么Android、iO...【详细内容】
2021-07-29  中控易动    Tags:APP   点击:(104)  评论:(0)  加入收藏
本篇博文将会提供一个关于如何使用WebRTC建立一个视频会议App的教程。我们不会将其设计的太复杂,它将会是一个简单的一对一视频会议App,并且仅仅使用了WebRTC APIs和一些其他...【详细内容】
2021-07-29  易简视源云会议    Tags:视频会议App   点击:(113)  评论:(0)  加入收藏
开发一款app需要多少钱?这是一个比较笼统的问题,没有确切的需求,拥有不同技术经验的团队往往报价都各不相同,因为不知道开发需求,所以无法给出一个准确的价格。因此,想知道app开发...【详细内容】
2021-07-13  hey衡道    Tags:app   点击:(79)  评论:(0)  加入收藏
Hybrid APP指的是半原生半Web的混合类App。需要下载安装,看上去类似Native App,但只有很少的UI Web View,访问的内容是 Web 。 原生是Native APP,H5就是Web App在Hybrid 当中,如...【详细内容】
2021-04-28  扣丁学堂  今日头条  Tags:APP页面   点击:(289)  评论:(0)  加入收藏
介绍MIP(Mobile Instant Pages - 移动网页加速器),是一套应用于移动网页的开放性技术标准。通过提供 MIP-HTML 规范、MIP-JS 运行环境以及 MIP-Cache 页面缓存系统,实现移动网页...【详细内容】
2021-04-12  爱分享Coder  今日头条  Tags:WebApp   点击:(309)  评论:(0)  加入收藏
在开发直播APP时,核心要素和基本要素是稳定性,一般各大服务商都有提供demo,并且可以免费测试的,测试可以初步评估下稳定性,看看视频流畅度如何,卡顿是不是很频繁,延时效果怎么样,视...【详细内容】
2021-03-19      Tags:直播APP   点击:(292)  评论:(0)  加入收藏
TOKEN作为用户身份凭证并不能保证数据安全,别人通过抓包等方式很容易拿到TOKEN,带上TOKEN请求我们的API接口就能获取数据;其实换一个角度想:我们只需保证即使TOKEN被别人冒用,也...【详细内容】
2021-02-18      Tags:APP,API   点击:(229)  评论:(0)  加入收藏
在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/4G/5G/WiFi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。目前...【详细内容】
2021-02-05      Tags:APP   点击:(201)  评论:(0)  加入收藏
虽然目前许多企业都进行了长沙APP开发,开始了移动互联网转型之路,但由于其中绝大部分企业都属于传统行业,对APP应用了解并不多,故而对开发工作也不是很清楚。为了大家能更好的了...【详细内容】
2021-02-01      Tags:APP应用   点击:(214)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条