android - 混淆异常

标签 android proguard obfuscation

我想混淆我的应用程序,所以我在 project.properties 文件中取消注释 proguard 行。

当我在 Eclipse 中导出应用程序时,出现以下错误。

它似乎不能引用类,其中一些来自 Joda jar 文件。 我的 libs 文件夹中有 Joda .jar 文件。 我也试过将它放在构建路径上,但它仍然会引发相同的错误。

没有人知道我做错了什么或者我应该如何配置 Proguard 以在必要时跳过文件?

提前致谢。

[更新] 通过将 Joda-convert jar 添加到构建路径,我设法删除了大部分 Joda 警告

Android - Proguard didn't compile with Joda Time jar file

[2014-11-12 11:11:55 - nfcscanner] Proguard returned with error code 1. See console
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics$b: can't find superclass or interface android.app.Application$ActivityLifecycleCallbacks
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.images.ImageManager$e: can't find superclass or interface android.content.ComponentCallbacks2
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find superclass or interface android.view.View$OnAttachStateChangeListener
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find superclass or interface android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics: can't find referenced class android.app.Application$ActivityLifecycleCallbacks
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics: can't find referenced method 'void registerActivityLifecycleCallbacks(android.app.Application$ActivityLifecycleCallbacks)' in class android.app.Application
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.analytics.GoogleAnalytics$b: can't find referenced class android.app.Application$ActivityLifecycleCallbacks
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.cast.TextTrackStyle: can't find referenced class android.view.accessibility.CaptioningManager$CaptionStyle
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.GooglePlayServicesUtil: can't find referenced field 'int smallestScreenWidthDp' in class android.content.res.Configuration
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.images.ImageManager: can't find referenced method 'void registerComponentCallbacks(android.content.ComponentCallbacks)' in class android.content.Context
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.common.images.ImageManager$e: can't find referenced class android.content.ComponentCallbacks2
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'android.app.Fragment getParentFragment()' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'boolean getUserVisibleHint()' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'boolean isDetached()' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'void setMenuVisibility(boolean)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.dynamic.b: can't find referenced method 'void setUserVisibleHint(boolean)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced class android.view.View$OnAttachStateChangeListener
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'void addOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener)' in class android.view.View
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'android.view.Display getDisplay()' in class android.view.View
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'void removeOnAttachStateChangeListener(android.view.View$OnAttachStateChangeListener)' in class android.view.View
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.games.internal.PopupManager$PopupManagerHCMR1: can't find referenced method 'void removeOnGlobalLayoutListener(android.view.ViewTreeObserver$OnGlobalLayoutListener)' in class android.view.ViewTreeObserver
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.ed: can't find referenced method 'boolean isActiveNetworkMetered()' in class android.net.ConnectivityManager
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.es: can't find referenced method 'java.lang.String getDefaultUserAgent(android.content.Context)' in class android.webkit.WebSettings
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.es: can't find referenced method 'void setMediaPlaybackRequiresUserGesture(boolean)' in class android.webkit.WebSettings
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.v: can't find referenced method 'void registerComponentCallbacks(android.content.ComponentCallbacks)' in class android.content.Context
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.internal.v: can't find referenced method 'void unregisterComponentCallbacks(android.content.ComponentCallbacks)' in class android.content.Context
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.maps.MapFragment: can't find referenced method 'void onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.maps.StreetViewPanoramaFragment: can't find referenced method 'void onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.tagmanager.bb$1: can't find referenced class android.util.LruCache
[2014-11-12 11:11:55 - nfcscanner] Warning: com.google.android.gms.wallet.fragment.WalletFragment: can't find referenced method 'void onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle)' in class android.app.Fragment
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateMidnight: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateTimeZone: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.DateTimeZone: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Days: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Duration: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Hours: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Hours: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Instant: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDate: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDate: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalDateTime: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.LocalTime: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Minutes: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Minutes: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MonthDay: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MonthDay: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Months: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Months: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MutableDateTime: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.MutablePeriod: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Period: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Seconds: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Seconds: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Weeks: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Weeks: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.YearMonth: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.YearMonth: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.FromString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.Years: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.base.AbstractDuration: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.base.AbstractInstant: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner] Warning: org.joda.time.base.AbstractPeriod: can't find referenced class org.joda.convert.ToString
[2014-11-12 11:11:55 - nfcscanner]       You should check if you need to specify additional program jars.
[2014-11-12 11:11:55 - nfcscanner] Warning: there were 62 unresolved references to classes or interfaces.
[2014-11-12 11:11:55 - nfcscanner]          You may need to specify additional library jars (using '-libraryjars').
[2014-11-12 11:11:55 - nfcscanner] Warning: there were 20 unresolved references to program class members.
[2014-11-12 11:11:55 - nfcscanner]          Your input classes appear to be inconsistent.
[2014-11-12 11:11:55 - nfcscanner]          You may need to recompile them and try again.
[2014-11-12 11:11:55 - nfcscanner]          Alternatively, you may have to specify the option 
[2014-11-12 11:11:55 - nfcscanner]          '-dontskipnonpubliclibraryclassmembers'.
[2014-11-12 11:11:55 - nfcscanner] java.io.IOException: Please correct the above warnings first.
[2014-11-12 11:11:55 - nfcscanner]  at proguard.Initializer.execute(Initializer.java:321)
[2014-11-12 11:11:55 - nfcscanner]  at proguard.ProGuard.initialize(ProGuard.java:211)
[2014-11-12 11:11:55 - nfcscanner]  at proguard.ProGuard.execute(ProGuard.java:86)
[2014-11-12 11:11:55 - nfcscanner]  at proguard.ProGuard.main(ProGuard.java:492)

项目.properties

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt

# Project target.
target=Google Inc.:Google APIs:11
android.library=false
android.library.reference.1=../google-play-services_lib

proguard-project.txt

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-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;
}

最佳答案

[已解决]

我将 Joda jar 添加到我的构建路径中。这仍然留下了 3 个 Joda 警告,因为我的构建路径上也需要 Joda-convert jar。

不要下载 Joda-convert1.7 jar,因为这不起作用,您需要 1.4 版本。

最后我添加了

-dontwarn com.google.android.gms.**

这删除了剩余的 gsm 警告。

现在一切正常。

关于android - 混淆异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885684/

相关文章:

android - 偶尔延迟 10 秒开始 Activity

java - 为什么 ProGuard 会中断 MySQL 连接,如何修复?

android - 在 Android APK 中混淆 Assets

java - 如何混淆部分代码?

java - for 循环 onclicklistener

java - public synchronized void run() 是一个坏主意吗?

android - setMultiChoiceItems 对话框中的图标 - Android

Android ProGuard 使用 gradle 插件 3.0.1(4.1?)构建签名的 apk 失败

java - 小米HM 1SW java.lang.NoSuchMethodError

ruby-on-rails-3 - 有没有办法混淆 Rails 3 中的数据,以便只有网络访问者(而不是屏幕抓取者)才能查看数据?