I am getting this error testing in-app subscription products locally.
authentication is required. you need to sign in to your google account
Perhaps another approach:
Similar in most ways to what is mentioned here except you just point to your release keystore within your debug buildType.
Exact steps:
1) In your app Gradle file in the android
tag add a release signing config:
signingConfigs {
release {
storeFile file("Path_to_your_Production_release_Keystore.jks")
storePassword 'your_keystore_password'
keyAlias 'your_key_alias'
keyPassword 'your_key_password'
}
}
and add the signing config to your debug buildType:
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-project.txt', 'proguard-google-api-client.txt'
}
debug {
signingConfig signingConfigs.release
debuggable true
}
}
2) Make sure the versionCode
and versionName
in your app gradle > defaultConfig
section matches exactly what's in the apk you uploaded to the play store:
defaultConfig {
applicationId "com.groovypackagename.groovyapp"
minSdkVersion 16
targetSdkVersion 24
versionCode 56
versionName "0.9.6"
multiDexEnabled true
resConfigs "en"
}
3) Make sure to add the billing permission to your manifest:
<uses-permission android:name="com.android.vending.BILLING" />
4) Don't forget to add your IAB (In App Billing) products per the docs
5) Set your break points and debug per usual.
6) After you have successfully tricked out your code, don't forget to clean up at least the changes in your gradle file such as removing the signing config so your kestore passwords aren't floating around in space.
With any luck you will be able to do local debugging for your IAB code.
Cheers.
The following worked for me launching from my IDE (Android Studio)
1) Go to your https://play.google.com/apps/publish/ Under 'Developer' Account/Settings/Account details/License Testing
2) Add the 'Default Google Play' email address that corresponds with the device you are testing
Source: https://engineering.memrise.com/faster-in-app-billing-subscriptions-testing-8e68551b4e2f
Yes, just tried it and it works, thought it'd help someone save time.
Once you upload your app for closed testing, then you make change and uploading again is tedious task. After frustration from this repetition I found this under official documentation
Ordinarily, the Google Play Billing Library is blocked for apps that aren't signed and uploaded to Google Play. License testers can bypass this check, meaning you can sideload apps for testing, even for apps using debug builds with debug signatures without the need to upload to the new version of your app. Note that the package name must match that of the app that is configured for Google Play, and the Google account must be a license tester for the Google Play Console account.
Ergo, I had a list of email accounts added as testers and licensing, as a result of alpha testing. I ran the code with same release keystore and the billing works exactly as in alpha testing.
Just make sure to add your testing emails for licensing in new Play Console.
Depends on the use case of your In-App Billing but making sure to have set-up purchase items
I assume, that when you initialize the 'billing helper', you provide it with a Base64 public key from the developer console. That key corresponds to your release certificate.
The message you get suggests, that you are probably trying to run your app in debug mode. That means, that your app is signed using the debug certificate (a default one). If I am right, that explains, why you are not being authenticated.
Unfortunately, the only way to test the in-app billing, is within an app signed using the release certificate, on a device logged in to an account, that is defined as 'Gmail accounts with testing access' and your app has to be published to Google Play (alpha/beta/production).
In essence, in-app billing payments can only be tested with a release-signed apk (the one we upload to Google Play Console).
Here are some steps that got me attached to a signed apk with Android Studio
:
I'm on Windows. It helps having adb.exe
in the PATH, for me that's:
C:\Users{your-username}\AppData\Local\Android\sdk\platform-tools
AndroidManifest.xml
under application
nodeandroid:debuggable="true" tools:ignore="HardcodedDebugMode"
Note:
Propably, you need to add: xmlns:tools="http://schemas.android.com/tools"
property to your manifest tag. It may look like:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your.package"
xmlns:tools="http://schemas.android.com/tools">
And in your build.gradle
file under android > buildTypes > release
, add:
debuggable true
Generate a signed APK from Android Studio
Attach your device for USB debugging. Remove current install:
adb uninstall {yourdomain}.{yourpackagename}
adb install app-release.apk
Run
menu, last option is "Attach debugger to Android Process" - select your device. You are now debugging.NB for in-app billing the build number needs to match the one currently published on Play Store