美文网首页
Android 调试小技巧

Android 调试小技巧

作者: 音视频直播技术专家 | 来源:发表于2018-01-04 14:55 被阅读165次

最近在调试公司中的Android项目时,遇到的一些问题,及时做个总结,以免后面再遇到这类问题时再浪费时间。

高低版本 API 兼容

  • 在高版本 API 方法前加 @TargetApi(API号)。

  • 在代码上对用版本判断。

    if(Build.VERSION.SDK_INT >= SDK版本号){
        ...
    }else{
        ...
    }
    

在 native lib 中如何单步追踪代码

  • 在 app/build.gradle 中的 dependency 模块中增加下面的编译依赖。

    不过现在好像不是必须的了。

    ...
    debugCompile project(path: ':your-lib', configuration: 'debug')
    releaseCompile project(path: ':your-lib', configuration: 'release')
    ...
    
  • 在lib(s)/build.gradle 中打开 publishNonDefault。

    android {
        publishNonDefault  true
    }
    

在工程中引入Module(其它工程)

  • 先将引用的Module(工程)的 lib(s)/build.gradl 中的第一句修改为:

    apply plugin 'com.android.library'
    
  • 删除 lib(s)/build.gradl 中 android/defaultConfig/applicationId 这项配置。

  • 在 settings.gradle 中增加 incldue 指令。

    include ':ModuleName'
    
  • 如果该 Module 没在你的项目的目录下(也就是与App同一级目录),那么需要指定该Module的地址。

    project(':ModuleName').projectDir = new File(settingsDir, 'path/ModuleName')
    

    当然,你也可以直接将该项目手工拷贝到你项目的目录下,让它与 App 在同一级。

  • 在 app/build.gradle中的 dependencies 里增加编译Module的指令。

    compile project(':ModuleName')
    

在工程中引用jar包

  • 将所有需要引用的 jar 包存放到一个位置。

  • 在 App/build.gradle 文件中的 dependencies 里增加下面的指令。

    comple fileTree(dir:'path/jarDir', include:['*.jar'])
    

在工程中引用 so 库

  • 将所有需要引用的 so 文件存放到一个位置。

  • 在 App/build.gradle 文件中的 android 里增加下面的指令。

    sourceSets {
      main {
         jniLibs.srcDirs = ['../../../libs/cloudrtc']
      }
    }
    

反编译 jar

  • Class File Reader下载 jar包。
  • 执行下面的语句就可以将反编译的代码输出到 java 目录下了。
      java -jar ../../cfr_0_123.jar sdk.jar --outputdir ./java --caseinsensitivefs true   
    

在Android 中查找日志

  • 将手机通过 USB 与电脑连接。
  • 执行下面命令,登陆到Android 手机上。
    adb shell
    
  • 使用 busybox 工具
    busybox tail -f xxx.log
    

在Android7.0之后,使用第三方 NDK受到限制

  • 临时解决办法是,仍然使用老版本的 sdk。也就是将app目录下的
    build.gradle文件中的 targetSdkVersion和compileSdkVersion都设置为 23。如下所示:
      compileSdkVersion 23
      buildToolsVersion '26.0.0'
    
      defaultConfig {
          applicationId "io.agora.openlive"
          minSdkVersion 16 // JELLY_BEAN
          targetSdkVersion 23
          ...
     }
    
  • 通过个面的修改有可能报错,如果是 aapt2的错误,可以修改gradle.properties,在该文件中添加下在的配置即可解决aapt2问题。
    android.enableAapt2=false
    
  • 还可能出现配置冲突。如 app 目录中 build.gradle文件中的 dependencies里的配置项有可能有冲突。可以按照 Android stuido里的提示信息进行修改即可。

OPPO手机无法通过 AS 安装包问题

现象是报 [INSTALL_FAILED_TEST_ONLY ] 错误。解决办法是在 gradle.properties 文件中添加 android.injected.testOnly=false 配置。

APK Crash后,默认被重新拉起,日志被冲没

解决办法是每次启动时,都生成一个新的日志。即生成日志的名子通过随机数生成。

安装的包内容是老的

CMake编译时内部会使用缓存,所以很容易出现这种情况。可以通过删除Native项目中的 build目录,主动让 CMake重新编译。

有些 Android机没有 vi怎么办

可以写一个脚本,通过 adb shell pull命令将日志文件拉到本地分析问题。

结束语

不断更新中 ...

相关文章

  • Android 调试小技巧

    最近在调试公司中的Android项目时,遇到的一些问题,及时做个总结,以免后面再遇到这类问题时再浪费时间。 高低版...

  • Android调试小技巧

    当我们想要用attach方式调试某个应用时,如何做到在程序启动时就下断点?这是一个悖论:你要先启动程序,才能获取p...

  • Flutter开发小技巧

    这篇文章会持续更新,记录开发中遇到的小技巧 1.断点调试小技巧 方式一: Android studio 小虫子de...

  • Android开发

    Android Studio你不知道的调试技巧 Android TextView使用HTML处理字体样式、显示图片...

  • 自己动手编译Android源码(超详细)

    在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译...

  • 自己动手编译Android源码(超详细)

    在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译...

  • 利用 Chrome 开发者工具远程调试 Android 中的原生

    之前写过一篇关于 Android Studio 断点调试技巧 的文章,但都是针对 Native 代码的调试,对于 ...

  • android adb 调试技巧

    参考链接 超详细的dubug教程 Android Studio 调试技巧 Android中开发需要的高效助推的命令...

  • Android Studio调试小技巧(三)

    50. 分析传入数据流(Analyze data flow to here) 描述:这个操作将会根据当前选中的变量...

  • Android调试技巧

    Android调试技巧汇总 Android开发过程中,定位是解决疑难问题的第一步,Debug的能力往往反映一个开发...

网友评论

      本文标题:Android 调试小技巧

      本文链接:https://www.haomeiwen.com/subject/guurnxtx.html