啊灬啊灬啊灬快灬水多多,少妇人妻av无码专区,朋友的丰满人妻hd,日韩精品久久久肉伦网站

混淆器(混淆器 編譯器 區(qū)別)

來源:互聯(lián)網(wǎng) 時(shí)間:2025-10-24 15:23:37 瀏覽量:1

混淆器可能是相關(guān)行業(yè)人士都值得關(guān)注的知識(shí),在此老幣網(wǎng)對(duì)混淆器 編譯器 區(qū)別進(jìn)行詳細(xì)的介紹,并拓展一些相關(guān)的知識(shí)分享給大家,希望能夠?yàn)槟鷰韼椭?/p>

本文目錄:

  • 1、什么是代碼混淆?andriod和android-studio工程如何啟用代碼混淆功能
  • 2、代碼混淆器是干什么的?
  • 3、asp.net有什么好的加密混淆工具
  • 4、有人使用過 Zelix KlassMaster進(jìn)行混淆嗎
  • 5、有沒有好的 python 混淆器 推薦一個(gè)
  • 6、android集成分享sdk后怎么代碼混淆

什么是代碼混淆?andriod和android-studio工程如何啟用代碼混淆功能

代碼混淆有兩種重要功能。其一,混淆代碼。其二,優(yōu)化代碼。

進(jìn)行代碼混淆的程序被稱為代碼混淆器(混淆工具)。進(jìn)行代碼混淆的意義主要在于對(duì)代碼進(jìn)行一定程度的加密。

在android 2.3之后,sdk中就已經(jīng)集成了混淆器proguard(目錄在sdk\tools\proguard),所以我們可以很方便的直接在工程中開啟代碼混淆。

eclipse android工程開啟混淆功能,我們需要手動(dòng)在項(xiàng)目文件.properties(我的是project.properties文件)中添加下面的代碼

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):

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

某些方式創(chuàng)建的項(xiàng)目中可能已經(jīng)有如上兩行了,只是默認(rèn)被注釋掉了,只要把proguard.config這一行解注釋就好了。這樣代碼混淆功能就開啟了,在打簽名包時(shí),項(xiàng)目會(huì)自動(dòng)進(jìn)行代碼混淆。

代碼混淆器是干什么的?

用于打亂代碼的編譯結(jié)果,保護(hù)自己成果,使別人難以看懂用反編譯軟件還原出來的代碼

asp.net有什么好的加密混淆工具

.net軟件加密鎖,可試試德國(guó)的威步,威步(WIBU)信息系統(tǒng)的軟件加密狗,還能申請(qǐng)免費(fèi)試用版。

加密鎖:威步(WIBU)的CodeMeter,AxProtector(for.net)兩款軟件加密鎖性能非常不錯(cuò)

混淆的問題,與傳統(tǒng)的代碼混淆工具(Obfuscator)不同,AxProtector可以完全阻止對(duì).NET 程序集(由 C#, VB.NET, Delphi.NET, ASP.Net… 等語言編寫)的反編譯。通俗的講,AxProtector在破解者和您的 .NET 代碼之間構(gòu)建了強(qiáng)大的防破解保護(hù)屏障,生成一個(gè)基于 Windows 的而不是基于 MSIL 的兼容格式文件。原始的 .NET 代碼完整的被加密后封裝在本地代碼內(nèi),無論何時(shí)都不會(huì)釋放到硬盤,對(duì)于破解者是不可見的。

與單純的.net加密軟件不同,AxProtector與CodeMeter硬件加密狗配套餐使用,采用了更為嚴(yán)密的密鑰管理,及最先進(jìn)的AES、RSA、ECC等加密算法存儲(chǔ)或傳輸密鑰,保證通訊安全。

.Net代碼編譯后生成的 .class 中包含有源代碼中的所有信息(不包括注釋),尤其是在其中保存有調(diào)試信息的時(shí)候。所以一個(gè)按照正常方式編譯的.class 文件可以非常輕易地被反編譯。一般軟件開發(fā)商會(huì)采用一種叫做混淆器的工具?;煜鞯淖饔檬菍?duì)編譯好的代碼進(jìn)行混淆,使得其無法被反編譯或者反編譯后的代碼混亂難懂。由于混淆器只是混淆了方法名稱或流程,而不能防止源代碼被反編譯,因此混淆器的作用只是增加了反編譯的難度,最終的結(jié)果也是治標(biāo)不治本。對(duì)于一些掌握工具的人來說幾乎還是透明的。AxProtector是一款真正意義的加密源代碼、防止反編譯的.net軟件加密軟件。

