導航:首頁 > 操作系統 > androidproguard配置

androidproguard配置

發布時間:2022-06-01 08:36:06

android里proguard.cfg文件有什麼用

android里proguard.cfg文件是代碼混淆用,是為了防止你的apk被反編譯而代碼全部暴露.不過目前的代碼混淆只是把命名修改了一下而已,真正反編譯時還是可以想辦法還原出來的,所以不能真正的混淆。
其詳解為:
-injars androidtest.jar【jar包所在地址】
-outjars out【輸出地址】
-libraryjars 'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的庫的jar,用於解析injars所指定的jar類】

-optimizationpasses 5
-dontusemixedcaseclassnames 【混淆時不會產生形形色色的類名 】
- 【指定不去忽略非公共的庫類。 】
-dontpreverify 【不預校驗】
-verbose
-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
-keep public abstract interface com.asqw.android.Listener{
public protected <methods>; 【所有方法不進行混淆】
}
-keep public class com.asqw.android{
public void Start(java.lang.String); 【對該方法不進行混淆】
}
-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 怎麼使用代碼混淆的問題

Android Studio上混淆打包apk方法: //混淆,新版本是ninifyEnabled不再是runproguard minifyEnabled true //載入默認混淆配置文件及自定義混淆 配置 proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard.cfg' 設置minifyEnabled true,就會在打包的時候進行代碼混淆處理. 其中proguard-android.txt不用管,在sdk目錄裡面,主要是配置了proguard.cfg文件。 直接在android studio創建項目不會有這個文件,而是 proguard-rules.pro文件,其實一樣的,因為項目是從eclipse遷移過來的,之前在eclipse上混淆是 proguard.cfg文件.

⑶ 如何混淆android代碼以及注意事項

2.3SDK的兩個新特點:

1.剛安裝上2.3時,查看sdk目錄,發現在 ools下新增了一文件夾「proguard」,如下圖,我就在想是不是Google終於官方對proguard考慮進去了。理論上,對java的混淆都是可以的,但關鍵在於如何編寫proguard的混淆腳本。

注意要點:

1.混淆以後的包會比混淆前的包小一點,一定要注意這點.

如果混淆不成功,請在第2步,將proguard.config=proguard.cfg修改為proguard.config=E:Mobile_DevelopGoogle_AndroidpublicGoldenBeach_newproguard.cfg這種類似的用絕對路徑,請注意絕對路徑中的文件夾名不能含有空格,如果有空格請替換為"_".

2.android在用proguard混淆時,一般情況下使用系統自帶的配置文件就可以保持大部分外部需要引用的類,比如Activity,view擴展等等,但是有些情況下一些引入的外部lib,如果被混淆也會出現各種各樣的問題,如果不想混淆這些包,就要加上

-keep class packagename.** {*;}

這樣就能完整保持原有class了

⑷ android stuido 有哪些混淆工具

混淆,新版本是ninifyEnabled不再是runproguard
minifyEnabled true
/。
直接在android studio創建項目不會有這個文件,而是 proguard-rules.pro文件,其實一樣的,因為項目是從eclipse遷移過來的,之前在eclipse上混淆是 proguard;/載入默認混淆配置文件及自定義混淆 配置
proguardFiles getDefaultProguardFile('.cfg文件,在sdk目錄裡面,主要是配置了proguard;proguard-android.txt'),',就會在打包的時候進行代碼混淆處理. 其中proguard-android.txt不用管;proguard.cfg'
設置minifyEnabled true.cfg文件Android Studio上混淆打包apk方法:
//

⑸ android 工程中什麼是混淆代碼工具proguard的配置文件

proguard的配置文件如果是在4.3版本之後,新建工程之後,就會生成這個文件,裡面可以進行一些混淆的操作。

⑹ android studio 怎麼配置gradle

build.gradle

