繁体   English   中英

从Eclipse导出我的Android应用程序时出现错误,该应用程序将android-support-v4.jar与Proguard一起使用

[英]i am getting Error While Export my Android Application From Eclipse which use android-support-v4.jar with Proguard

有人可以帮我在Android应用程序中使用ProGuard的问题吗?

这是我的控制台向我显示的内容。

[2011-11-03 16:07:52 - AndroidViewPager] Proguard returned with error code 1. See console
[2011-11-03 16:07:52 - AndroidViewPager] Note: there were 95 duplicate class definitions.
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find superclass or interface android.os.Parcelable$ClassLoaderCreator
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.app.ActivityCompatHoneycomb: can't find referenced method 'void invalidateOptionsMenu()' in class android.app.Activity
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.app.ActivityCompatHoneycomb: can't find referenced method 'void dump(java.lang.String,java.io.FileDescriptor,java.io.PrintWriter,java.lang.String[])' in class android.app.Activity
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find referenced class android.os.Parcelable$ClassLoaderCreator
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2: can't find referenced class android.os.Parcelable$ClassLoaderCreator
[2011-11-03 16:07:52 - AndroidViewPager] Warning: android.support.v4.view.MenuCompatHoneycomb: can't find referenced method 'void setShowAsAction(int)' in class android.view.MenuItem
[2011-11-03 16:07:52 - AndroidViewPager] Warning: there were 3 unresolved references to classes or interfaces.
[2011-11-03 16:07:52 - AndroidViewPager]          You may need to specify additional library jars (using '-libraryjars'),
[2011-11-03 16:07:52 - AndroidViewPager]          or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-11-03 16:07:52 - AndroidViewPager] Warning: there were 3 unresolved references to program class members.
[2011-11-03 16:07:52 - AndroidViewPager]          Your input classes appear to be inconsistent.
[2011-11-03 16:07:52 - AndroidViewPager]          You may need to recompile them and try again.
[2011-11-03 16:07:52 - AndroidViewPager]          Alternatively, you may have to specify the options 
[2011-11-03 16:07:52 - AndroidViewPager]          '-dontskipnonpubliclibraryclasses' and/or
[2011-11-03 16:07:52 - AndroidViewPager]          '-dontskipnonpubliclibraryclassmembers'.
[2011-11-03 16:07:52 - AndroidViewPager] java.io.IOException: Please correct the above warnings first.
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.Initializer.execute(Initializer.java:308) 
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.ProGuard.initialize(ProGuard.java:210)
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.ProGuard.execute(ProGuard.java:85)
[2011-11-03 16:07:52 - AndroidViewPager]    at proguard.ProGuard.main(ProGuard.java:499)

我认为在罐子里可能有些不适。 如何使用下面的Proguard.cfg文件指定其他库jar

  optimizationpasses 5

 -dontpreverify
 -verbose

  -libraryjars 'E:\Himanshu\AndroidViewPager\libs\android-support-v4.jar'
  -dontskipnonpubliclibraryclasses
  -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

 -keep public class * extends android.app.Activity
 -keep public class * extends android.app.Application
 -keep public class * extends android.app.Service
 -keep public class * extends android.content.BroadcastReceiver
 -keep public class * extends android.content.ContentProvider
 -keep public class * extends android.app.backup.BackupAgentHelper
 -keep public class * extends android.preference.Preference
 -keep public class com.android.vending.licensing.ILicensingService

 -keepclasseswithmembernames class * {
    native <methods>;
}

 -keepclasseswithmembernames class * {
public <init>(android.content.Context, android.util.AttributeSet);
}

  -keepclasseswithmembernames class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

  -keepclassmembers enum * {
      public static **[] values();
     public static ** valueOf(java.lang.String);
 }

  -keep class * implements android.os.Parcelable {
    public static final android.os.Parcelable$Creator *;
  }

在proguard.cfg中添加以下内容对我有用。 我认为是因为您没有使用蜂窝,但是兼容性库中包含一些蜂窝特定的内容。

-dontwarn CompatHoneycomb -keep class android.support.v4. { *; }
-dontwarn **CompatCreatorHoneycombMR2
-dontwarn **ActivityCompatHoneycomb
-dontwarn **MenuCompatHoneycomb

另外,移除

libraryjars 'E:\Himanshu\AndroidViewPager\libs\android-support-v4.jar'

我遇到过同样的问题。 原来,我需要更新项目的构建目标。

看起来android-support-v4.jar的版本需要与项目构建目标版本匹配才能使proguard正常工作。 就我而言, android-support-v4.jar revision 10需要在Package Explorer Project> Properties> Android中设置构建目标Android 4.1.2 (API 16)

AndroidManifest.xml ,我仍然设置了android:targetSdkVersion="13" 此设置似乎与问题无关。

方法void setShowAsAction(int)在兼容性库中不可用。 尝试使用菜单的xml文件参数

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@[+][package:]id/resource_name"
      android:title="string"
      android:titleCondensed="string"
      android:icon="@[package:]drawable/drawable_resource_name"
      android:onClick="method name"
      android:showAsAction=["ifRoom" | "never" | "withText" | "always" |
                            "collapseActionView"]
      .../>
</menu>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM