我正在尝试将我的Google Analytics代码拆分为一个单独的模块(包com.abc),来自我的主应用程序(包com.xyz)。我正面临着这些问题:
我尝试过(并且失败了):
答案 0 :(得分:2)
而不是使用R.xml.global_tracker。您可以在Application类中使用此代码。
const string json = "{\"option1\":{\"field1\":true,\"field2\":false}," +
"\"option2\":{\"field1\":true,\"field2\":false}}";
var result1 = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, bool>>>(json);
Console.WriteLine(result1["option2"]["field1"]);
dynamic result2 = JsonConvert.DeserializeObject(json);
Console.WriteLine(result2.option2.field1);
并在活动/片段中使用它:
/**
* @return tracker
*/
synchronized public Tracker getDefaultTracker() {
if (mTracker == null) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
// To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
analytics.setLocalDispatchPeriod(1800);
mTracker = analytics.newTracker("Tracker code");
analytics.setLocalDispatchPeriod(1);
mTracker.enableExceptionReporting(true);
mTracker.enableAdvertisingIdCollection(true);
mTracker.enableAutoActivityTracking(false);
}
return mTracker;
}
这可能会解决您的问题,但未针对您的情况进行测试。
答案 1 :(得分:0)
在使用2个模块(主应用模块和库模块)实施Google Analytics时,我遇到了类似的问题。通过Java Reflection有一个解决方案如何在库模块中获取GA跟踪器。
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();
对于库模块从自定义Application类获取跟踪器,您可以使用反射:
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跟踪器,并在主模块中进行配置。