Proguard和mixpanel问题

Posted

技术标签:

【中文标题】Proguard和mixpanel问题【英文标题】:Proguard and mixpanel issue 【发布时间】:2016-01-20 02:14:55 【问题描述】:

在启用 proguard 时,我收到以下警告

**警告:com.mixpanel.android.mpmetrics.Tweaks:找不到引用的类 com.mixpanel.android.mpmetrics.Tweaks$TweakType 警告:有 1 个未解析的类或接口引用。 您可能需要添加缺少的库 jar 或更新它们的版本。 如果您的代码在没有丢失类的情况下工作正常,您可以抑制 带有“-dontwarn”选项的警告。 (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) :app:proguardStageRelease 失败 错误:任务 ':app:proguardStageRelease' 执行失败。

java.io.IOException: 请先纠正上述警告。**

logcat 放在 -dontwarn com.mixpanel.**

java.lang.NullPointerException
        at com.leadsquared.app.LeadsActivity.onCreateOptionsMenu(Unknown Source)
        at android.app.Activity.onCreatePanelMenu(Activity.java:2546)
        at android.support.v4.app.o.onCreatePanelMenu(Unknown Source)
        at android.support.v7.internal.view.k.onCreatePanelMenu(Unknown Source)
        at android.support.v7.app.aj.onCreatePanelMenu(Unknown Source)
        at android.support.v7.internal.view.k.onCreatePanelMenu(Unknown Source)
        at android.support.v7.internal.a.b.g(Unknown Source)
        at android.support.v7.internal.a.c.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5086)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
        at dalvik.system.NativeStart.main(Native Method)

proguard-rules.pro 文件是这样的

  -dontshrink
 -dontoptimize
 -dontpreverify
   -dontwarn okio.**
      -dontwarn com.mixpanel.**
  -keep class com.squareup.okhttp.**  *; 
    -dontwarn org.xmlpull.v1.**
    -dontwarn com.squareup.**
      -keep interface com.squareup.okhttp.**  *; 
     -keepclasseswithmembers class * 
       void onClick*(...);
      
      -keepclasseswithmembers class * 
      *** *Callback(...);
         

感谢任何帮助

【问题讨论】:

也许看看这个并尝试答案中列出的proguard设置。 ***.com/questions/25663713/… 在我的情况下例外是不同的,所以它不起作用 这可能是收缩的问题。在 proguard 配置中尝试此选项:“-dontshrink”。 我已经尝试过了,但是当没有提供令牌来获取数据时会出现错误 @MarcelTricolici 在使用这个我得到这个没有找到用于权限撤销的内容提供者:file:///data/local/tmp/mypackage 【参考方案1】:

将此添加到您的 proguard 配置中:

-dontwarn com.mixpanel.** 

另见here

【讨论】:

一放这个我的应用程序就崩溃了 你会发布 logcat 输出吗? 我已经发布了 logcat 输出 请你试试如果你设置-keep com.mixpanel.**会发生什么? 是的,我试过了,放上这个,加载数据时出错

以上是关于Proguard和mixpanel问题的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 服务和 Firebase 的 ProGuard 问题

Mixpanel 不适用于 swift

如何使用 mixpanel-ruby gem 来跟踪事件?

如何在 Mixpanel 中跟踪匿名事件

用于错误监控的 MixPanel

我可以将 iOS 应用安装到 Mixpanel 中吗?