[英]How to obfuscate package name in android studio
我使用以下代碼成功混淆了類名和方法
buildTypes {
release {
shrinkResources false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
在應用級build.gradle
文件中
和
-dontwarn mypackage.**
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontwarn
在proguard-rules.pro
但我的問題是包名沒有被混淆。
那我怎樣才能達到它,請幫忙。
謝謝
在 Pro-Guard 中,包名可以通過各種方式進行混淆,混淆程度和緊湊程度越來越高。 例如,考慮以下類:
mycompany.myapplication.MyMain
mycompany.myapplication.Foo
mycompany.myapplication.Bar
mycompany.myapplication.extra.FirstExtra
mycompany.myapplication.extra.SecondExtra
mycompany.util.FirstUtil mycompany.util.SecondUtil
讓我們假設類名 mycompany.myapplication.MyMain 是配置保留的主要應用程序類。 除了 Main 之外的所有其他類名都可以被混淆。
默認情況下,包含無法重命名的類的包也不會重命名,並保留包層次結構。 這會導致混淆的類名,如下所示:
mycompany.myapplication.MyMain
mycompany.myapplication.a
mycompany.myapplication.b
mycompany.myapplication.a.a
mycompany.myapplication.a.b
mycompany.a.a
mycompany.a.b
-flattenpackagehierarchy 選項通過扁平化混淆包的包層次結構來進一步混淆包名稱:
-flattenpackagehierarchy 'myobfuscated'
或者, -repackageclasses 選項通過將混淆的類組合到單個包中來混淆整個包:
-repackageclasses 'myobfuscated'
混淆后的類名如下所示:
mycompany.myapplication.MyMain
mycompany.myapplication.a
mycompany.myapplication.b
myobfuscated.a
myobfuscated.b
myobfuscated.c
myobfuscated.d
另外指定 -allowaccessmodification 選項允許擴大類和類成員的訪問權限,打開重新打包所有混淆類的機會:
-repackageclasses 'myobfuscated'
-allowaccessmodification
混淆后的類名如下所示:
mycompany.myapplication.MyMain
myobfuscated.a
myobfuscated.b
myobfuscated.c
myobfuscated.d
myobfuscated.e
myobfuscated.f
指定的目標包始終可以是根包。 例如:
-repackageclasses ''
-allowaccessmodification
混淆后的類名是最短的名稱:
mycompany.myapplication.MyMain
a
b
c
d
e
f
請注意,並非所有代碼都可以接受所有級別的包名稱混淆。 值得注意的是,您可能必須考慮到您的應用程序可能包含必須調整的資源文件。
要在 Android Studio 中混淆代碼,請訪問這篇文章。
或者將您的代碼導入NetBeans並使用其內置功能來編譯、預驗證、混淆和打包代碼)))。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.