Google Play Store に apk をスクリプトでアップロードする

GoogleからこんなAPIが公開されています.

Awesome__Automated_Google_Play_publishing_via_an_API__May_add_this_into_my…

Awesome! Automated Google Play publishing via an API. May add this into my…

これまでのapkアップロードの方法は, ブラウザからapkをアップロードしていましたが.

APK-Google_Play_Developer_Console

このAPI何ができるのか.

API Reference - Google Play Developer API — Google Developers

ほとんどこれまでブラウザで操作してた「Google Developer Console」の内容は処理できる雰囲気.

apk を操作するのは以下.

Edits.apklistings

Edits.apks

サンプルとしてpythonなスクリプトあります.

google/google-api-python-client

android-play-publisher-api/v2/python at master · googlesamples/android-play-publisher-api

android-play-publisher-api-master/v2/python/
├── README.md
├── basic_list_apks.py
├── basic_list_apks_service_account.py
├── basic_upload_apks.py
├── client_secrets.json
├── update_listings.py
├── upload_apks_rollout.py
└── upload_apks_with_listing.py

とりあえず, スクリプトから PlayStore にアクセスして apk のアップロード済みリストを取得してみる.

$ python basic_list_apks.py
usage: basic_list_apks.py [-h] [--auth_host_name AUTH_HOST_NAME]
                          [--noauth_local_webserver]
                          [--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]
                          [--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
                          package_name
$ python basic_list_apks.py com.sample.package
versionCode: 92, binary.sha1: b364588222644f011a027d8ca00c99590a67ede5
versionCode: 93, binary.sha1: bfe26c13974454e893192802fb0ef09bbb0e9678
versionCode: 94, binary.sha1: f5affe6fef705365fd53441889405c88c930c535

効率的に自動化する使い方ができそう.

まずは以下から, APIのIDとキーの取得からやるとわかりやすいかも.

Google_Developers_Console

Google Developers Console


ひさびさに更新したら動かないプロジェクトたち #androidstudio

8/1 になんだかんだというのでちまちまやってるといろんなことがおこる.

【 Android_ID / IMEI を使ったらアウト?! 】8/1 以降 「端末の特定」はすべて Google「広告ID」経由に

build tool を 19.1.0 にする.

android {
    compileSdkVersion 19
    buildToolsVersion ’19.1.0'

Gradle Plugin のバージョンを 0.12.0 以降にする.

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'

Error:The project is using an unsupported version of Gradle. Please use version 1.12.
Please point to a supported Gradle version in the project's Gradle settings or in the project's Gradle wrapper (if applicable.)

gradle/wrapper/gradle-wrapper.properties

distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip

Error:Execution failed for task ’sample:processDefaultFlavorDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 17 cannot be smaller than version L declared in library com.android.support:appcompat-v7:21.0.0-rc1

appcompat が 21 を拾ってエラー
→ 19.+ に

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.google.android.gms:play-services:+’

Warning:(21, 25) Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details.

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7

Gradle のバージョンて こんな風になってたのかっ

Android_Studio_Gradle_issue_upgrading_to_version_0_5_0_-_Gradle_Migrating_From_0_8_to_0_9_-_Also_Android_Studio_upgrade_to_0_8_1_-_Stack_Overflow

Android Studio Gradle issue upgrading to version 0.5.0 - Gradle Migrating From 0.8 to 0.9 - Also Android Studio upgrade to 0.8.1 - Stack Overflow


Admob 以外の広告SDKはすべてリジェクトされるのだろうか?

Google Adsense (Admob) 以外のアプリ広告業者からメールがきました.

*** は広告業者名.

2014年8月1日より施行されるGoogle Playの新ポリシーにより、
*** の旧バージョンSDKを搭載された状態のアプリを新規及び更新アプリとしてストア申請した場合、
リジェクトの対象となる恐れが出て参りました。
つきましては ***SDK のアップデートをお願いしたく、メディアの皆さまにご連絡させて頂きました。

2014年8月1日以降、Googleの指定する"広告ID"以外のIDを広告表示に利用するアプリを、
新規もしくは更新の審査に申請した場合、Googleによりポリシー違反と判断され、
アプリがリジェクトされる可能性がございます。

Google_Play

「ID」という概念をもつ「SDK」を利用しているアプリは, 果たしてすべてリジェクトされるの?

再度, 公式ポリシーを見てみる.

Google Play

5. Android 広告 ID の使用

Google Play 開発者サービス バージョン 4.0 では、広告と分析のプロバイダが使用する新しい API と ID が導入されました。この API と ID を使用するための規約は以下のとおりです。

使用: Android 広告 ID は広告とユーザーの分析以外で使用してはいけません。ID の各アクセスで [インタレストベース広告をオプトアウト] 設定のステータスを確認する必要があります。
個人を特定できる情報またはその他の ID との関連付け: 広告 ID をユーザーの明示的な同意なしに、個人を特定できる情報にリンクしたり、永続的なデバイス ID(例: SSAID、MAC アドレス、IMEI など)に関連付けたりしてはいけません。
ユーザーの選択を優先: リセットする際にユーザーの明示的な同意なしに、新しい広告 ID を以前の広告 ID や以前の広告 ID からのデータにリンクしてはいけません。さらに、ユーザーの [インタレストベース広告をオプトアウト] 設定を遵守する必要があります。ユーザーがこの設定を有効にした場合は、広告目的でユーザーのプロフィールを作成したり、ユーザーをインタレスト ベース広告のターゲットに設定したりするために広告 ID を使用してはいけません。ただし、コンテンツ ターゲット広告、フリークエンシー キャップ、コンバージョン トラッキング、レポート、セキュリティや不正行為の検出などに使用することはできます。
ユーザーに対する透明性: 広告 ID の収集と使用、その規約への同意について、法的に適切なプライバシー通知でユーザーに公開する必要があります。
利用規約の遵守: 広告 ID はその利用規約を遵守する場合にのみ使用できます。貴社のビジネスで共有する可能性のある団体が使用する場合も同様です。2014 年 8 月 1 日から、Play ストアにアップロードされたすべての更新や新着アプリには、広告目的で使用する端末 ID として広告 ID(端末で利用可能な場合)を使用する必要があります。

要するに, 「広告に関しての情報はすべて Google が把握しますよ」ということなのか.

他にもたくさんSDKを配布している広告業者はいるはずなんだけども.

8/1 以降, どれくらい Google Play Store に変化があるのだろうか.

【 Android_ID / IMEI を使ったらアウト?! 】8/1 以降 「端末の特定」はすべて Google「広告ID」経由に