Help us understand the problem. What is going on with this article?

AndroidStudioで生成したAPKをDeveloperConsoleにアップ出来ないケース

More than 5 years have passed since last update.

AndroidStudioでは、BuildメニューからGenerate Signed APKを選択すると、署名付きAPKファイルを生成出来ます。
生成されたAPKファイルをDeveloper Consoleにアップロードすれば、公開用アプリとして登録されるはずです。

しかしアップロード完了後、Developer Consoleに以下のようなエラーが表示され、アップロードに失敗しました。

アップロードできませんでした
デバッグ可能な APK をアップロードしました。セキュリティ上の理由により、Google Play に公開するにはデバッグを無効にする必要があります。デバッグ可能な APK の詳細をご確認ください。

下記のブログで、同じケースのことが書かれており、解決出来ました。
「デバッグ可能なAPKをアップロードしました。」などどと言い始めた Google Play Developer Console(新! #android ファッション通信 Σ(^A^;))

解決方法

  1. AndroidManifest.xml ファイルに android:debuggable="false" を追記する
  2. AndroidStudio の Build Variants を release にしてから APK を生成する

AndroidManifest.xml ファイルに android:debuggable="false" を追記する

<application> タグを以下のように修正します。

AndroidManifest.xml
    <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@string/AppTheme"
            android:debuggable="false"
            >
        ....
    </application>

AndroidStudio の Build Variants を release にしてから APK を生成する

AndroidStudioのTool Windowsメニューから、Build Variantsを選択します。
するとソースツリーの下あたりに、Build Variantsウィンドウが出現します。そこでBuild Variantの設定がDebugになっている場合は、Releaseに切り替えます。

まとめ

上記2つの方法であれば、どちらでもDeveloper Consoleへ登録可能なAPKが生成出来ました。
ただし、AndroidStudioを使う上では2番目のBuild Variantsを切り替える方法が、正しいのだと思います。

理由は、BuildツールとしてGradleを採用しているからです。
GradleでBuildする最大のメリットとして、1つのプロジェクトから複数バージョンのAPKを生成することが出来ます。デフォルトのBuild Variantsには、DebugとReleaseしかありませんが、それ以外にも自由に追加可能なため、生成したいAPKに合わせてBuild Variantsを都度切り替えるやり方が、本来の使い方のようです。

このへんのBuild Variantsについては、下記ブログがすごく参考になります。
Build Variants によって別バージョンの Android アプリを同じプロジェクトからビルドする (Gradle 使用)(ひだまりソケットは壊れない)

finc
健康寿命を伸ばすアプリFiNCの開発・運営を行うモバイルヘルステクノロジーベンチャー
https://finc.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away