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();
}