我们现在编写插件的时候,肯定需要进行调试的,不可能一下子就写出一个完美可用的插件。那么我们一般调试的方法有 debug 、输出 log text,查看 —stacktrace。
一、debug
建立远程调试任务




运行下面的命令
gradle assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true
./gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true

二、—stacktrace
可以看到详细的错误信息
./gradlew compileDebug —stacktrace
三、输出 log
通过输出一个TXT文件,来记录信息。比如我们字符串加密的记录。
开始用 start ,然后不断ouputInfo ,最后end。就好了。
final class StringFogMappingPrinter {private File mMappingFile;private BufferedWriter mWriter;private String mCurrentClassName;/* package */ StringFogMappingPrinter(File mappingFile) {this.mMappingFile = mappingFile;}/* package */ void startMappingOutput() {try {if (mMappingFile.exists() && !mMappingFile.delete()) {throw new IOException();}File dir = mMappingFile.getParentFile();if (dir.exists() || dir.mkdirs()) {mWriter = new BufferedWriter(new FileWriter(mMappingFile));} else {throw new IOException();}} catch (IOException e) {Log.e("Create stringmask mapping file failed.");}}/* package */ void ouputInfo(String key, String implementation) {try {mWriter.write("stringmask key : " + key);mWriter.newLine();mWriter.write("stringmask impl: " + implementation);mWriter.newLine();} catch (IOException e) {// Ignore}}/* package */ void output(String className, String originValue, String encryptValue) {if (TextUtils.isEmpty(className)) {return;}try {if (!className.equals(mCurrentClassName)) {mWriter.newLine();mWriter.write("[" + className + "]");mWriter.newLine();mCurrentClassName = className;}mWriter.write(originValue + " -> " + encryptValue);mWriter.newLine();} catch (IOException e) {// Ignore}}/* package */ void endMappingOutput() {if (mWriter != null) {IOUtils.closeQuietly(mWriter);}}}

