英語でドキュメントを個別に処理することもできますが、プロセスが難しいか何かうまくいかない場合は、出版物が役立つことを願っています
開始する前に、アプリケーションの最初のバージョンを手動で公開する必要があります
アクセス設定
Google Playデベロッパーコンソールを開き、 [設定] → [ APIアクセス ]に移動します
コンソールはGoogle APIプロジェクトにリンクする必要があります。 プロジェクトがない場合、現時点では、[新しいプロジェクトの作成]ボタンのみがインターフェイスから利用できます。

ある場合、これらのプロジェクトのリストが利用可能になります。 もちろん、リンクボタンはそれらを接続します。

しかし、新しいプロジェクトを作成する例を見てみましょう。 Google APIコンソールから作成するか、既にお持ちのGoogle Playデベロッパーコンソールから直接作成して、[ 新しいプロジェクトを作成 ]ボタンをクリックします。
Google APIプロジェクトを作成するのがこれが初めての場合、ポップアップウィンドウが表示されます。ここにすべてを受け入れます

これでプロジェクトとサービスアカウントが作成されました。この場合は自動的に作成されます

次に、このアカウントがGoogle Playと連携して役割を付与できるようにする必要があります。 ここから直接行うこともできます 。[ アクセスを許可 ]をクリックします 。 ユーザーアカウントと右側のメニュー(バックグラウンドで表示)が表示され、電子メールやその他の必須フィールドが既に入力されているポップアップウィンドウが開きます。 [ ユーザーを追加]をクリックします

これで、ユーザーが正常に追加されたことがわかります。

次に、ライブラリを操作してアプリケーションの新しいバージョンを公開できるように、公開キーと秘密キーのペアを生成する必要があります。 これを行うには、Google APIコンソールでプロジェクトのリストを開き、目的のプロジェクトをクリックします。デフォルトでは、 Google Play Android Developerと呼ばれます。

次に、メニュー項目資格情報 → 資格情報の 作成をクリックして、 サービスアカウントキーを選択します

リストからCompute Engineのデフォルトのサービスアカウントを選択し、ラジオボタンをP12に転送します。 作成をクリックします

設定により、 Google Play Android Developer-%slice id%.p12という名前のいくつかの公開鍵と秘密鍵がコンピューターに保存されました


プログラミングを始めましょう
Googleは現在、Google Play Developer APIを操作するためのjavaおよびpythonライブラリを提供しています。 Javaのバリアントを検討します。これを行うには、ライブラリとサンプルを含むzipアーカイブをダウンロードします。
IDEを開き、プロジェクトを作成します。ProductionManagerを呼び出して、次のライブラリを接続します。
- google-api-client-1.19.0.jar
- google-api-services-androidpublisher-v2-rev20141111-1.19.0.jar
- google-http-client-1.19.0.jar
- google-http-client-jackson2-1.19.0.jar
- google-oauth-client-1.19.0.jar
- jackson-core-2.1.3.jar
Google PlayファイルAndroid Developer-%スライスid%.p12をプロジェクトのリソースフォルダーにコピーし、スペースがなくなるように名前を変更しました。読み込もうとすると例外が発生したようです。 多くの人がアクセスできるVCSでこのプロジェクトのソースコードを保持する場合は、おそらく継続的な統合サーバーにファイルを保存することをお勧めします。
それに応じてアプリケーションをビルドして公開する前に、最新バージョンのコード(versionCode)を見つけて更新するようにリクエストします。これは、ステップ1(これらは1、2、3 ...のみ)で算術的に進むことが好きだからです。裁量で、CIサーバーのbuildNumberまたはVCSのrevesionNumberに置き換えるだけです
更新バージョン
private Edits getApplicationEdits() throws Exception { String applicationName = "ApplicationName"; String serviceAccountId = "--@developer.gserviceaccount.com" HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); KeyStore keyStore = SecurityUtils.getPkcs12KeyStore(); InputStream inputStream = ProductionManager.class.getResourceAsStream("/resources/key.p12"); PrivateKey privateKey = SecurityUtils.loadPrivateKeyFromKeyStore(keyStore, inputStream, "notasecret", "privatekey", "notasecret"); inputStream.close(); GoogleCredential credential = new GoogleCredential .Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setServiceAccountId(serviceAccountId) .setServiceAccountScopes(Collections.singleton(AndroidPublisherScopes.ANDROIDPUBLISHER)) .setServiceAccountPrivateKey(privateKey) .build(); AndroidPublisher androidPublisher = new AndroidPublisher .Builder(httpTransport, jsonFactory, credential) .setApplicationName(applicationName) .build(); return androidPublisher.edits(); } private void updateVersionCode() throws Exception { String packageName = "com.package.name"; Edits edits = getApplicationEdits(); String editId = edits .insert(packageName, null) .execute() .getId(); ApksListResponse apksResponse = edits .apks() .list(packageName, editId) .execute(); List<Integer> versions = new ArrayList<Integer>(); List<Apk> apks = apksResponse.getApks(); if (apks == null) { throw new Exception("responsed list of apks is null"); } for (Apk apk : apks) { versions.add(apk.getVersionCode()); } if (versions.isEmpty()) { throw new Exception("previous versions are not detected"); } int lastVersionCode = Collections.max(versions); if (lastVersionCode == 0) { throw new Exception("version is 0"); } //TODO update version code //++lastVersionCode }
アプリケーション出版物
private void publishApplication() throws Exception { String packageName = "com.package.name"; String track = "beta";//release String setupFilePath = "/path/to/setup/file/app.apk"; Edits edits = getApplicationEdits(); String editId = edits .insert(packageName, null) .execute() .getId(); FileContent mediaContent = new FileContent("application/vnd.android.package-archive", new File(setupFilePath)); Upload uploadRequest = edits .apks() .upload(packageName, editId, mediaContent); Apk apk = uploadRequest.execute(); List<Integer> versions = new ArrayList<>(); versions.add(apk.getVersionCode()); edits .tracks() .update(packageName, editId, track, new Track().setVersionCodes(versions)) .execute(); edits .commit(packageName, editId) .execute(); }
実行可能jarをコンパイルします。 ここで、インストールファイルの作成とCIサーバーでの公開を構成する必要があります。TeamCityを使用します。 4つのビルドステップがあります。
- versionCodeを更新します。 処理中のパラメーターを使用してjarファイルを実行し、updateVersionCode()メソッドを呼び出します。 これがTeamCityの外観です
- versionNameを更新
- APKの生成。 コマンドラインを使用することができ、特別なステップを選択できます。gradleとIntelliJ IDEAがあります。2番目のケースでは、アーティファクト名を指定する必要があります
- アプリケーションを公開します。 また、jarファイルを別のパラメーターで実行し、publishApplication()メソッドを呼び出します
ご清聴ありがとうございました。