線上APP出現(xiàn)BUG問題,但是BUG信息是混淆后的類文件路徑,不利于BUG原因的查詢和解決,首先我們要做的就是保存對(duì)應(yīng)線上版本的混淆Mapping文件。
//針對(duì)多渠道,打包后自動(dòng)將對(duì)應(yīng)APP和Mapping文件備份,防止重復(fù)打包覆蓋。(放在APP下的build.gradle)
/執(zhí)行productFlavors 同名任務(wù)的時(shí)候,就會(huì)執(zhí)行
tasks.whenTaskAdded { task ->
android.productFlavors.all { flavor ->
if (task.name.equalsIgnoreCase("assemble" + flavor.name)) {
task.doLast {
copyFile();
}
}
}
}
void copyFile(){
String desktopDir = "$rootDir"
println(desktopDir)
def dayTime = new java.text.SimpleDateFormat("yy_MM_dd").format(new Date())
def secondTime = new java.text.SimpleDateFormat("HH-mm-ss").format(new Date())
File cacheFile = new File(desktopDir + java.io.File.separator + "cache" + java.io.File.separator + dayTime);
if (!cacheFile.exists()) {
cacheFile.mkdirs();
}
android.productFlavors.all { flavorTow ->
copy {
from "$buildDir" + '/outputs/apk'
//注意通配符
include "*" + flavorTow.name + "*.apk"
into cacheFile.getPath()
rename {
flavorTow.name + android.defaultConfig.versionName + "_" + secondTime + ".apk"
}
}
copy {
from "$buildDir" + '/outputs/mapping/' + flavorTow.name + "/release"
include "mapping.txt"
into cacheFile.getPath()
rename {
flavorTow.name + android.defaultConfig.versionName + "_" + secondTime + ".txt"
}
}
}
}
打開Studio 內(nèi)置的Proguard,還原錯(cuò)誤信息
調(diào)用UI界面工具
***MacBook-Pro:****ketan$/Users/**/Library/Android/sdk/tools/proguard/bin/proguardgui.sh
//采用命令
retrace.bat -verbose mapping.txt stacktrace.txt > out.txt