Android一点 让eclipse全功能支持Google Firebase

来源:互联网 发布:细胞因子的网络特征 编辑:程序博客网 时间:2024/06/06 19:41

谷歌抛弃eclipse已久,但是eclipse档还是很多人,这不,想用谷歌的firebase做分析、推送等功能时,使用eclipse的就尴尬了,谷歌没有提供支持了。下面我们就分析一下怎么制作我们eclipse的firebase库

1、Firebase入门官网文档:https://firebase.google.com/docs/android/setup

官方的示例:https://firebase.google.com/docs/samples/#android

对于Android studio接入firebase这里就不叙述了,因为实在是比较简单,这里了解firebase就行

2、我们以分析功能为例子,编译Analytics工程即可,为啥呢,之前没有了解的可以看上一篇文章,有详情的介绍。反编译一下这个apk,着重看看string.xml文件和AndroidManifest.xml文件,看看到底增加了什么鬼,对了,关于google-services.json 文件信息的作用说明https://developers.google.com/android/guides/google-services-plugin,文件包含的主要是下面这些信息,这时候应该想到这个是初始化需要用到的参数

The main result of the JSON processing is to produce two XML files which you can reference as Android resources in your Java code. Below is an example of each file:app/build/generated/res/google-services/{build_type}/values/values.xml<?xml version="1.0" encoding="utf-8"?><resources>    <! -- Present in all applications -->    <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>    <! -- Present in applications with the appropriate services configured -->    <string name="gcm_defaultSenderId" translatable="false">1035469437089</string>    <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>    <string name="ga_trackingId" translatable="false">UA-65557217-3</string>    <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>    <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>    <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string></resources>app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml<?xml version="1.0" encoding="utf-8"?><resources>    <string name="ga_trackingId" translatable="false">UA-65557218-3</string></resources>Every value in the XML files is present in the google-services.json file at the locations below. If your Android project has some configuration that prevents you from using the google-services plugin, you can safely recreate the XML files manually using these values:google_app_id:{YOUR_CLIENT}/client_info/mobilesdk_app_idgcm_defaultSenderId:project_info/project_numberdefault_web_client_id:{YOUR_CLIENT}/oauth_client/client_id (client_type == 3)ga_trackingId:{YOUR_CLIENT}/services/analytics-service/analytics_property/tracking_idfirebase_database_url:project_info/firebase_urlgoogle_api_key:{YOUR_CLIENT}/api_key/current_keygoogle_crash_reporting_api_key:{YOUR_CLIENT}/api_key/current_key

下面再具体分析string.xml、AndroidManifest.xml到底增加了些什么呢?

string.xml增加了:

 <! -- Present in all applications -->    <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>    <! -- Present in applications with the appropriate services configured -->    <string name="gcm_defaultSenderId" translatable="false">1035469437089</string>    <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>    <string name="ga_trackingId" translatable="false">UA-65557217-3</string>    <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>    <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>    <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>

AndroidManifest.xml增加了
权限:

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />    <permission        android:name="包名.permission.C2D_MESSAGE"        android:protectionLevel="signature|signatureOrSystem" />    <uses-permission android:name="包名.permission.C2D_MESSAGE" />

其它什么鬼:

 <receiver            android:name="com.google.android.gms.measurement.AppMeasurementReceiver"            android:enabled="true"            android:exported="false" />        <receiver            android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"            android:enabled="true"            android:exported="true"            android:permission="android.permission.INSTALL_PACKAGES" >            <intent-filter>                <action android:name="com.android.vending.INSTALL_REFERRER" />            </intent-filter>        </receiver>        <service            android:name="com.google.android.gms.measurement.AppMeasurementService"            android:enabled="true"            android:exported="false" />        <service            android:name="com.google.android.gms.measurement.AppMeasurementJobService"            android:enabled="true"            android:exported="false"            android:permission="android.permission.BIND_JOB_SERVICE" />        <receiver            android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"            android:exported="true"            android:permission="com.google.android.c2dm.permission.SEND" >            <intent-filter>                <action android:name="com.google.android.c2dm.intent.RECEIVE" />                <category android:name="包名" />            </intent-filter>        </receiver>        <receiver            android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"            android:exported="false" />        <service            android:name="com.google.firebase.iid.FirebaseInstanceIdService"            android:exported="true" >            <intent-filter android:priority="-500" >                <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />            </intent-filter>        </service>        <provider            android:name="com.google.firebase.provider.FirebaseInitProvider"            android:authorities="包名.firebaseinitprovider"            android:exported="false"            android:initOrder="100" />        <meta-data            android:name="com.google.android.gms.version"            android:value="@integer/google_play_services_version" />

3、看看怎么初始化Firebase

/**     * 初始化FirebaseApp     */    public static boolean init(Context context) {        if (FirebaseApp.getApps(context).isEmpty()) {            try {                FirebaseOptions options =        FirebaseOptions.fromResource(context);                FirebaseApp.initializeApp(context, options);            } catch (Exception e) {                // TODO: handle exception                e.printStackTrace();                return false;            }        }        return true;    }

例如怎么上报分析数据,login数据

/**     * 獲取FirebaseAnalytics     *      * @param context     * @return     */    public static FirebaseAnalytics getFirebaseAnalytics(Context context) {        if (mFirebaseAnalytics == null) {            mFirebaseAnalytics = FirebaseAnalytics.getInstance(context);        }        return mFirebaseAnalytics;    }    /**     * firebase的登录事件     *      * @param context     */    public static void fireBaseLoginEvent(Context context) {        Bundle params = new Bundle();        getFirebaseAnalytics(context).logEvent(FirebaseAnalytics.Event.LOGIN, params);    }

看看log是否接入成功:
这里写图片描述

原创粉丝点击