AxProtector加密了.net原代碼,任何時(shí)候原代碼都不可能被還原到硬盤當(dāng)中。采用AxProtector加密后的.net代碼只有在程序調(diào)用或執(zhí)行某一段函數(shù)的時(shí)候,才能通過AxProtectorClass在內(nèi)存中解密后返回到程序中執(zhí)行,運(yùn)行之后迅速立即加密。這種隨機(jī)加密、按需解密原代碼的功能,能很好的防止.Net程序的反編譯,同時(shí)能夠很好地防止API加密點(diǎn)被摘除。有效地保證了源代碼的執(zhí)行效率和安全性。

有人使用過 Zelix KlassMaster進(jìn)行混淆嗎

你要的功能其實(shí)是Java代碼混淆,如果要了解Java編譯成exe,可以看“參考資料”。下面一段文字摘自《Java手機(jī)/PDA程序設(shè)計(jì)入門》一書,可以做為混淆器性能的大致觀點(diǎn):筆者沒用過DashO,所以無法對(duì)其作出個(gè)人評(píng)價(jià)。所以現(xiàn)在僅說明筆者曾用過的產(chǎn)品。以筆者的個(gè)人觀點(diǎn),如果就混淆的程度來說,ZKM最好,JAX中等,RetroGuard和ProGuard最差,一分錢一分貨,這是千古不變的道理。如果就功能性而言,ZKM和JAX都不錯(cuò),不過,JAX是IBM所開發(fā)的產(chǎn)品,因此也繼承了大部分IBM產(chǎn)品的最大特色,就是“功能超強(qiáng),可是不易使用”,可能光是要看完JAX的設(shè)定文件就是一個(gè)很大的問題。下面分別介紹幾種具有代表性的混淆器,對(duì)它們的產(chǎn)品性能進(jìn)行對(duì)比。我們使用不同混淆器對(duì)同一段java代碼進(jìn)行混淆,分別列出混淆后代碼反編譯的結(jié)果,并給出使用的一些直接體會(huì)。原始java代碼:publicclassSimpleBeanimplementsSerializable{privateString[]name={"name0","name1","name2","name3"};privateListmyList=null;publicvoidSimpleBean(){myList=newArrayList(4);}publicvoidinit_public(){myList.add("name");for(inti=1;i;JVMINSTRdup;JVMINSTRswap;4;ArrayList();_$1;}publicvoidinit_public(){_$1.add("name");for(inti=1;i4;i++)_$1(i);}privatevoid_$1(inti){_$1.add(_$2[i]);}privatevoidwriteObject(ObjectOutputStreamobjectoutputstream)throwsIOException{}privateString_$2[];privateList_$1;}優(yōu)點(diǎn):1、除符號(hào)混淆外增加了數(shù)據(jù)混淆(字符數(shù)組初始化);2、有一些語句反編譯只能得到字節(jié)碼指令;3、在SunJDK中提供的Java編譯器(javac)的基礎(chǔ)上完成,編譯和混淆一體完成,不需要先生成class文件再混淆;4、提供了Eclipse的插件,能夠直接在Eclipse中使用Jocky。缺點(diǎn):1、混淆選項(xiàng)粒度較粗,使用中可能要在具體代碼中添加@preserve指令來實(shí)現(xiàn),工作量大;2、沒有控制流混淆。三、Allatori3.1_demoAllatori屬于第二代混淆器,具有全方位保護(hù)你的知識(shí)產(chǎn)權(quán)的能力。Allatori具有以下幾種保護(hù)方式:命名混淆,流混淆,調(diào)試信息混淆,字符串編碼,以及水印技術(shù)。對(duì)于教育和非商業(yè)項(xiàng)目來說這個(gè)混淆器是免費(fèi)的。2.1版本支持war和ear文件格式,并且允許對(duì)需要混淆代碼的應(yīng)用程序添加有效日期。Jad反編譯混淆后class得到的代碼:publicclassSimpleBeanimplementsSerializable{publicvoidinit_public(){d.add(c.k("{u{0"));inti=1;goto_L1_L3:H(i);++i;_L1:4;JVMINSTRicmplt21;goto_L2_L3_L2:}publicvoidSimpleBean(){d=newArrayList(4);}privatevoidH(inta){d.add(c[a]);}publicSimpleBean(){d=null;}privatevoidH(ObjectOutputStreamobjectoutputstream)throwsIOException{}privateStringc[]={c.k("\177q\177te"),c.k("\177q\177td"),c.k("\177q\177tg"),c.k("\177q\177tf")};privateListd;}注:c.k是為進(jìn)行字符串加密額外生成的類c的靜態(tài)方法。優(yōu)點(diǎn):1、設(shè)計(jì)考慮了庫文件混淆的使用場(chǎng)景;2、使用文檔詳盡,混淆選項(xiàng)配置文件的編寫示例多;3、除符號(hào)混淆外,還使用了兩種高級(jí)的混淆手段:控制混淆(改寫了for循環(huán))和字符串加密(String數(shù)組初始化);4、混淆選項(xiàng)粒度較細(xì),支持本地方法的保護(hù)等;5、支持水印技術(shù),允許對(duì)需要混淆的代碼添加有效日期;6、支持j2me;缺點(diǎn):1、商業(yè)軟件(價(jià)格附后),對(duì)教育和非商業(yè)用途免費(fèi)(網(wǎng)站鏈接是

有沒有好的 python 混淆器 推薦一個(gè)

代碼混淆,其實(shí)很簡(jiǎn)單。原理就是查找、替換而已。市面上有很多混淆工具,最好是在混淆工具的基礎(chǔ)上,自己再寫一下,二次混淆。算法也不難。如果需要全局混淆,以及自動(dòng)混淆,那么就復(fù)雜一些了,需要再加上詞法分析和語法分析。

如何使用:

1,首先得安裝Python。

2,把這個(gè)下面這個(gè) confuse.py 文件,復(fù)制目標(biāo)文件夾。

3,更改 raw_name_list 列表里的字符串。改成你想混淆的變量名或者類名方法名。

4,運(yùn)行python?confuse.py 即可混淆該文件夾下的.cs文件。

這段代碼其實(shí)還是很簡(jiǎn)單的,只是為大家說明一下混淆思想。如果想更方便的使用,需要再加入一些詞法分析、語法分析的算法。

代碼如下:

#! /usr/bin/env python

#coding=utf-8

import hashlib

import random

import os

###############################

# Describe : 混淆Unity腳本文件

# DP Author By: ? 常成功

# Create Date: ? ? 2014-11-25

# Modify Date: ? ? 2014-11-25

###############################

#想混淆的變量/方法名

raw_name_list = ["function_1", "function_2", "var_1", "var_2",]

#混淆后的變量/方法名

new_name_list = []

#隨機(jī)可選的字母表

alphabet = ["a", "b", "c", "d", "e", "f", "g",

"h", "i", "j", "k", "l", "m", "n", "o", "p", "q",

"r", "s", "t", "u", "v", "w", "x", "y", "z",

]

#生成新的變量名

def create_new_name() :

m = hashlib.md5()

#生成隨機(jī)變量名

for raw_name in raw_name_list:

m.update(raw_name)

#生成一個(gè)16位的字串

temp_name = m.hexdigest()[0:16]

#合法名稱校驗(yàn)

#強(qiáng)制以字母作為變量/方法名的開頭

if temp_name[0].isdigit():

initial = random.choice(alphabet)

temp_name = initial + temp_name

temp_name = temp_name[0:16]

#不能重名

while(1):

if temp_name in new_name_list :

initial = random.choice(alphabet)

temp_name = initial + temp_name

temp_name = temp_name[0:16]

else:

new_name_list.append(temp_name)

break

#混淆文件

def confuse_file(path_filename):

file_content = ""

#讀文件內(nèi)容

f = file(path_filename)

# if no mode is specified, 'r'ead mode is assumed by default

while True:

line = f.readline()

if len(line) == 0: # Zero length indicates EOF

break

#混淆

name_index = 0

for raw_name in raw_name_list:

the_new_name = new_name_list[name_index]

line = line.replace(raw_name, the_new_name)

name_index += 1

file_content += line

f.close()

#重寫文件

f = file(path_filename, 'w')

f.write(file_content)

f.close()

#遍歷當(dāng)前目錄下的所有.cs文件 ?

def confuse_all():

#獲取當(dāng)前目錄

dir = os.getcwd()

for root, dirs, filename in os.walk(dir):

for file in filename:

path_filename = os.path.join(root, file)

if path_filename.endswith('.cs'):

confuse_file(path_filename)

print "Confuse File: ", path_filename

if __name__=="__main__":

create_new_name()

confuse_all()

#打印一下混淆的情況.

#如果用文本保存起來, 那么以后可以反混淆, 還原文件

print "Start Confuse ...."

for j in range(0, len(raw_name_list)) :

print raw_name_list[j] , " -- " , new_name_list[j]

print "Confuse Complete !"

android集成分享sdk后怎么代碼混淆

為了保護(hù)代碼被反編譯,android引入了混淆代碼的概念

1.設(shè)置混淆

在工程下找到project.properties文件

在文件中加入proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt這個(gè)是系統(tǒng)的

也可以用自己的混淆文件(這樣就可以配置一些自己的東西),去sdk.dir}/tools/proguard/ 下復(fù)制proguard-android.txt文件到本地工程中

然后設(shè)置成proguard.config=proguard-android.txt

project.properties文件:

[java] view plaincopy

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

proguard.config=proguard-android.txt

# Project target.

target=android-17

-injars androidtest.jar【jar包所在地址】

-outjars out【輸出地址】

-libraryjars 'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的庫的jar,用于解析injars所指定的jar類】

-optimizationpasses 5

-dontusemixedcaseclassnames 【混淆時(shí)不會(huì)產(chǎn)生形形***的類名 】

-dontskipnonpubliclibraryclasses 【指定不去忽略非公共的庫類。 】

-dontpreverify 【不預(yù)校驗(yàn)】

-verbose

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 【優(yōu)化】

-keep public class * extends android.app.Activity【不進(jìn)行混淆保持原樣】

-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; 【所有方法不進(jìn)行混淆】

}

