Jas*_*dge 25 android google-analytics android-intent google-play-services
我们的应用程序SecurityException从崩溃报告软件中获得了不同的报告.这是崩溃的堆栈跟踪:
java.lang.SecurityException: Unable to find app for caller android.app.ApplicationThreadProxy@43fda840 (pid=17925) when registering receiver android.content.IIntentReceiver$Stub$Proxy@43fd9458
at android.os.Parcel.readException(Parcel.java:1431)
at android.os.Parcel.readException(Parcel.java:1385)
at android.app.ActivityManagerProxy.registerReceiver(ActivityManagerNative.java:2466)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1717)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1685)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1679)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:453)
at com.google.android.gms.analytics.q.v(Unknown Source)
at com.google.android.gms.analytics.r.cF(Unknown Source)
at com.google.android.gms.analytics.r.cH(Unknown Source)
at com.google.android.gms.analytics.s.cO(Unknown Source)
at com.google.android.gms.analytics.s.cP(Unknown Source)
at com.google.android.gms.analytics.s.d(Unknown Source)
at com.google.android.gms.analytics.s$e.run(Unknown Source)
at java.util.Timer$TimerImpl.run(Timer.java:284)
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪始终是相同的,除了唯一似乎改变的是它们android.app.ApplicationThreadProxy@41da9030 (pid=9103)并且android.content.IIntentReceiver$Stub$Proxy@41ee0688它们具有不同的数字(这个线程ID是什么?)
现在这个异常似乎与意图大小有关(参见以下链接)
这是唯一的原因吗?如果是这样,当代码似乎只来自google analytics代码时,我的代码是如何导致的呢?我使用GA错了吗?除了制作一个跟踪器,我似乎没有做太多.
编辑
这就是我创建跟踪器的方式.singleton我的应用程序对象中有一个跟踪器
Tracker appTracker;
synchronized Tracker getTracker()
{
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
if (appTracker == null)
{
appTracker = analytics.newTracker([some key]);
appTracker.enableAdvertisingIdCollection(true);
analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
}
return appTracker;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的BaseActivity中,我有以下代码:
public void initAnalytics() {
if (Global.TRACKING_ENABLED) {
mTracker = app.getTracker();
}
}
public void sendCommerceData(Map<String, String> params)
{
mTracker.send(params);
}
public void sendTrackViewData(String _path)
{
mTracker.setScreenName(_path);
mTracker.send(new HitBuilders.AppViewBuilder().build());
}
public void sendEventData(String category, String action, String label, long value)
{
mTracker.send(new HitBuilders.EventBuilder()
.setCategory(category)
.setAction(action)
.setLabel(label)
.setValue(value).build());
}
Run Code Online (Sandbox Code Playgroud)
编辑2
好的,这里是sendCommerceData的使用:
sendCommerceData(new HitBuilders.ItemBuilder()
.setTransactionId(Integer.toString(order.orderId))
.setName(orderItem.tradeTitle)
.setSku(orderItem.tradeId)
.setCategory(orderItem.categoryFullname)
.setPrice(price)
.setQuantity(orderItem.quantity)
.build());
Run Code Online (Sandbox Code Playgroud)
u_u
我的猜测是,您正在应用程序上运行 ProGuard,但尚未将以下例外添加到您的 proguard-rules.txt 中:
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |