Android java.io.FileNotFoundException:ServiceAccountKey.json(没有这样的文件或目录)
我刚刚尝试在我的项目中导入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没有这样的文件或目录 这可能是一个简单的代码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
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();