日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android+proguard目录,Android Proguard 详解

發布時間:2025/4/5 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android+proguard目录,Android Proguard 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般的商業項目都需要對代碼進行加密,Android提供了一種代碼混淆方法,介紹如下:

一、簡介

1、簡介

混淆器通過刪除從未用過的代碼和使用晦澀名字重命名類、字段和方法,對代碼進行壓縮,優化和混淆。結果是一個比較小的.apk文件,該文件比較難進行逆向工程。因此,當你的應用程序對安全敏感(要求高),例如當你授權應用程序的時候,混淆器是一種重要的保護手段。

混淆器被集成在android 構建系統中,所以你不必手動調用它。同時混淆器僅在發布模式下進行構建應用程序的時候才會運行起來,所以在調試模式下構建程序時,你不必處理混淆代碼。讓混淆器運行起來是可選擇的,但是推薦選上。

2.注意事項

在新版本的ADT創建項目時,混碼的文件不再是proguard.cfg,而是project.properties和proguard-project.txt。

如果需要對項目進行全局混碼,只需要進行一步操作:

將project.properties的中

“# ?proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了。

如果有一些代碼不能被混淆,比如需要加入了so文件,需要調用里面的方法,那么調用JNI訪問so文件的方法就不能被混碼。在導出的時候,可能不會報錯。但是在手機上運行的時候,需要調用so文件的時候,就會報某某方法無法找到。這個時候就需要用到proguard-project.txt。

二、在Eclipse中啟用ProGuard

1、確定Android SDK目錄下是否存在proguard文件夾

例如 ? D:\Environment\android-sdk-windows\tools\proguard

2、配置

1)檢查項目根目錄下是否存在proguard.cfg(或proguard-project.txt)文件,如果不存在(說明的當前的項目是2.3以前的項目),需要新建一個2.3的android項目,從該項目中將proguard.cfg文件拷貝到你的項目根目錄中,無需改動(除非你明白如何自定義自己的混淆策略),繼續下面步驟。

2)如果存在,則找到項目根目錄下的default.properties[如果你使用的是ADT14或者更高版本,那么項目中沒有default.properties文件,只有project.properties文件,找到project.properties文件即可]文件,在文件中增加一項配置:proguard.config=proguard.cfg

這樣就完成了配置

3.語法規則

# android 原始混淆模板

# -------------------------------------

# ----------------------------------

# 通過指定數量的優化能執行

# -optimizationpasses n

# ----------------------------------

-optimizationpasses 5

# ----------------------------------

# 混淆時不會產生形形色色的類名

# -dontusemixedcaseclassnames

# ----------------------------------

#-dontusemixedcaseclassnames

# ----------------------------------

# 指定不去忽略非公共的庫類

# -dontskipnonpubliclibraryclasses

# ----------------------------------

#-dontskipnonpubliclibraryclasses

# ----------------------------------

# 不預校驗

# -dontpreverify

# ----------------------------------

# -dontpreverify

# ----------------------------------

# 輸出生成信息

# -verbose

# ----------------------------------

-verbose

# ----------------------------------

# 優化選項

# optimizations {optimization_filter}

# ----------------------------------

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

}

# -----------------

# modify 修改合并

# -----------------

-keep public class * extends android.view.View {

public (android.content.Context);

public (android.content.Context, android.util.AttributeSet);

public (android.content.Context, android.util.AttributeSet, int);

public void set*(...);

}

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

#--------------------------

# 保護類型 -keepattributes 說明

# Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable,

# LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations,

# RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault

# --------------------

-keepattributes **

-libraryjars /lib/rt.jar

# ----------------------

# 不壓縮指定的文件

# -dontshrink

# ----------------------

-dontshrink

# ----------------------

# 不優化指定的文件

# -dontoptimize

# -----------------------

-dontoptimize

# -----------------------

# 不混淆指定的文件

# -dontobfuscate

# -----------------------

# ----- 混淆包路徑 -------

-repackageclasses ''

-flattenpackagehierarchy ''

-target 1.6

# -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保護的字段及類相關 --------

-keep class com.google.inject.Binder

-keepclassmembers class * {

@com.google.inject.Inject (...);

}

-keepclassmembers class * {

void *(**On*Event);

}

-keepclassmembers class **.R$* {

public static ;

}

# ------ 編譯時需要用到的 jar 包

-libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar

# ------ 保護 谷歌第三方 jar 包,界面特效 ----------

-keep class android.support.v4.**

-dontwarn android.support.v4.**

# ------ 保護百度地址jar包 --------

-keep class com.baidu.mapapi.** { *; }

-dontwarn com.baidu.mapapi.**

# --- 打包時忽略以下類的警告 --

-dontwarn com.classpackage.AA

#-keepnames class * implements java.io.Serializable

# ---------保護所有實體中的字段名稱----------

-keepclassmembers class * implements java.io.Serializable {

;

}

# --------- 保護類中的所有方法名 ------------

-keepclassmembers class * {

public ;

}

如有問題請留言,轉載注明出處。

總結

以上是生活随笔為你收集整理的android+proguard目录,Android Proguard 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。