//設置腳本的運行環境
buildscript {
//支持java 依賴庫管理(maven/ivy),用於項目的依賴。
repositories {
mavenCentral()
}
//依賴包的定義。支持maven/ivy,遠程,本地庫,也支持單文件
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
//聲明構建的項目類型,這里當然是android了
apply plugin: 'android'
//設置編譯android項目的參數
android {
compileSdkVersion 17
buildToolsVersion "17"

defaultConfig {
minSdkVersion 8
targetSdkVersion 17
}
//Android默認配置
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
//測試所在的路徑,這里假設是tests文件夾,沒有可以不寫這一行
instrumentTest.setRoot('tests')
}

//這個是解決lint報錯的代碼
lintOptions {
abortOnError false
}
/**
* 簽名設置
*/
signingConfigs {
myConfigs {
storeFile file("簽名文件地址")
keyAlias "..."
keyPassword "..."
storePassword "..."
}
}
/**
* 混淆設置
*/
buildTypes {
release {
signingConfig signingConfigs.myConfigs
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
/**
* 渠道打包(不同包名)
*/
proctFlavors {
qqqq {
applicationId = '包名'
}
hhhhh {
applicationId='包名'
}
}
}
/**
* .so文件的導入
*/
task NativeLibs(type: Copy) {
from fileTree(dir: 'libs', include: 'armeabi/*.so') into 'build/lib'
}

tasks.withType(Compile) {
options.encoding = "UTF-8"
}

tasks.withType(Compile) {
compileTask -> compileTask.dependsOn NativeLibs
}
clean.dependsOn 'cleanCopyNativeLibs'
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
pkgTask.jniFolders = [new File(buildDir, 'lib')]
}
//依賴庫
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
gradle 作為構建工具,能夠很方便的使用本地jar包,以下為使用的代碼塊。
ependencies {
//單文件依賴
compile files('libs/android-support-v4.jar')
//某個文件夾下面全部依賴
compile fileTree(dir: 'libs', include: '*.jar')
}

android {

}
gradle 同時支持maven,ivy,由於ivy我沒用過,所以用maven 作為例子,以下為代碼塊:
repositories {
//從中央庫裡面獲取依賴
mavenCentral()
//或者使用指定的本地maven 庫
maven{
url "file://F:/githubrepo/releases"
}
//或者使用指定的遠程maven庫
maven{
url "遠程庫地址"
}
}

dependencies {
//應用格式: packageName:artifactId:version
compile 'com.google.android:support-v4:r13'}

android {

}
對於項目依賴 android library的話,就不是依賴一個jar,那麼簡單了,在這里需要使用gradle mulit project 機制。在過去,android library並沒有一個很好的包管理方式,簡單來說,在gradle出現以前,官方並沒有一種用於管理android library 依賴包的方式,一般我們都是直接下載別人的android library project 源碼進行集成,而對於第三方的android-maven-plugin 用的是apklib 格式。
而現在,官方終於推出一種android library的打包格式,擴展名為*.aar。前面提到,目前android gradle插件並不支持本地直接使用*.aar文件,不過,支持包管理庫的引用方式,下面,我為大家說一下,怎麼對android library 發布使用。
打包android library
對android library 進行打包直接在library項目下面使用gradle build 即可,然後,你就會在 build/libs 目錄下看到兩個*.aar文件,一個debug包用的,一個是release 下用的,看個人需求使用,這里我們用的是release 版本的 .aar 文件。

⑺ android代碼混淆以及怎麼判斷一個apk代碼是否被混淆過

1、proguard原理
java代碼編譯成二進制class文件,這個class文件也可以反編譯成源代碼,除了注釋外,其他的code基本都可以看到。為了防止重要code被泄露,我們往往需要混淆,即把方法名,變數名,類名,包名等這些java元素的名稱改成讓人意想不到的名稱,這樣代碼結構就沒有變化,還可以運行,但是想弄懂代碼的架構卻很難。proguard就起到了這樣的作用:
一、它可以分析一組class的結構,根據用戶的配置,然後把這些class文件中可以混淆的java元素進行混淆

二、刪除無效的代碼

三、對代碼進行優化(使用adt插件導出的apk,還進行zipalign優化)

預設情況下,proguard會混淆所有代碼,但是下面幾種情況是不能改變java元素的名稱,否則就會導致程序出錯。
一、用到反射的地方(android中的api常用@hide注釋掉,開發者在調用相應的方法時,需要用到反射)

二、當app的代碼要依賴於系統的介面時,如被系統代碼調用的回調方法,這種方法比較復雜

三、java元素名稱是配置文件中配置好的

所以在使用proguard時,我們需要有個配置文件告訴proguard,哪些java元素是不能混淆的。

2、proguard配置

-dontwarn預設proguard會檢查每一個引用是否正確,但是第三方庫里往往有些不會用到的類,沒有正確引用,如果不配置的話,系統就會報錯。

-keep指定的類和類成員被保留作為入口

-keepclassmembes指定的類成員被保留。

-keepclasswithmembers指定的類和類成員被保留,假如指定的類成員存在的話。

⑻ 如何設置android的proguard configuration

-dontwarn android.support.v7.**
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }

