當使用2個模塊(主應用程序模塊和庫模塊)將Google Analytics實施到項目時,我面臨類似的問題。通過Java Reflection有一個解決方案如何在庫模塊中獲取GA跟蹤器。
- 爲您的主應用程序模塊生成跟蹤器。
- 將跟蹤器放到Google GA Guide之後的主應用中。
- 將Google Play服務的依賴項添加到您的庫項目中:
compile 'com.google.android.gms:play-services-analytics:9.0.0'
這對於在庫模塊中使用分析類很有必要。
最後,您將在主應用程序模塊中具有GA配置。你可以使用它作爲指南描述:
// Obtain the shared Tracker instance in main module
AnalyticsApplication application = (AnalyticsApplication) getApplication();
mTracker = application.getDefaultTracker();
對於庫模塊從您的自定義應用程序類得到跟蹤,你可以使用反射:
public Tracker getGATracker(Application application) {
Tracker tracker = null;
try {
Method m = application.getClass().getMethod("getDefaultTracker", (Class<?>[]) null);
Object result = null;
if (m != null) {
result = m.invoke(application, (Object[]) null);
if (result != null) {
tracker = (Tracker) result;
}
}
} catch (Exception e) {
Log.w(TAG, "Can't get GA tracker: ", e);
}
return tracker;
}
使用上述方法在這個片段:
// Obtain the shared Tracker instance from main module
Tracker tracker = getGATracker(getApplication());
因此,您可以在庫模塊中使用GA跟蹤器,並在主模塊中進行配置。
我對這個答案也很感興趣。你有沒有想出任何解決方案呢? – binnyb
也有興趣爲iOS應用程序提供類似的設置,其中有多個目標 - 每個目標使用不同的包ID(因此需要不同的Google服務plist ...?) – binnyb
您不需要製作R.xml.global_tracker了。這非常容易將GA安裝到您的項目中。 https://developers.google.com/analytics/devguides/collection/android/v4/#set-up-your-project只需遵循此。 – kimkevin