-keep public class com.asqw.android{

public void Start(java.lang.String); 【對(duì)該方法不進(jìn)行混淆】

}

-keepclasseswithmembernames class * { 【保護(hù)指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之后)】

native methods;

}

-keepclasseswithmembers class * { 【保護(hù)指定的類和類的成員,但條件是所有指定的類和類成員是要存在?!?/p>

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 {【保護(hù)指定類的成員,如果此類受到保護(hù)他們會(huì)保護(hù)的更好 】

public void *(android.view.View);

}

-keepclassmembers enum * {

public static **[] values();

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

}

-keep class * implements android.os.Parcelable {【保護(hù)指定的類文件和類的成員】

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

}

=====================================常見異常===================================

參考:

加入第三方j(luò)ar包之后常出現(xiàn)的幾個(gè)異常:

proguard returned with error code 1.See console

情況1:

Proguard returned with error code 1. See console

Error: C:/Documents (系統(tǒng)找不到指定文件)

后來發(fā)現(xiàn)是因?yàn)閷⒄麄€(gè)工程放到了桌面上,而桌面的目錄是C:/Documents and Settings/Administrator/桌面,在這里面有空格,而proguard進(jìn)行發(fā)編譯的時(shí)候是不允許有空格的

如果換了正確路徑還不好用的話,直接刪除proguard就好了

