Android java.io.FileNotFoundException:ServiceAccountKey.json(没有这样的文件或目录)

Android java.io.FileNotFoundException:ServiceAccountKey.json(没有这样的文件或目录),android,firebase,kotlin,filenotfoundexception,firebase-admin,Android,Firebase,Kotlin,Filenotfoundexception,Firebase Admin,我刚刚尝试在我的项目中导入firebase amdin sdk 我在android studio中收到以下消息 E/AndroidRuntime:致命异常:主 进程:com.lupin.ganzp.ticketfireauthmanager,PID:7883 java.lang.RuntimeException:无法启动活动组件信息{com.lupin.ganzp.ticketfireauthmanager/com.lupin.ganzp.ticketfireauthmanager.MainAc

我刚刚尝试在我的项目中导入firebase amdin sdk

我在android studio中收到以下消息

E/AndroidRuntime:致命异常:主

进程:com.lupin.ganzp.ticketfireauthmanager,PID:7883

java.lang.RuntimeException:无法启动活动组件信息{com.lupin.ganzp.ticketfireauthmanager/com.lupin.ganzp.ticketfireauthmanager.MainActivity}:java.io.FileNotFoundException:/ServiceAccountKey.json没有这样的文件或目录

这可能是一个简单的代码

const val relativePath = "/ServiceAccountKey.json"

class MainActivity : AppCompatActivity() 
{
    override fun onCreate(savedInstanceState: Bundle?) 
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        SDK_Init()
        Access_DB("newDB")
    }

    fun SDK_Init()
    {
        var serviceAccount = FileInputStream(relativePath)
        val options = FirebaseOptions.Builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .setDatabaseUrl("https://<HiDE>.firebaseio.com/")
            .build()

        FirebaseApp.initializeApp(options)
    }       
}

有谁知道这个问题的解决方案吗?

我可以在Java项目中初始化Admin SDK:

FileInputStream serviceAccount = new FileInputStream("project-credentials.json");

FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
        .setDatabaseUrl("https://mydatabase.firebaseio.com/")
        .build();

我将JSON文件保存在我设置为应用程序工作目录的同一目录中。

这是一个Android项目,而不是Java项目-因此文件的位置应该是res/raw或资产,两者都是目录,正在复制而不是处理中。。。否则该文件将永远无法进入构建包,导致错误15

请注意,将一个名为ServiceAccountKey.json的文件放在1:1复制的目录中可能值得考虑。。。因为那把钥匙可以很容易地从那里提取出来


这与google-services.json的行为方式不同,因为该文件不必包含在内置包中,因为它由插件处理,然后添加到字符串资源中。

您绝对不应该在Android应用程序中使用Admin SDK。它只供服务器端使用。Hiranya Jayathilaka,Martin Zeitler//没问题。因为android中的管理员SDK将只由我使用。不管怎样,也许我知道为什么会发生这个问题。谢谢你。我检查了一下,发现FirebaseCredentials已经被删除了。所以,我必须使用“GoogleCredentials”firebase.google.com/docs/admin/migrate-admin无论如何,这个问题似乎是在应用到Android而不是Java时出现的。我正在尝试将凭证json保存到res/raw或其他文件夹中。
FileInputStream serviceAccount = new FileInputStream("project-credentials.json");

FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
        .setDatabaseUrl("https://mydatabase.firebaseio.com/")
        .build();