Firebase를 사용하여 Android 앱을 개발 중이며 Firebase Admin SDK를 사용하여 간단한 관리 응용 프로그램을 만들기로 결정했습니다. IDE (IntelliJ IDEA)를 시작하고 Admin SDK를 통해 데이터베이스에 연결하면 문제가 없지만 내 보낸 .jar 파일을 실행하면 Admin SDK를 데이터베이스에 연결할 수 없습니다. 중포 기지에 대한 연결을 초기화하기 위해, 나는 다음 (코 틀린) 코드를 사용 Firebase Admin SDK가 jar 파일 내부의 데이터베이스에 연결할 수 없습니다.
//Initialize the Firebase Admin SDK.
val serviceAccount =
this.javaClass.classLoader.getResourceAsStream("fen/ftcConsole/control/flip-the-classroom-app-firebase-adminsdk.json")
val options = FirebaseOptions.Builder()
.setCredential(FirebaseCredentials.fromCertificate(serviceAccount))
.setDatabaseUrl("https://flip-the-classroom-app.firebaseio.com/")
.setStorageBucket("flip-the-classroom-app.appspot.com")
.build()
FirebaseApp.initializeApp(options)
//Get the connections to the database and the cloud storage.
database = FirebaseDatabase.getInstance()
storage = StorageClient.getInstance().bucket()
나는 몇 콘솔 출력을 추가하고 코드는 단지이 줄 번번이 않는 것을 발견 : "데이터베이스 = FirebaseDatabase.getInstance() ". 그냥 스레드를 차단하고 아무 일도 일어나지 않습니다. 또한 예외가 발생하지 않습니다. 내가 말했듯이, 내 보낸 jar 파일에서만 발생합니다. IDE로 시작하면 모든 것이 잘 작동하여 테스트가 매우 어려워집니다.
IntelliJ 및 gradle로 .jar 파일을 만들고, .jar 파일 내부의 의존성을 압축하고 외부에 남겨두고 .jar 파일 내부에서 admin 키를 사용하여 .json 파일을로드하거나 밖에서는 문제가 항상 발생합니다.
jar {
manifest {
attributes 'Main-Class': 'fen.ftcConsole.gui.GUIStarterKt'
}
//adding project files/resources to the jar file
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
"Gradle을 단지"나에게 올바르게 안에 넣어 모든 종속성과 자원을 가진 .jar 파일을 제공합니다 : Gradle을 가진 .JAR를 만들기위한
는 build.gradle 파일은 다음 항아리 블록을 포함 파일. 또한 응용 프로그램에는 올바르게 시작되는 JavaFX GUI가 포함되어 있습니다. Firebase 연결 만 작동하지 않습니다. "gradle jar"대신 응용 프로그램 플러그인을 사용할 때도 마찬가지입니다.
이 병을 내보내려면 정확히 무엇을하고 있습니까? –
jar 파일의 build.gradle 콘텐츠로 질문을 업데이트했습니다. 앞서 언급했듯이 Admin SDK 데이터베이스 연결을 제외한 모든 것이 작동합니다. –
이것을 관리하기 위해 Gradle 용 애플리케이션 플러그인을 사용해 보셨습니까? https://docs.gradle.org/current/userguide/application_plugin.html –