注意:SDK和程序路徑最好不要有空格符

情況2:

Proguard returned with error code 1. See console

異常:

java.lang.ArrayIndexOutOfBoundsException

解決辦法:將proguard.cfg中的"-dontpreverify"改成“-dontoptimize”

參考文章:

我把項(xiàng)目中生成的proguard文件夾(此時(shí)文件夾是空的)刪掉,然后再重新運(yùn)行項(xiàng)目,就OK 了。

情況3:

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] Proguard returned with error code 1. See console

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0] java.io.IOException: Can't read [proguard.ClassPathEntry@106082] (No such file or directory)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.InputReader.readInput(InputReader.java:230)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.InputReader.readInput(InputReader.java:200)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.InputReader.readInput(InputReader.java:178)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.InputReader.execute(InputReader.java:100)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.ProGuard.readInput(ProGuard.java:195)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.ProGuard.execute(ProGuard.java:78)

[2011-10-21 13:22:32 - ZMKSMarket_Build_v1.0]

at proguard.ProGuard.main(ProGuard.java:499)

拋出這樣的異常的原因是第三方j(luò)ar的引用路徑不對(duì),沒有找到這個(gè)需要忽略混淆的jar包。

========================官方文檔翻譯========================================

原文

混淆器(ProGuard)

在本文中(In this document)

