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

问题描述 投票:-1回答:2

我只是尝试在我的项目中导入firebase admin sdk。

我在android studio中收到以下消息。

E / AndroidRuntime:致命异常:主要

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

java.lang.RuntimeException:无法启动活动ComponentInfo {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)
    }       
}

我已经做了几乎我能做的事......

我试过这样的

  1. Path-1 =“c:\〜to~ \ .json”
  2. Path-2 =“ServiceAccountKey.json”
  3. Path-3 =“./ ServiceAccountKey.json”
  4. Path-4 =“com / lupin / ganzp / ticketfireauthmanager / ServiceAccountKey.json”

但是,这段代码找不到我的json文件,虽然它确实存在,因为你看到这张照片。

下面的代码显示创建的文件不存在。

val name = File(".").canonicalPath
    println("Test $name")
    val file = File(name, "/" + "ServiceAccountKey.json")
    println("file path : " + file)
    println(file.exists())

    println(file.exists())  //false
    println(file.canRead())  //false

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

android firebase kotlin filenotfoundexception firebase-admin
2个回答
1
投票

这是一个Android项目,而不是Java项目 - 因此文件的位置应该是res/rawassets(这两个都是目录,正在被复制而不是被处理)......否则该文件将不会进入构建的包,导致错误15

请注意,将一个名为ServiceAccountKey.json的文件放入正在以1:1复制的目录中是值得考虑的,因为可以从那里轻松地提取该密钥。

这与google-services.json的行为方式不同,因为该文件不必将其放入构建的包中,因为它由插件处理,然后添加到字符串资源中。


0
投票

我在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文件保存在与我设置为应用程序工作目录的目录相同的目录中。

© www.soinside.com 2019 - 2024. All rights reserved.