android 不混淆第三方包

修改project.properties文件

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

去掉之前的#,即取消注释


修改proguard-project.txt文件(忽略第三方jar)

引入第三方库:

-libraryjars /libs/umeng_sdk.jar

忽略类:

-keep class com.umeng.** {*;}

-optimizationpasses 7
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-allowaccessmodification
-repackageclasses 
-dontusemixedcaseclassnames
-dontoptimize

-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


-libraryjars /libs/umeng_sdk.jar

-keep class com.umeng.** {*;}

-keepclasseswithmembernames class * {
    native <methods>;
}

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

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

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

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

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


当你在Android Studio中引入第三方库(如.jar文件)并通过`libs`目录添加,并尝试在其内部获取`Context`实例时,可能会遇到`Context`未及时更新的问题。这是因为Android应用程序有生命周期管理机制,新引入的库可能会自动关联到应用的完整上下文环境。 以下是可能导致这种情况的一些原因及解决办法: 1. **手动初始化**:如果你直接在静态方法或早期阶段使用`Context`,它可能还未初始化完成。确保你在需要的时候通过Activity或Fragment等组件获取Context,因为它们会在运行时初始化。 ```java MyLib myLib = new MyLib(); myLib.initYourObject(getApplicationContext()); // 使用Activity的ApplicationContext ``` 2. **依赖注入**:如果库依赖于框架的部分,如`Application`或`FragmentManager`,确保在合适的地方提供这些服务,而是直接使用`getSystemService()`。 3. **延迟加载**:有时库可能期望在某个特定时刻(例如在主线程中)获取Context。你可以考虑使用`Handler`或在适当时机触发获取。 4. **检查版本兼容**:确保第三方库和你的Android SDK版本兼容,某些库可能针对旧版本做了优化,导致与当前项目冲突。 5. **检查混淆配置**:如果有混淆(proguard)规则影响了`Context`的获取,确保混淆配置允许必要的类和方法通过。 如果你还是无法解决问题,可以尝试清理并重建项目,看看是否能解决这个问题。同时,检查库的文档或者开发者社区,看看是否有类似问题的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值