| def localProperties = new Properties() |
| def localPropertiesFile = rootProject.file('local.properties') |
| if (localPropertiesFile.exists()) { |
| localPropertiesFile.withReader('UTF-8') { reader -> |
| localProperties.load(reader) |
| } |
| } |
| |
| // Load the build signing secrets from a local `keystore.properties` file. |
| // TODO(YOU): Create release keys and a `keystore.properties` file. See |
| // `example/README.md` for more info and `keystore.example.properties` for an |
| // example. |
| def keystorePropertiesFile = rootProject.file("keystore.properties") |
| def keystoreProperties = new Properties() |
| def configured = true |
| try { |
| keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) |
| } catch (IOException e) { |
| configured = false |
| logger.error('Release signing information not found.') |
| } |
| |
| project.ext { |
| // TODO(YOU): Create release keys and a `keystore.properties` file. See |
| // `example/README.md` for more info and `keystore.example.properties` for an |
| // example. |
| APP_ID = configured ? keystoreProperties['appId'] : "io.flutter.plugins.inapppurchaseexample.DEFAULT_DO_NOT_USE" |
| KEYSTORE_STORE_FILE = configured ? rootProject.file(keystoreProperties['storeFile']) : null |
| KEYSTORE_STORE_PASSWORD = keystoreProperties['storePassword'] |
| KEYSTORE_KEY_ALIAS = keystoreProperties['keyAlias'] |
| KEYSTORE_KEY_PASSWORD = keystoreProperties['keyPassword'] |
| VERSION_CODE = configured ? keystoreProperties['versionCode'].toInteger() : 1 |
| VERSION_NAME = configured ? keystoreProperties['versionName'] : "0.0.1" |
| } |
| |
| if (project.APP_ID == "io.flutter.plugins.inapppurchaseexample.DEFAULT_DO_NOT_USE") { |
| configured = false |
| logger.error('Unique package name not set, defaulting to "io.flutter.plugins.inapppurchaseexample.DEFAULT_DO_NOT_USE".') |
| } |
| |
| // Log a final error message if we're unable to create a release key signed |
| // build for an app configured in the Play Developer Console. Apks built in this |
| // condition won't be able to call any of the BillingClient APIs. |
| if (!configured) { |
| logger.error('The app could not be configured for release signing. In app purchases will not be testable. See `example/README.md` for more info and instructions.') |
| } |
| |
| def flutterRoot = localProperties.getProperty('flutter.sdk') |
| if (flutterRoot == null) { |
| throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") |
| } |
| |
| apply plugin: 'com.android.application' |
| apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" |
| |
| android { |
| namespace 'io.flutter.plugins.inapppurchaseexample' |
| signingConfigs { |
| release { |
| storeFile project.KEYSTORE_STORE_FILE |
| storePassword project.KEYSTORE_STORE_PASSWORD |
| keyAlias project.KEYSTORE_KEY_ALIAS |
| keyPassword project.KEYSTORE_KEY_PASSWORD |
| } |
| } |
| |
| compileSdkVersion flutter.compileSdkVersion |
| |
| |
| defaultConfig { |
| applicationId project.APP_ID |
| minSdkVersion flutter.minSdkVersion |
| targetSdkVersion 28 |
| versionCode project.VERSION_CODE |
| versionName project.VERSION_NAME |
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" |
| } |
| |
| buildTypes { |
| // Google Play Billing APIs only work with apps signed for production. |
| debug { |
| if (configured) { |
| signingConfig signingConfigs.release |
| } else { |
| signingConfig signingConfigs.debug |
| } |
| } |
| release { |
| if (configured) { |
| signingConfig signingConfigs.release |
| } else { |
| signingConfig signingConfigs.debug |
| } |
| } |
| } |
| |
| testOptions { |
| unitTests.returnDefaultValues = true |
| } |
| lint { |
| disable 'InvalidPackage' |
| } |
| } |
| |
| flutter { |
| source '../..' |
| } |
| |
| dependencies { |
| implementation 'com.android.billingclient:billing:3.0.2' |
| testImplementation 'junit:junit:4.13.2' |
| testImplementation 'org.mockito:mockito-core:5.0.0' |
| testImplementation 'org.json:json:20230227' |
| androidTestImplementation 'androidx.test:runner:1.1.1' |
| androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' |
| } |