Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google Analytics为我的Android应用程序获取了错误的版本号_Android_Google Analytics_Android Manifest_Build.gradle_Android Version - Fatal编程技术网

Google Analytics为我的Android应用程序获取了错误的版本号

Google Analytics为我的Android应用程序获取了错误的版本号,android,google-analytics,android-manifest,build.gradle,android-version,Android,Google Analytics,Android Manifest,Build.gradle,Android Version,我正在我的应用程序中添加谷歌分析。当我进入Real-Time>Overview时,我会在App Version下看到1.0。我的问题是Google Analytics从哪里得到这个1.0数字 这就是我如何在我的启动器活动的onCreate()中启动分析的方法: analytics = GoogleAnalytics.getInstance(MainDrawerActivity.this); analytics.setLocalDispatchPeriod(180

我正在我的应用程序中添加谷歌分析。当我进入
Real-Time>Overview
时,我会在
App Version
下看到
1.0
。我的问题是Google Analytics从哪里得到这个
1.0
数字

这就是我如何在我的启动器
活动的
onCreate()
中启动分析的方法:

        analytics = GoogleAnalytics.getInstance(MainDrawerActivity.this);
        analytics.setLocalDispatchPeriod(1800);

        tracker = analytics.newTracker("UA-XXXXXX-X"); // Replace with actual tracker/property Id
        tracker.enableExceptionReporting(true);
        tracker.enableAdvertisingIdCollection(true);
        tracker.enableAutoActivityTracking(true);
我的项目有多个gradle文件。我把它们都贴在这里:

这是我的gradle文件,也是我的Android清单: build.gradle:(对于我的项目:xxx…)

build.gradle:(对于我的模块:应用程序)

模块的build.gradle:circularImageView(这是一个库项目) 应用插件:“com.android.library”

android {
compileSdkVersion 22
buildToolsVersion "22.0.0"

defaultConfig {
    minSdkVersion 11
    targetSdkVersion 19

    versionCode 60
    versionName "2.0.14"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}
我清单的开始部分

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.xxxx.xxxxxxxx"
android:installLocation="internalOnly"
android:versionCode="58"
android:versionName="2.0.13" >

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="21" />


另一点需要注意的是——在看到“1.0”版本之前,我在Eclipse中,但这是我第一次在Android Studio上,但我曾经将Google Analytics添加到我的帐户。

它从传递给
GoogleAnalytics.getInstance(context)

根据
PackageInfo
的文档:

此包的版本名,由标记的versionName属性指定

此外,为了准确获取应用程序数据,您应该从扩展
应用程序的类创建
跟踪器

public class MyApp extends Application {
    public Tracker tracker;
    .....

    public Tracker getTracker() {
        if (tracker == null) {
            tracker = GoogleAnalytics.getInstance(this);
            .......
        }
        return tracker;
     }
}

您可以使用Google Analytics v4提供的global tracker。在您开始在应用程序中添加“全球跟踪器”之前,让我们先了解以下结构:

app\u tracker.xml

<resources>
        <!-- The apps Analytics Tracking Id -->
        <string name="ga_trackingId">UX-XXXXXXXXX-X</string>
        <!-- Percentage of events to include in reports -->
        <string name="ga_sampleFrequency">100.0</string>
        <!-- Enable automatic Activity measurement -->
        <bool name="ga_autoActivityTracking">true</bool>
        <!-- catch and report uncaught exceptions from the app -->
        <bool name="ga_reportUncaughtExceptions">true</bool>
        <!-- How long a session exists before giving up -->
        <integer name="ga_sessionTimeout">-1</integer>
        <!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to
        substitute for the full length canonical Activity name in screen view hit. In order to
        specify an alternate screen name use an <screenName> element, with the name attribute
        specifying the canonical name, and the value the alias to use instead. -->
        <screenName name="com.mypackage.example.MainActivity">Home Screen</screenName>
    </resources>
    <resources>
    <integer name="ga_sessionTimeout">60</integer>
    <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">UX-XXXXXXXXX-X</string>
</resources>
<!-- enter your app's name -->
<string name="ga_appName">My App Name</string>
<!-- enter the current app's versionName -->
<string name="ga_appVersion">2.0.13</string>

<!-- the Local LogLevel for Analytics -->
<string name="ga_logLevel">verbose</string>
<!-- how often the dispatcher should fire -->
<integer name="ga_dispatchPeriod">30</integer>
<!-- Treat events as test events and don't send to google -->
<bool name="ga_dryRun">false</bool>
<!-- The screen names that will appear in reports -->
<screenName name="com.mypackage.example.MainActivity">Home Screen</screenName>

global\u tracker.xml

<resources>
        <!-- The apps Analytics Tracking Id -->
        <string name="ga_trackingId">UX-XXXXXXXXX-X</string>
        <!-- Percentage of events to include in reports -->
        <string name="ga_sampleFrequency">100.0</string>
        <!-- Enable automatic Activity measurement -->
        <bool name="ga_autoActivityTracking">true</bool>
        <!-- catch and report uncaught exceptions from the app -->
        <bool name="ga_reportUncaughtExceptions">true</bool>
        <!-- How long a session exists before giving up -->
        <integer name="ga_sessionTimeout">-1</integer>
        <!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to
        substitute for the full length canonical Activity name in screen view hit. In order to
        specify an alternate screen name use an <screenName> element, with the name attribute
        specifying the canonical name, and the value the alias to use instead. -->
        <screenName name="com.mypackage.example.MainActivity">Home Screen</screenName>
    </resources>
    <resources>
    <integer name="ga_sessionTimeout">60</integer>
    <!--  The following value should be replaced with correct property id. -->
    <string name="ga_trackingId">UX-XXXXXXXXX-X</string>
</resources>
<!-- enter your app's name -->
<string name="ga_appName">My App Name</string>
<!-- enter the current app's versionName -->
<string name="ga_appVersion">2.0.13</string>

<!-- the Local LogLevel for Analytics -->
<string name="ga_logLevel">verbose</string>
<!-- how often the dispatcher should fire -->
<integer name="ga_dispatchPeriod">30</integer>
<!-- Treat events as test events and don't send to google -->
<bool name="ga_dryRun">false</bool>
<!-- The screen names that will appear in reports -->
<screenName name="com.mypackage.example.MainActivity">Home Screen</screenName>
更改您的舱单slighlty:

<application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name">

    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <!-- Google Analytics Version v4 needs this value for easy tracking -->
    <meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
        android:resource="@xml/global_tracker" />

    <!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background
     dispatching on non-Google Play devices -->
    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
        </intent-filter>
    </receiver>
    <service android:name="com.google.android.gms.analytics.AnalyticsService"
        android:enabled="true"
        android:exported="false"/>

    <!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
         installation campaign reporting -->
    <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>
    <service android:name="com.google.android.gms.analytics.CampaignTrackingService"
        android:enabled="true"/>

    <!-- ... -->
</application>
瞧!谷歌分析被激活!有关详细信息,请参阅:

标签:

  • Android的谷歌分析教程
  • 配置谷歌分析
  • 谷歌分析v4
  • 谷歌分析示例

传递给此函数的
上下文是
getApplicationContext()
来自我的各种活动。所以我的下一个问题是
getApplicationContext()
从哪里获取版本?基本上,它不应该是1.0,我希望它是2.0.13(如我的清单和build.gradle中所示。@user1406716-我尝试了几种不同的方法,分析总是从
build.gradle
中为我提取版本名。很抱歉,我仍然有这个问题。为问题添加了悬赏,还添加了关于我项目的更多详细信息。如果您有任何其他输入,请告诉我。@user1406716-我有更新了我的答案以包含更多信息。这显示了如何检索版本代码。是否使用全局跟踪器?什么是全局跟踪器?仅作简短说明,全局跟踪器从不选择错误的应用程序版本名称。我将在答案中进行说明。
<application
    android:name=".App"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name">

    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />
    <!-- Google Analytics Version v4 needs this value for easy tracking -->
    <meta-data android:name="com.google.android.gms.analytics.globalConfigResource"
        android:resource="@xml/global_tracker" />

    <!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background
     dispatching on non-Google Play devices -->
    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
        android:enabled="true">
        <intent-filter>
            <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
        </intent-filter>
    </receiver>
    <service android:name="com.google.android.gms.analytics.AnalyticsService"
        android:enabled="true"
        android:exported="false"/>

    <!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
         installation campaign reporting -->
    <receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>
    <service android:name="com.google.android.gms.analytics.CampaignTrackingService"
        android:enabled="true"/>

    <!-- ... -->
</application>
private Tracker tracker;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tracker = ((App) getApplication()).getTracker(App.TrackerName.APP_TRACKER);
    tracker.setScreenName("Home Screen");
    tracker.send(new HitBuilders.EventBuilder().build());
    ...
}

@Override
protected void onStart() {
    super.onStart();
    GoogleAnalytics.getInstance(this).reportActivityStart(this);
}

@Override
protected void onStop() {
    GoogleAnalytics.getInstance(this).reportActivityStop(this);
    super.onStop();
}