0

I'm really new to mobile development and I'm trying to implement authentication in a simple react-native app using react-native-msal.

I'm using React Native CLI (ie npx react-native run-android) and after initializing a new app and confirming all is working my my virtual device, I added react-native-msal and followed the directions to set things up for android.

But after running the areact-native-msal, the build fails with "Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0."

I've tried changing versions in the gradle-wrapper.properties file but I don't get any further.

PS C:\Working\MSALDemo> npx react-native run-android
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 941 file(s) to forward-jetify. Using 8 workers...
info JS server already running.
info Installing the app...

> Configure project :app
Unable to detect AGP versions for included builds. All projects in the build should use the same AGP version. Class name for the included build object: org.gradle.composite.internal.DefaultIncludedBuild$IncludedBuildImpl_Decorated.

> Task :react-native-msal:compileDebugJavaWithJavac

> Task :app:compileDebugJavaWithJavac FAILED                                                                                                                
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.3.3/userguide/command_line_interface.html#sec:command_line_warnings
48 actionable tasks: 42 executed, 6 up-to-date
Warning: This version only understands SDK XML versions up to 2 but an SDK XML file of version 3 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
Note: C:\Working\MSALDemo\node_modules\react-native-msal\android\src\main\java\com\reactnativemsal\RNMSALModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Working\MSALDemo\node_modules\react-native-msal\android\src\main\java\com\reactnativemsal\RNMSALModule.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\newarchitecture\MainApplicationReactNativeHost.java:22: error: cannot find symbol
import com.msaldemo.BuildConfig;
                   ^
  symbol:   class BuildConfig
  location: package com.msaldemo
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainActivity.java:36: error: cannot find symbol
      reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
                                ^
  symbol:   variable BuildConfig
  location: class MainActivityDelegate
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:22: error: cannot find symbol
          return BuildConfig.DEBUG;
                 ^
  symbol: variable BuildConfig
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:45: error: cannot find symbol
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
        ^
  symbol:   variable BuildConfig
  location: class MainApplication
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:45: error: illegal parenthesized expression
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
       ^
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:56: error: cannot find symbol
    ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
                                        ^
  symbol:   variable BuildConfig
  location: class MainApplication
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:70: error: cannot find symbol
    if (BuildConfig.DEBUG) {
        ^
  symbol:   variable BuildConfig
  location: class MainApplication
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:70: error: illegal parenthesized expression
    if (BuildConfig.DEBUG) {
       ^
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\newarchitecture\MainApplicationReactNativeHost.java:42: error: cannot find symbol
    return BuildConfig.DEBUG;
           ^
  symbol:   variable BuildConfig
  location: class MainApplicationReactNativeHost
Note: C:\Working\MSALDemo\android\app\src\debug\java\com\msaldemo\ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
9 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 17s

error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
Warning: This version only understands SDK XML versions up to 2 but an SDK XML file of version 3 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
Note: C:\Working\MSALDemo\node_modules\react-native-msal\android\src\main\java\com\reactnativemsal\RNMSALModule.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: C:\Working\MSALDemo\node_modules\react-native-msal\android\src\main\java\com\reactnativemsal\RNMSALModule.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\newarchitecture\MainApplicationReactNativeHost.java:22: error: cannot find symbol
import com.msaldemo.BuildConfig;
                   ^
  symbol:   class BuildConfig
  location: package com.msaldemo
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainActivity.java:36: error: cannot find symbol
      reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
                                ^
  symbol:   variable BuildConfig
  location: class MainActivityDelegate
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:22: error: cannot find symbol
          return BuildConfig.DEBUG;
                 ^
  symbol: variable BuildConfig
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:45: error: cannot find symbol
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
        ^
  symbol:   variable BuildConfig
  location: class MainApplication
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:45: error: illegal parenthesized expression
    if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
       ^
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:56: error: cannot find symbol
    ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
                                        ^
  symbol:   variable BuildConfig
  location: class MainApplication
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:70: error: cannot find symbol
    if (BuildConfig.DEBUG) {
        ^
  symbol:   variable BuildConfig
  location: class MainApplication
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\MainApplication.java:70: error: illegal parenthesized expression
    if (BuildConfig.DEBUG) {
       ^
C:\Working\MSALDemo\android\app\src\main\java\com\msaldemo\newarchitecture\MainApplicationReactNativeHost.java:42: error: cannot find symbol
    return BuildConfig.DEBUG;
           ^
  symbol:   variable BuildConfig
  location: class MainApplicationReactNativeHost
Note: C:\Working\MSALDemo\android\app\src\debug\java\com\msaldemo\ReactNativeFlipper.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
9 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 17s

    at makeError (C:\Working\MSALDemo\node_modules\execa\index.js:174:9)
    at C:\Working\MSALDemo\node_modules\execa\index.js:278:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async runOnAllDevices (C:\Working\MSALDemo\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:109:5)
    at async Command.handleAction (C:\Working\MSALDemo\node_modules\@react-native-community\cli\build\index.js:192:9)
info Run CLI with --verbose flag for more details.
PS C:\Working\MSALDemo>
MoSlo
  • 535
  • 5
  • 11

1 Answers1

0

Figured out the missing piece, courtesy of this LinkedIn article.

I needed to

  1. declare a dependency on MSAL in the app's build.gradle file:

implementation "com.microsoft.identity.client:msal:1.0+"

  1. Add the following maven repository to your project's build.gradle:
allProjects {
   repositories {
      // ...
      maven {
      url "https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1"
      }
   }
}
MoSlo
  • 535
  • 5
  • 11