Android中proguard混淆第三方jar包

2021-06-17 01:32:49 字數 3787 閱讀 9613

現在大部分專案都使用第三方的jar包,包括json解析的gson.jar,統計使用者資訊的umeng.jar,support-v4.jar等等等等,這些jar包本身基本都做了混淆,如果再用progurad混淆的話會出現錯誤,所以要通過-keep等方法不混淆這些jar中的內容,把到現在用過的整理下僅供參考~~

1.專案中有gson的jar包怎麼辦?

-keep class sun.misc.unsafe 

-keep class com.google.gson.stream.**

-keep class com.google.gson.examples.android.model.**

-keep class com.google.gson.**

2.專案中有commons-httpclient-3.1.jar怎麼辦?

3.專案中有umeng_sdk.jar怎麼辦?

-keepclassmembers class *

-keep public

class [您的應用包名].r$*

把[您的應用包名] 替換成您自己的包名,如com.yourcompany.example。

如果您使用了雙向反饋功能,還需要新增下面**,以免我們自定義的ui被混淆:

-keep public

class

com.umeng.fb.ui.threadview

4.專案中有baidumapapi.jar怎麼辦?

5.專案中有android-support-v4.jar怎麼辦?

-dontwarn android.support.v4.**

-keep class android.support.v4.**

-keep public

class * extends android.support.v4.**

-keep public

之前我還這樣做過

-dontwarn android.support.v4.**

-keep public

class android.support.v4.view.**

-keep public

class android.support.v4.accessibilityservice.**

-keep public

class android.support.v4.os.**

-keep public

-keep public

class android.support.v4.widget.**

6.專案中有ksoap2-android-assembly-2.3-jar-with-dependencies.jar怎麼辦?

-ignorewarnings

-keep class org.kobjects.**

-keep class org.ksoap2.**

-keep class org.kxml2.**

-keep class org.xmlpull.**

注意如果需要混淆**,為了保證sdk的正常使用,需要在proguard.cfg加上下面兩行配置:

2014.12.05更新

9 、sharesdk 

關於sharesdk的混淆 

-keep class cn.sharesdk.**

-keep class com.sina.**

-keep class **.r$*

-keep class **.r

-dontwarn cn.sharesdk.**

-dontwarn **.r$*

考慮到部分開發者會使用附帶sample中的側欄控制項,那麼此時還需要keep這個控制項的**:

-keep class m.framework.**

最後請注意,註冊到cn.sharesdk.framework.sharesdkuishell下用於自定義授權頁面的類也是需要keep的,否則sharesdk將找不到它。

2015.02.02更新

為何我的程式在不混淆之前可以執行,混淆之後不能執行了?

向量版sdk(即2.0.0及之後的版本):

如果是用proguard ,以下配置供參考:

-libraryjars libs/baidumapapi_v2_1_2.jar 替換成自己所用版本的jar包

其他混淆工具也請進行與此類似的配置,指定對mapapi中的類和方法不進行混淆

2015.07.23更新

fastjson

-libraryjars libs/fastjson.jar

-keep class com.alibaba.fastjson.**

-keepclassmembers class *

android 中layout weight的作用

layout weight 用於給乙個線性布局中的諸多檢視的重要度賦值。所有的檢視都有乙個layout weight值,預設為零,意思是需要顯示多大的檢視就佔據多大的螢幕空 間。若賦乙個高於零的值,則將父檢視中的可 用空間分割,分割大小具體取決於每乙個檢視layout weight 值以及該值在當前...

Android中LayoutParams的用法

寧願做過了後悔,也不要錯過了後悔。本講內容 layoutparams的用法 一 layoutparams的認識 從官方文件可知layoutparams繼承於android.view.viewgroup.layoutparams.layoutparams相當於乙個layout的資訊包,它封裝了layo...

android中layout weight的理解

例如 xmlns android android layout width fill parent android layout height wrap content android background 00ff00 android weightsum 0 android orientation...