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

一、debug

建立远程调试任务

image.png

image.png

image.pngimage.png

运行下面的命令

gradle assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true

./gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true

image.png

但是我停在这很久也没动,暂时先不管了,等回头再研究。

二、—stacktrace

可以看到详细的错误信息

./gradlew compileDebug —stacktrace

三、输出 log

通过输出一个TXT文件,来记录信息。比如我们字符串加密的记录。
开始用 start ,然后不断ouputInfo ,最后end。就好了。

  1. final class StringFogMappingPrinter {
  2. private File mMappingFile;
  3. private BufferedWriter mWriter;
  4. private String mCurrentClassName;
  5. /* package */ StringFogMappingPrinter(File mappingFile) {
  6. this.mMappingFile = mappingFile;
  7. }
  8. /* package */ void startMappingOutput() {
  9. try {
  10. if (mMappingFile.exists() && !mMappingFile.delete()) {
  11. throw new IOException();
  12. }
  13. File dir = mMappingFile.getParentFile();
  14. if (dir.exists() || dir.mkdirs()) {
  15. mWriter = new BufferedWriter(new FileWriter(mMappingFile));
  16. } else {
  17. throw new IOException();
  18. }
  19. } catch (IOException e) {
  20. Log.e("Create stringmask mapping file failed.");
  21. }
  22. }
  23. /* package */ void ouputInfo(String key, String implementation) {
  24. try {
  25. mWriter.write("stringmask key : " + key);
  26. mWriter.newLine();
  27. mWriter.write("stringmask impl: " + implementation);
  28. mWriter.newLine();
  29. } catch (IOException e) {
  30. // Ignore
  31. }
  32. }
  33. /* package */ void output(String className, String originValue, String encryptValue) {
  34. if (TextUtils.isEmpty(className)) {
  35. return;
  36. }
  37. try {
  38. if (!className.equals(mCurrentClassName)) {
  39. mWriter.newLine();
  40. mWriter.write("[" + className + "]");
  41. mWriter.newLine();
  42. mCurrentClassName = className;
  43. }
  44. mWriter.write(originValue + " -> " + encryptValue);
  45. mWriter.newLine();
  46. } catch (IOException e) {
  47. // Ignore
  48. }
  49. }
  50. /* package */ void endMappingOutput() {
  51. if (mWriter != null) {
  52. IOUtils.closeQuietly(mWriter);
  53. }
  54. }
  55. }

image.png