我只是尝试在我的项目中导入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)
}
}
我已经做了几乎我能做的事......
我试过这样的
但是,这段代码找不到我的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项目,而不是Java项目 - 因此文件的位置应该是res/raw
或assets
(这两个都是目录,正在被复制而不是被处理)......否则该文件将不会进入构建的包,导致错误15
。
请注意,将一个名为ServiceAccountKey.json
的文件放入正在以1:1复制的目录中是值得考虑的,因为可以从那里轻松地提取该密钥。
这与google-services.json
的行为方式不同,因为该文件不必将其放入构建的包中,因为它由插件处理,然后添加到字符串资源中。
我在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文件保存在与我设置为应用程序工作目录的目录相同的目录中。