【问题标题】:NoSuchMethodError while using GoogleAnalytics and proguard使用 GoogleAnalytics 和 proguard 时出现 NoSuchMethodError
【发布时间】:2017-10-12 21:29:00
【问题描述】:

我在我的应用程序中使用 Google Analytics 和 proguard。 应用程序在没有启用 proguard 的情况下工作正常。 但是,当我在启用 Proguard 和 GoogleAnalytics 的情况下创建签名 Apk 时,出现以下错误。

我搜索了很多,但找不到解决方案。请帮忙

GoogleAnalytics 类:

public class MyApplication extends Application {
    public static final String TAG = MyApplication.class
            .getSimpleName();

    private static MyApplication mInstance;

    public static synchronized MyApplication getInstance() {
        return mInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;

        AnalyticsTrackers.initialize(this);
        AnalyticsTrackers.getInstance().get(AnalyticsTrackers.Target.APP);


    }

    public synchronized Tracker getGoogleAnalyticsTracker() {
        AnalyticsTrackers analyticsTrackers = AnalyticsTrackers.getInstance();

        return analyticsTrackers.get(AnalyticsTrackers.Target.APP);
    }

    /***
     * Tracking screen view
     *
     * @param screenName screen name to be displayed on GA dashboard
     */
    public void trackScreenView(String screenName) {
        Tracker t = getGoogleAnalyticsTracker();

        // Set screen name.
        t.setScreenName(screenName);

        // Send a screen view.
        t.send(new HitBuilders.ScreenViewBuilder().build());

        GoogleAnalytics.getInstance(this).dispatchLocalHits();
    }

    /***
     * Tracking exception
     *
     * @param e exception to be tracked
     */
    public void trackException(Exception e) {
        if (e != null) {
            Tracker t = getGoogleAnalyticsTracker();

            t.send(new HitBuilders.ExceptionBuilder()
                            .setDescription(
                                    new StandardExceptionParser(this, null)
                                            .getDescription(Thread.currentThread().getName(), e))
                            .setFatal(false)
                            .build()
            );
        }
    }

    /***
     * Tracking event
     *
     * @param category event category
     * @param action   action of the event
     * @param label    label
     */
    public void trackEvent(String category, String action, String label) {
        Tracker t = getGoogleAnalyticsTracker();

        // Build and send an Event.
        t.send(new HitBuilders.EventBuilder().setCategory(category).setAction(action).setLabel(label).build());
    }

java.lang.NoSuchMethodError: 类中没有接口方法 j()I Landroid/content/res/XmlResourceParser;或其超类 (“android.content.res.XmlResourceParser”的声明出现在 /system/framework/framework.jar) 在 com.google.android.gms.analytics.internal.zzp.zza(未知来源) 在 com.google.android.gms.analytics.internal.zzp.zzS(未知来源) 在 com.google.android.gms.analytics.GoogleAnalytics.newTracker(未知 资源) 在 com.xxxx.xxx.googleAnalytics.a.a(未知来源) 在 com.xxx.xxx.googleAnalytics.MyApplication.onCreate(未知来源) 在 android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1017)

【问题讨论】:

  • 您找到解决方案了吗?

标签: google-analytics proguard


【解决方案1】:

不知什么原因,我们不得不添加这个:

-keep class org.xmlpull.v1.** { *;}
-dontwarn org.xmlpull.v1.**

【讨论】:

    【解决方案2】:

    从您的错误日志看来,找不到接口 j()。

    但如果这是谷歌图书馆的错误,这将对你有所帮助

    保留类 com.google。 {*;}**

    -keepclassmembers class com.google. {*;}**

    如果您仍然收到错误,请使用此

    -dontwarn com.google

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-28
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多