Enabling ProGuard

Configuring ProGuard

Decoding Obfuscated Stack Traces

Debugging considerations for published applications

參見

ProGuard Manual ?

ProGuard ReTrace Manual ?

混淆器通過刪除從未用過的代碼和使用晦澀名字重命名類、字段和方法,對(duì)代碼進(jìn)行壓縮,優(yōu)化和混淆。結(jié)果是一個(gè)比較小的.apk文件,該文件比較難進(jìn)行逆向工程。因此,當(dāng)你的應(yīng)用程序?qū)Π踩舾校ㄒ蟾撸?,例如?dāng)你授權(quán)應(yīng)用程序的時(shí)候,混淆器是一種重要的保護(hù)手段。

混淆器被集成在android 構(gòu)建系統(tǒng)中,所以你不必手動(dòng)調(diào)用它。同時(shí)混淆器僅在發(fā)布模式下進(jìn)行構(gòu)建應(yīng)用程序的時(shí)候才會(huì)運(yùn)行起來,所以在調(diào)試模式下構(gòu)建程序時(shí),你不必處理混淆代碼。讓混淆器運(yùn)行起來是可選擇的,但是推薦選上。

這個(gè)文檔描述了怎樣啟用并配置混淆器,以及使用跟蹤(retrace)工具對(duì)混淆的堆棧跟蹤信息(stack traces)進(jìn)行解碼。

啟用混淆器Enabling ProGuard

當(dāng)你新建了一個(gè)Android工程之后,一個(gè)proguard.cfg文件會(huì)在工程的根目錄下自動(dòng)創(chuàng)建。這個(gè)文件定義了混淆器是怎樣優(yōu)化和混淆你的代碼的,所以懂得怎樣根據(jù)你的需要來定制是非常重要的。缺省的配置文件僅覆蓋到了通常情況,所以根據(jù)你的需求,很可能需要編輯它。接下來的內(nèi)容是關(guān)于通過定制混淆器配置文件來對(duì)混淆器配置。

為了讓啟用混淆器作為Ant或者Eclipse構(gòu)建過程中一部分,可以在project_root/default.properties文件中,設(shè)置proguard.config屬性。路徑可以是絕對(duì)路徑或者工程根目錄的相對(duì)路徑。

如果你讓proguard.cfg文件在缺省位置(工程的根目錄),你可以像這樣指定位置:

proguard.config=proguard.cfg

同樣,你可以把該文件放到任意的位置,并指定它的絕對(duì)路徑。

proguard.config=/path/to/proguard.cfg

當(dāng)你在發(fā)布模式下,或者通過運(yùn)行ant release,或者通過使用Eclipse中的Export Wizard構(gòu)建你的應(yīng)用程序的時(shí)候,構(gòu)建系統(tǒng)都會(huì)自動(dòng)地去檢查proguard.config屬性是否被設(shè)置了。如果被設(shè)置了,混淆器在把所有東西打包成.apk文件之前,自動(dòng)地對(duì)應(yīng)用程序字節(jié)碼進(jìn)行混淆處理。而在調(diào)試模式中構(gòu)建則不會(huì)調(diào)用混淆器,因?yàn)槟菢诱{(diào)試會(huì)更加繁重。

運(yùn)行混淆器之后輸出的文件有:

dump.txt

描述.apk包中所有class文件的內(nèi)部結(jié)構(gòu)。

mapping.txt

列出了源代碼與混淆后的類,方法和屬性名字之間的映射。這個(gè)文件對(duì)于在構(gòu)建之后得到的bug報(bào)告是有用的,因?yàn)樗鸦煜亩褩8櫺畔⒎捶g為源代碼中的類,方法和成員名字。更多信息,查看解碼混淆過的堆棧跟蹤信息。

seeds.txt

列出那些未混淆的類和成員。

usage.txt

列出從.apk中剝離的代碼。

這些文件放在以下目錄中:

注意:每次在發(fā)布模式下構(gòu)建時(shí),這些文件都會(huì)被最新的文件覆蓋。所以每次發(fā)布程序時(shí)候,為了反混淆來自構(gòu)建時(shí)產(chǎn)生的bug報(bào)告,請(qǐng)保存這些文件的一個(gè)拷貝。對(duì)于為什么要保存這些文件的重要性的更多信息,請(qǐng)查看程序發(fā)布調(diào)試注意事項(xiàng)。