⑼ 安裝了android studio後怎樣重新配置參數

⑽ android proguard 混淆後gson解析數據一直為null

混淆代碼的時候注意事項:android使用打包過程中proguard混淆後,會導致一些錯誤1.寫在視圖xml中的onClick響應出錯.因為寫在xml中的onClick是通過反射調用的,proguard認為它們沒有在代碼中被調用過,所以將它們從代碼中除掉或改名了.解決方法:在proguard.cfg中添加以下代碼,就可以防止被配在視圖xml中的onClick方法被proguard優化掉-keepclassmembersclass*extendsandroid.app.Activity{publicvoid*(android.view.View);}2.jni反調java方法這些類或方法同樣可能會被proguard認為沒有調用過而被除掉,或都被改名.這些方法最好統一寫在一個類中,然後這個類不作優化,或是找出所有jni調用過的類與方法,在proguard.cfg中配置,不對它們作優化3.其它反射調用的java類與方法使用反射時一定要注意proguard可能會認為那些方法未被調用過,會在代碼優化過程中將它們改名或除去.在使用反射的地方一定要在proguard.cfg中配置,不優化反射調用過的類和方法最後在proguard優化過後會產生一些文件mp.txt–描述.apk文件中所有類文件間的內部結構mapping.txt–列出了原始的類,方法和欄位名與混淆後代碼間的映射。這個文件很重要,當你從release版本中收到一個bug報告時,可以用它來翻譯被混淆的代碼。seeds.txt–列出了未被混淆的類和成員usage.txt–列出了從.apk中刪除的代碼要注意分析mapping.txt與usage.txt看xml視圖中寫的onClick響應函數,jni調用到的java類與方法,反射調用過的類與方法是否被混淆或重命名-keepclasscom.badlogic.gdx.backends.android.**{*;}像這樣的只是不混淆:這個包下的類(不包括子包里的東西),用到一個第三文的類就要把這個類所在的包,像上面加上還要注意的是android-support-v4.jar這個包問題,這里加上了對這個jar包的處理詳細可參見:9928801

閱讀全文

與androidproguard配置相關的資料

熱點內容
不能修改的pdf 瀏覽:739
同城公眾源碼 瀏覽:475
一個伺服器2個埠怎麼映射 瀏覽:283
java字元串ascii碼 瀏覽:62
台灣雲伺服器怎麼租伺服器 瀏覽:462
旅遊手機網站源碼 瀏覽:317
android關聯表 瀏覽:930
安卓導航無聲音怎麼維修 瀏覽:322
app怎麼裝視頻 瀏覽:424
安卓系統下的軟體怎麼移到桌面 瀏覽:81
windows拷貝到linux 瀏覽:757
mdr軟體解壓和別人不一樣 瀏覽:889
單片機串列通信有什麼好處 瀏覽:325
游戲開發程序員書籍 瀏覽:849
pdf中圖片修改 瀏覽:275
匯編編譯後 瀏覽:480
php和java整合 瀏覽:835
js中執行php代碼 瀏覽:447
國產單片機廠商 瀏覽:63
蘋果手機怎麼設置不更新app軟體 瀏覽:289