如何在 Android 上配置应用程序检查以进行发布和调试?

Mac*_*uta 6 android firebase firebase-app-check

可以同时安装应用程序检查提供程序工厂吗?或者我应该只使用一个用于调试,另一个用于发布?如果是的话该怎么办?

我指的代码片段:

package pl.matematykagryzie.app

import android.os.Bundle
import android.util.Log

import io.flutter.embedding.android.FlutterActivity

import com.google.firebase.FirebaseApp
import com.google.firebase.appcheck.FirebaseAppCheck
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory
import com.google.firebase.appcheck.safetynet.SafetyNetAppCheckProviderFactory

import com.google.firebase.functions.FirebaseFunctions

class MainActivity: FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)

        // Initialize firebae app
        FirebaseApp.initializeApp(/*context=*/this)

        val firebaseAppCheck = FirebaseAppCheck.getInstance()
        firebaseAppCheck.installAppCheckProviderFactory(
            DebugAppCheckProviderFactory.getInstance())

        // Activate app check
        firebaseAppCheck.installAppCheckProviderFactory(
            SafetyNetAppCheckProviderFactory.getInstance())


        val data = hashMapOf(
            "isKotlin" to true
        )

        // Call a function
        FirebaseFunctions
            .getInstance("europe-central2")
            .getHttpsCallable("validateAppCheck")
            .call(data)
            .addOnFailureListener {
                Log.wtf("onCreate", "failure") 
            }
            .addOnSuccessListener {
                Log.wtf("onCreate", "success") 
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我不是 kotlin 也不是 android 开发人员。

我正在开发一个 flutter 应用程序,最近添加了 firebase 应用程序检查,这给我带来了很多麻烦,我正在努力解决它们。

我正在尝试缩小问题的范围。

小智 1

您应该只安装一个工厂,而不是同时安装两个工厂,因为您安装的最后一个工厂会覆盖之前的任何工厂。

您必须根据构建变体安装不同的工厂,有几个选项:

  • 使用if(BuildConfig.DEBUG) installOne() else installAnother()
  • 将安装逻辑放置在不同的源集中,src/release/java/AppCheckInitialization.ktsrc/debug/java/AppCheckInitialization.kt两个源集中都可以有一个fun initializeAppCheck()可以从您的活动中调用的逻辑。根据您构建的变体,应用程序将使用相应版本的initializeAppCheck().