混淆器配置(proguard config)

某些情況下,proguard.cfg文件的缺省配置可以滿足需求了。但是,對(duì)于混淆器來說,大多數(shù)情況做出正確的分析是困難的,并且它或許會(huì)刪除在它看來是無用的,但對(duì)于程序來說卻確實(shí)需要的代碼。一些例子如下:

一個(gè)僅引用于AndroidManifest.xml文件的類。

一個(gè)通過JNI調(diào)用的方法。

動(dòng)態(tài)引用的屬性和方法。

project_root/bin/proguard 當(dāng)你使用Ant時(shí)

project_root/proguard 當(dāng)你使用Eclipse時(shí)

解碼混淆過的堆棧跟蹤信息(Decoding Obfuscated Stack Traces)

當(dāng)混淆代碼并輸出了一個(gè)堆棧調(diào)試信息時(shí),這些方法名字是混淆過的,雖然可以進(jìn)行調(diào)試,但是調(diào)試變得困難。幸運(yùn)的是,每當(dāng)混淆器運(yùn)行時(shí)候,它都會(huì)輸出到文件project_root/bin/proguard/mapping.txt中,該文件包含了從原始類,方法和屬性名字到混淆后名字的映射。

Windows系統(tǒng)中retrace.bat腳本命令或者Linux和Mac OS X系統(tǒng)中retrace.sh腳本命令能把混淆后的堆棧調(diào)試信息轉(zhuǎn)換為可以理解的文件。它被放在sdk_root/tools/proguard/目錄下。運(yùn)行retrace工具的命令語法是:

retrace.bat|retrace.sh [-verbose] mapping.txt [stacktrace_file]

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt

如果你沒有為stracktrace_file指定值,那么retrace工具從標(biāo)準(zhǔn)輸入讀取。

已發(fā)布應(yīng)用程序的調(diào)試注意事項(xiàng)(Debugging considerations for published applications)

保存好每一個(gè)已發(fā)布給用戶的程序的mapping.txt文件。通過保存發(fā)布構(gòu)建版本的mapping.txt文件拷貝,確保當(dāng)用戶碰到bug,并把混淆后的堆棧調(diào)試跟蹤信息提交給你時(shí),你可以進(jìn)行調(diào)試從而修復(fù)問題。程序的mapping.txt文件在每次發(fā)布構(gòu)建時(shí)都會(huì)被覆蓋,所以你一定要注意保存正確的版本。

例如,假設(shè)你已經(jīng)發(fā)布了一個(gè)應(yīng)用程序并在繼續(xù)在新的版本中開發(fā)添加新的功能。接著你馬上啟動(dòng)混淆器并創(chuàng)建一個(gè)新的發(fā)布版本。該操作把mapping.txt文件覆蓋了。一個(gè)用戶提交了來自當(dāng)前發(fā)布版本的bug報(bào)告,該報(bào)告包含了堆棧調(diào)試信息。你再也不能對(duì)用戶的堆棧信息進(jìn)行調(diào)試了,因?yàn)檫@個(gè)對(duì)應(yīng)用戶本機(jī)上版本的mapping.txt文件不存在了。其他覆蓋mapping.txt文件的情況還有很多,所以對(duì)于每一個(gè)可能需要調(diào)試的版本,你都要確保有一份拷貝。

混淆器的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于混淆器 編譯器 區(qū)別、混淆器的信息別忘了在本站進(jìn)行查找喔。

幣安交易所app

幣安交易所app是全球頂尖的數(shù)字貨幣交易平臺(tái),提供幣幣交易和合約交易。

APP下載

Copyright © 格特瑞咨詢-貴陽抵押貸款公司 版權(quán)所有 | 黔ICP備19002813號(hào)

免責(zé)聲明:本站內(nèi)容僅用于學(xué)習(xí)參考,信息和圖片素材來源于互聯(lián)網(wǎng),如內(nèi)容侵權(quán)與違規(guī),請(qǐng)聯(lián)系我們進(jìn)行刪除,我們將在三個(gè)工作日內(nèi)處理。聯(lián)系郵箱:303555158#QQ.COM (把#換成@)