Android Studioで課金テストしたいんで、まずapk作製
[Build]->[Generate Signed APK]を選択。
諸々の設定などは下記を参考。
途中の Signature Vrsions は V1 , V2 の両方にチェック。
エラーが出なければ、下記にapkが作製される。
C:\Users\[ユーザ名]\AndroidStudioProjects\[プロジェクト名]\app\release\app-release.apk
Google Play Consoleにアクセスして、
[すべてのアプリ]から該当のアプリを選択し(アプリの仮情報は事前登録しているものとして)、[アプリのリリース]->[ベータ版]の[リリースを編集]クリック。
[Google Play App Signing]クリックで[次へ]→[同意]。内容は確認のこと。
次に[追加する APK]から作ったAPKをアップロード。
ただし、アップロードするAPKをビルドする際に、app/build.gradle 内の [versionName] 、0.0.0からスタートのこと。ベータ版で1.0.0にしちゃうと、本番リリースの際にその次の番号からしかスタートできないんで、最低でもバージョンが1.0.1になっちゃうんで注意。
[リリース名]と[このリリースの新機能]に任意の値を追加して保存。
前画面に戻って[テスト方法の選択]から[クローズド ベータ版テスト]を選択。
ユーザを登録して、[テスター]にチェック入れて、保存。
その前に、[ストアの掲載情報]、[コンテンツのレーティング]、[価格と販売/配布地域]のビックリマークが消えるまで入力項目を埋める。
[アプリのリリース]->[ベータ版]の[ベータ版を管理]クリックし、[ベータ版として公開を開始]クリックで、ベータ版で公開。今回は10分くらいで公開が始まったかな。
このページの[テスターの管理]の右側の三角形をクリックすると[オプトインURL
]ってのが表示されるんで、これをテストユーザに教える。
あと、開発者自身のアカウントでは、やっぱりテスト購入はできなかった。
[ストアでの表示]の[アプリ内サービス]
でアイテム登録。今回はゲームでいうところの「ステージ追加」みたいな感じで、一度買ったらそれで終了なアプリの実装なんで[管理対象のアイテム]から[管理対象アイテムを作製]クリックで作製。アイテムIDはキャメルケースはNGだった。なんで?
あと、一度ベータ版とかで公開してしまえば、あとはテストだけなら毎回Google Playにapkをアップしなくても、テストは可能。
プログラムを修正して、端末とPCを繋いで、検証をAndroid端末上で行える。便利。
Android Studio [Build]->[Generate Signed APK] で missing translation のワーニング。
Android Studioで課金のテストがしたいんで、まずはベータ版で APK ファイルをアップロードしないとだめ。
ってことで、[Build]->[Generate Signed APK]を選択。
いろいろと設定してさて……と進めると
missing translation warnings ...
デフォルトは英語版で、日本語を values-ja のstrings.xml で対応って考えていたんだけど、英語も日本語も共通のヤツや英語版の values/strings.xml だけに記述して、 values-ja/strings.xml には記述しないようにしていたら、どうもその ja の方に対応する記述がなかったからワーニングらしい。えー。共通のヤツは英語版のほうだけにしたかったんだけど……前にアプリを作った時はこれで行けたんだけどなあ。
……ってことでいろいろとググったら、
app/build.gradle
の android の中に、
lintOptions{
disable 'MissingTranslation'
}
の記載で、ワーニングは出なくなるっぽい。いやっほい。
参考。
Android Studio で Android アプリの開発時の課金の実装( SDK Manager の Extras ってどこやねん)
IInAppBillingService.aidl はどこにあるんだ?
公式ドキュメントにはAndroid Studioでのやりかたの記載なし。
SDK Manager の Extras って、Android Studioでは見当たらないんだけど。
何度か試しているので、本当に下記の方法でOKなのかよくわかんないんだけど、こんな感じ。
まず、AIDLファイル作製。
[File]->[New]->[AIDL]->[AIDL file]
Interface nameはデフォルトのものでやってみる。
[app]の下に aidl/[プロジェクト名] /IMyAidlInterface.aidl が作製される。この [aidl] フォルダを右クリックして、[Enter new package name:] と表示されるので、
com.android.vending.billing
と入力。
次に、下記から IInAppBillingService.aidl をダウンロード。
googleの公式のサンプルだから問題ないんじゃないかと(知らんけど)。
ダウンロードしたファイルを下記に設置。
C:\Users\[ユーザ名]\AndroidStudioProjects\[アプリプロジェクト名]\app\src\main\aidl\com\android\vending\billing
で、次に下記を選択してリビルド。
[Build]->[Rebuild Project]
下記に IInAppBillingService.java が生成された。
C:\Users\[ユーザ名]\AndroidStudioProjects\[アプリプロジェクト名]\app\build\generated\source\aidl\debug\com\android\vending\billing\IInAppBillingService.java
これでいいんかな?
AndroidManifest.xml に下記を追記して進める感じかな?
<uses-permission android:name="com.android.vending.BILLING" />
課金部分の実装はのちほどやってみよう。
画像追加したりとかボタンの色を変えても、Android Management Studio上のLayoutのDesign画面で反映されない
[Build] -> [Clean Project] を選択すると、キャッシュとか消えていい感じになるっぽい。
Androidの端末の設定言語による処理の振り分け
開発中のAndroidアプリ、ユーザが使っているAndroidのに設定されている言語によって処理を振り分けたい。
まあ、英語をデフォルトにしてもうひとつは日本語なんだけど。
で、過去の経緯をいろいろとググってみると、設定言語の取得は Locale.getDefault() だったんだけど、今は非推奨だとか、いろいろと歴史があったらしい。
Locale.getDefault().getLanguage() で返ってくる値(日本語は ja)とかで判定すればいいかな?と思ったんだけど。
どれがいいのかよくわかんなかったので、下記の方法で対応してみた。
res/values-jp/strings.xml に
<bool name="isJpn">true</bool>
res/values/strings.xml に
<bool name="isJpn">false</bool>
と設定しておいて、
this.isJpn = getResources().getBoolean(R.bool.isJpn);
これで判断すればいいんじゃね?
まあこれがベターなのかわかんないけど、こんな感じで実装してみる。
DIGNO TでAndroid Studioの実機検証
Androidの実機の検証用に。
WindowsのAndroid Studioで認識させるために、下記ページへ。
http://www.kyocera.co.jp/prdct/telecom/consumer/lineup/302kc/usb/index.html
上記下部の「ADB用USBドライバ(Android™開発者向け)」の箇所のexeダウンロード。
これでいける。
Android Studio 画面遷移
Android Studio は執筆時の最新のもので検証。今回は2.3.3。
下記のページを参考に。
適当なActivityを作製。Android Studioの画面左の app → java → プロジェクト名を右クリック(androidTestでもtestでもない、おそらく一番上のやつ)で New → Activity → EmptyActivityを選択。
勝手に res → Layout 以下にレイアウトファイルも作られる。
元のActivityに、
public void moveNext(View view){
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
注:
FirstActivity:元アクティビティ
SecondActivity:遷移先アクティビティ
って感じにメソッド作って、元の画面にボタン作って、レイアウトのxmlのそのボタンに関する箇所に android:onClick="moveNext" ってのを追加。
マニフェストファイルに遷移先のアクティビティの追記は、現在のバージョンでは勝手にやってくれるもよう。便利。