我的项目FirebaseOptions.fromResource中有返回空的
public static FirebaseOptions fromResource(Context context) {
zzam com_google_android_gms_common_internal_zzam = new zzam(context);
Object string = com_google_android_gms_common_internal_zzam.getString("google_app_id");
return TextUtils.isEmpty(string) ? null : new FirebaseOptions(string, com_google_android_gms_common_internal_zzam.getString("google_api_key"), com_google_android_gms_common_internal_zzam.getString("firebase_database_url"), com_google_android_gms_common_internal_zzam.getString("ga_trackingId"), com_google_android_gms_common_internal_zzam.getString("gcm_defaultSenderId"), com_google_android_gms_common_internal_zzam.getString("google_storage_bucket"));
}
函数是模糊的,但CCD_ 1返回一个空字符串是无缝的。
我已经将google-services.json放在根目录(即文件夹./其中是AndroidManifest.xml)
这是我所有的文件夹:
assets
bin (contain kiskis.apk)
classes (contain classes.dex)
debug (contain libmyapp.so)
library
lib
armeabi
armeabi-v7a (contain libmyapp.so)
mips
res
我必须把google-services.json放在哪里?但即使在google-services.json中,我也看不到任何名称为"google_app_id"的密钥,那么这个密钥从哪里来呢?
注意:我读到关于这个:
https://firebase.google.com/docs/reference/gradle/
谷歌服务插件有两个主要功能:
处理google-services.json文件并生成Android资源可以在应用程序的代码中使用。请参阅添加JSON文件更多信息
但我不明白这是怎么回事?因为我不在android工作室(我在Delphi),所以我不明白什么是gradle,它到底是做什么的。。。这是Google Services Gradle插件在运行时还是在编译时处理Google-Services.json?
Gradle是Android Studio用来从源代码和资源编译和构建最终.apk包的构建系统。
Google Services Gradle插件是Gradle的编译时插件,它采用google-services.json
文件并生成适当的xml字符串资源文件,该文件随后将被编译为应用程序使用的二进制资源。
因此,将google-services.json
按原样添加到Delphi项目中是无用的,因为Firebase不会以任何方式直接使用该文件。
由于google-services.json
和生成的values.xml
文件都是简单的可读文件,并且您只需要偶尔创建一次values.xml
文件,因此您可以手动将其中一个转换为另一个,并填充适当的xml字段。
你可以在你引用的谷歌服务Gradle插件链接中找到它的结构描述
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="default_web_client_id" translatable="false">1035469437078-e8mr503bun5eaevqctn4u807q4hpi44s.apps.googleusercontent.com</string>
<string name="gcm_defaultSenderId" translatable="false">1035469437078</string>
<string name="firebase_database_url" translatable="false">https://myapp.firebaseio.com</string>
<string name="google_app_id" translatable="false">1:1035469437078:android:73a4fb8297b2cd4f</string>
<string name="google_api_key" translatable="false">AIzaSyFE3G2eN0XZPl-IeEvZhzKOAgC9vy9imVE</string>
<string name="google_storage_bucket" translatable="false">myapp.appspot.com</string>
</resources>
完成该部分后,您必须编译values.xml
并将其包含在Delphi项目中。
如何做到这一点,你可以在Delphi移动应用程序中的Embedde Facebook SDK for Android中找到。创建R.java
和在com_google_android_gms_common_internal_zzam.getString("google_app_id");
0中包含R$
类的原理是一样的。