android 混淆后的代码还原

需求:有崩溃日志但是由于是release的包的代码已被混淆,因此还原,方便查看日志定位问题。
https://blog.csdn.net/u010052279/article/details/72625911
cd C:\Users\Orion\AppData\Local\Android\Sdk\tools\proguard\bin
retrace.bat -verbose mapping.txt stacktrace.txt > out.txt

其中mapping.txt 是我们打release包build/output/maping/目录下生成的
stacktrace.txt 为我们的混淆后的崩溃日志
out.txt 就是还原后的崩溃栈


项目中集成了Bugly把map文件输出到项目中out目录下,由于发包都是使用jenkins打包的,那么我们可以在编译平台下配置一下信息,那么这些map文件就被上传值腾讯Bugly符号配置里,这样如果有崩溃日志就能快速还原。

项目里的根目录配置下,可以看下这个:https://www.cnblogs.com/xinmengwuheng/p/5797048.html

 rootProject.ext.bugly_appid = [
            translator: "",
     

            ]
    rootProject.ext.bugly_appkey = [
            translator: "",
    ]

然后吧集成了Bugly的app的modle下的gradle写下:

android.applicationVariants.all { variant ->
    variant.assemble.doLast {
        rename_and_moveout_apk("translator", variant)
        if (variant.getBuildType().isMinifyEnabled()) {
            rename_and_moveout_mapping("translator", variant)
            createBuglyConfigFile("translator", rootProject.ext.bugly_appkey["translator"], rootProject.ext.bugly_appid["translator"], variant.mergedFlavor.applicationId, rootProject.ext.versionName)
        }
    }
}

这样map文件就到我们项目目录out文件下去了,然后再在jenkins下找到项目目录在构建那里如下配置上传符号表:
#cd out
#先只上传 translator的配置

#bugly_config_file=$WORKSPACE/RobotKid/robot/out/translator_bugly_config.txt
#appId=`sed '/^appId=/!d;s/.*=//' $bugly_config_file`
#appKey=`sed '/^appKey=/!d;s/.*=//' $bugly_config_file`
#versionName=`sed '/^versionName=/!d;s/.*=//' $bugly_config_file`
#bundleId=`sed '/^bundleId=/!d;s/.*=//' $bugly_config_file`
#productVersion=`sed '/^productVersion=/!d;s/.*=//' $bugly_config_file`
#fileName=`sed '/^fileName=/!d;s/.*=//' $bugly_config_file`
#file=`sed '/^file=/!d;s/.*=//' $bugly_config_file`

#curl -k "https://api.bugly.qq.com/openapi/file/upload/symbol?app_key="$appKey"&app_id="$appId  --form "api_version=1" --form "app_id="$appId --form "app_key="$appKey --form "symbolType=1"  --form "bundleId="$bundleId --form "productVersion="$productVersion --form "channel=0" --form "fileName="$fileName --form "file=@"$file --verbose

这样在build目录下的map文件就被上传至腾讯bugly下了,这样线上出问题了,找到日志了,然后找到符号表,就可以还原崩溃栈信息额

你可能感兴趣的:(代码版本控制)