首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓程序在android.app.Activity中找不到方法

安卓程序在android.app.Activity中找不到方法
EN

Stack Overflow用户
提问于 2017-02-12 07:08:50
回答 1查看 730关注 0票数 0

在生成签名的APK时,我将得到以下Proguard错误。我把minifyEnabled &设置为

代码语言:javascript
复制
can't find referenced method 'void onMultiWindowModeChanged(boolean)' in library class android.app.Activity
can't find referenced method 'boolean isInMultiWindowMode()' in library class android.app.Activity

我想保留minifyEnabled shrinkResources用于生产。

我需要在我的保护规则中添加什么来保持高于成员的水平并消除错误?

下面是我冗长的Proguard规则文件:

代码语言:javascript
复制
#-dontobfuscate

#-optimizations !code/simplification/arithmetic
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/allocation/variable
#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/simplification/cast
#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*,!code/simplification/cast


-optimizationpasses 5

-dontpreverify

#-allowaccessmodification

-dontskipnonpubliclibraryclasses
-adaptresourcefilenames
-adaptresourcefilecontents
-flattenpackagehierarchy


-dontwarn org.jdom2.**
-dontwarn org.apache.**
-dontwarn org.google.common.collect.**
-dontwarn com.google.common.**


#-keep class * implements java.io.Serializable
-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
-keep public class android.widget.ProgressBar
-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 *;
}


# ------------------------------------------
# Crashlytics
# ------------------------------------------
-keepattributes *Annotation*
#-keepattributes SourceFile,LineNumberTable
-keepattributes LineNumberTable
-keep public class * extends java.lang.Exception
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**


-dontwarn com.viewpagerindicator.LinePageIndicator


# ------------------------------------------
# RETROFIT config
# ------------------------------------------
-dontwarn retrofit.**
-keep class retrofit.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }


# ------------------------------------------
# FABRIC TWITTER config
# ------------------------------------------
-dontwarn com.squareup.okhttp.**
-dontwarn com.google.appengine.api.urlfetch.**
-dontwarn rx.**
-dontwarn retrofit.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keep class retrofit.** { *; }
#-keepclasseswithmembers class * {
#    @retrofit.http.* <methods>;
#}


# ------------------------------------------
# OKIO config
# ------------------------------------------
-dontwarn okio.**
-keep class okio.** { *; }



# ------------------------------------------
# InMobi config
# ------------------------------------------
-keep class android.app.Activity
-keep class android.app.Activity.**

-keepattributes SourceFile,LineNumberTable
-keep class com.inmobi.** { *; }
-keep public class com.google.android.gms.**
-dontwarn com.google.android.gms.**
-dontwarn com.squareup.picasso.**
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient{
     public *;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info{
     public *;
}
# skip the Picasso library classes
-keep class com.squareup.picasso.** {*;}
-dontwarn com.squareup.picasso.**
-dontwarn com.squareup.okhttp.**
# skip Moat classes
-keep class com.moat.** {*;}
-dontwarn com.moat.**
# skip AVID classes
-keep class com.integralads.avid.library.* {*;}

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-02-15 10:31:21

我开发了Android库,我们的客户也遇到了同样的问题,当时他试图用连接库对他的应用程序进行保护。在我们的例子中,这个问题与AppCompat库无关。

我们的客户端有compileSdkVersion和targetSdkVersion (23),这比我们的库(25)要低。我们在库代码中使用的Activity.isInMultiWindowMode()方法在Android 23中不存在,这是Proguard生成警告的原因之一。因此,我将以下行添加到库的.pro文件中:

代码语言:javascript
复制
-dontwarn android.app.Activity

@AlexVPerl也做了同样的事情,但我认为,当客户端应用程序的compileSdkVersion低于库(至少几个单元)时,图书馆作者有责任为这种情况准备库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42185071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档