Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,7 @@ kt_android_library(
"//app/src/main/java/org/oppia/android/app/shim:prod_modules",
"//app/src/main/java/org/oppia/android/app/testing/activity:test_activity",
"//domain/src/main/java/org/oppia/android/domain/onboarding:state_controller",
"//domain/src/main/java/org/oppia/android/domain/oppialogger:age_signals",
"//domain/src/main/java/org/oppia/android/domain/oppialogger:startup_listener",
"//domain/src/main/java/org/oppia/android/domain/profile:profile_management_controller",
"//domain/src/main/java/org/oppia/android/domain/spotlight:spotlight_state_controller",
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.oppia.android">
<uses-sdk android:minSdkVersion="21"
<uses-sdk android:minSdkVersion="23"
android:targetSdkVersion="35" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AppAndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.oppia.android.app.ui">
<uses-sdk android:minSdkVersion="21"
<uses-sdk android:minSdkVersion="23"
android:targetSdkVersion="35" />
</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import org.oppia.android.domain.exploration.ExplorationStorageModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionConfigModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionProdModule
import org.oppia.android.domain.onboarding.ExpirationMetaDataRetrieverModule
import org.oppia.android.domain.oppialogger.AgeSignalsModule
import org.oppia.android.domain.oppialogger.LogStorageModule
import org.oppia.android.domain.oppialogger.LoggingIdentifierModule
import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule
Expand Down Expand Up @@ -93,6 +94,7 @@ import javax.inject.Singleton
NumericExpressionInputModule::class, AlgebraicExpressionInputModule::class,
MathEquationInputModule::class, SplitScreenInteractionModule::class,
LoggingIdentifierModule::class, ApplicationLifecycleModule::class,
AgeSignalsModule::class,
NetworkConnectionDebugUtilModule::class, LoggingIdentifierModule::class,
SyncStatusModule::class, LogReportingModule::class, NetworkConnectionUtilProdModule::class,
HintsAndSolutionProdModule::class, MetricLogSchedulerModule::class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import org.oppia.android.domain.exploration.ExplorationStorageModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionConfigModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionProdModule
import org.oppia.android.domain.onboarding.ExpirationMetaDataRetrieverModule
import org.oppia.android.domain.oppialogger.AgeSignalsModule
import org.oppia.android.domain.oppialogger.LogStorageModule
import org.oppia.android.domain.oppialogger.LoggingIdentifierModule
import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule
Expand Down Expand Up @@ -93,6 +94,7 @@ import javax.inject.Singleton
NumericExpressionInputModule::class, AlgebraicExpressionInputModule::class,
MathEquationInputModule::class, SplitScreenInteractionModule::class,
LoggingIdentifierModule::class, ApplicationLifecycleModule::class,
AgeSignalsModule::class,
NetworkConnectionDebugUtilModule::class, LoggingIdentifierModule::class,
SyncStatusModule::class, LogReportingModule::class, NetworkConnectionUtilProdModule::class,
HintsAndSolutionProdModule::class, MetricLogSchedulerModule::class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import org.oppia.android.domain.exploration.ExplorationStorageModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionConfigModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionDebugModule
import org.oppia.android.domain.onboarding.ExpirationMetaDataRetrieverModule
import org.oppia.android.domain.oppialogger.AgeSignalsModule
import org.oppia.android.domain.oppialogger.LogStorageModule
import org.oppia.android.domain.oppialogger.LoggingIdentifierModule
import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule
Expand Down Expand Up @@ -96,6 +97,7 @@ import javax.inject.Singleton
NumericExpressionInputModule::class, AlgebraicExpressionInputModule::class,
MathEquationInputModule::class, SplitScreenInteractionModule::class,
LoggingIdentifierModule::class, ApplicationLifecycleModule::class,
AgeSignalsModule::class,
NetworkConnectionDebugUtilModule::class, LoggingIdentifierModule::class,
SyncStatusModule::class, MetricLogSchedulerModule::class,
PerformanceMetricsAssessorModule::class, PerformanceMetricsConfigurationsModule::class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import org.oppia.android.domain.exploration.ExplorationStorageModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionConfigModule
import org.oppia.android.domain.hintsandsolution.HintsAndSolutionProdModule
import org.oppia.android.domain.onboarding.ExpirationMetaDataRetrieverModule
import org.oppia.android.domain.oppialogger.AgeSignalsModule
import org.oppia.android.domain.oppialogger.LogStorageModule
import org.oppia.android.domain.oppialogger.LoggingIdentifierModule
import org.oppia.android.domain.oppialogger.analytics.ApplicationLifecycleModule
Expand Down Expand Up @@ -93,6 +94,7 @@ import javax.inject.Singleton
NumericExpressionInputModule::class, AlgebraicExpressionInputModule::class,
MathEquationInputModule::class, SplitScreenInteractionModule::class,
LoggingIdentifierModule::class, ApplicationLifecycleModule::class,
AgeSignalsModule::class,
NetworkConnectionDebugUtilModule::class, LoggingIdentifierModule::class,
SyncStatusModule::class, LogReportingModule::class, NetworkConnectionUtilProdModule::class,
HintsAndSolutionProdModule::class, MetricLogSchedulerModule::class,
Expand Down
2 changes: 1 addition & 1 deletion app/src/test/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.oppia.android.app.test">
<uses-sdk android:minSdkVersion="21"
<uses-sdk android:minSdkVersion="23"
android:targetSdkVersion="30" />

<application>
Expand Down
8 changes: 4 additions & 4 deletions build_flavors.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ _PRODUCTION_PROGUARD_SPECS = [
_FLAVOR_METADATA = {
"dev": {
"manifest": "//app:src/main/AndroidManifest.xml",
"min_sdk_version": 21,
"min_sdk_version": 23,
"target_sdk_version": 35,
"multidex": "native",
"proguard_specs": [], # Developer builds are not optimized.
Expand All @@ -50,7 +50,7 @@ _FLAVOR_METADATA = {
},
"alpha": {
"manifest": "//app:src/main/AndroidManifest.xml",
"min_sdk_version": 21,
"min_sdk_version": 23,
"target_sdk_version": 35,
"multidex": "native",
"proguard_specs": _PRODUCTION_PROGUARD_SPECS,
Expand All @@ -65,7 +65,7 @@ _FLAVOR_METADATA = {
},
"beta": {
"manifest": "//app:src/main/AndroidManifest.xml",
"min_sdk_version": 21,
"min_sdk_version": 23,
"target_sdk_version": 35,
"multidex": "native",
"proguard_specs": _PRODUCTION_PROGUARD_SPECS,
Expand All @@ -80,7 +80,7 @@ _FLAVOR_METADATA = {
},
"ga": {
"manifest": "//app:src/main/AndroidManifest.xml",
"min_sdk_version": 21,
"min_sdk_version": 23,
"target_sdk_version": 35,
"multidex": "native",
"proguard_specs": _PRODUCTION_PROGUARD_SPECS,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.oppia.android.config">

<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="35" />
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="35" />
</manifest>
2 changes: 1 addition & 1 deletion data/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
<!-- TODO(#6010): Remove this manifest. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.oppia.android.data">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="35" />
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="35" />
</manifest>
2 changes: 1 addition & 1 deletion data/src/test/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.oppia.android.data">
<uses-sdk android:minSdkVersion="21"
<uses-sdk android:minSdkVersion="23"
android:targetSdkVersion="30" />

<application>
Expand Down
1 change: 1 addition & 0 deletions domain/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ kt_android_library(
"//data/src/main/java/org/oppia/android/data/persistence:cache_store",
"//domain/src/main/java/org/oppia/android/domain/classify:answer_classification_controller",
"//domain/src/main/java/org/oppia/android/domain/classify:classification_result",
"//domain/src/main/java/org/oppia/android/domain/oppialogger:age_signals",
"//domain/src/main/java/org/oppia/android/domain/oppialogger:oppia_logger",
"//domain/src/main/java/org/oppia/android/domain/oppialogger:startup_listener",
"//domain/src/main/java/org/oppia/android/domain/oppialogger/analytics:analytics_startup_listener",
Expand Down
2 changes: 1 addition & 1 deletion domain/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.oppia.android.domain">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="35" />
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="35" />
</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.oppia.android.domain.oppialogger

import com.google.android.play.agesignals.AgeSignalsManager
import com.google.android.play.agesignals.AgeSignalsRequest
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Singleton

/**
* Utility that imports age signals from the Play Store at startup to comply with Play Store
* regulatory requirements.
*/
@Singleton
class AgeSignalsImporter @Inject constructor(
private val ageSignalsManagerProvider: Provider<AgeSignalsManager>,
private val oppiaLogger: OppiaLogger
) : ApplicationStartupListener {

override fun onCreate() {
try {
val ageSignalsManager = ageSignalsManagerProvider.get()
ageSignalsManager.checkAgeSignals(AgeSignalsRequest.builder().build())
.addOnSuccessListener { _ ->
oppiaLogger.d("AgeSignalsImporter", "Successfully ingested age signals.")
}
.addOnFailureListener { exception ->
oppiaLogger.e("AgeSignalsImporter", "Failed to ingest age signals", exception)
}
} catch (e: Throwable) {
// Catching Throwable to ensure that any unexpected runtime issues (e.g. missing classes on
// non-GMS devices) do not crash the app.
oppiaLogger.e("AgeSignalsImporter", "Failed to initialize or call AgeSignalsManager", e)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.oppia.android.domain.oppialogger

import android.content.Context
import com.google.android.play.agesignals.AgeSignalsManager
import com.google.android.play.agesignals.AgeSignalsManagerFactory
import dagger.Module
import dagger.Provides
import dagger.multibindings.IntoSet
import javax.inject.Singleton

/** Module that provides age signals startup listener. */
@Module
class AgeSignalsModule {
@Provides
@Singleton
fun provideAgeSignalsManager(context: Context): AgeSignalsManager {
return AgeSignalsManagerFactory.create(context)
}

@Provides
@IntoSet
fun bindAgeSignalsImporter(
ageSignalsImporter: AgeSignalsImporter
): ApplicationStartupListener = ageSignalsImporter
}
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,19 @@ kt_android_library(
"//utility/src/main/java/org/oppia/android/util/system:oppia_clock",
],
)

kt_android_library(
name = "age_signals",
srcs = [
"AgeSignalsImporter.kt",
"AgeSignalsModule.kt",
],
visibility = ["//visibility:public"],
deps = [
":oppia_logger",
":startup_listener",
"//:dagger",
"//third_party:com_google_android_play_age-signals",
"//third_party:javax_inject_javax_inject",
],
)
2 changes: 1 addition & 1 deletion domain/src/test/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.oppia.android.domain">
<uses-sdk android:minSdkVersion="21"
<uses-sdk android:minSdkVersion="23"
android:targetSdkVersion="30" />

<application>
Expand Down
Loading
Loading