安卓应用开发环境

本文会持续更新,欢迎各位私信指正~~

安卓应用开发环境

安卓Studio IDE下载安装

安卓官网:https://developer.android.google.cn/studio
国内推荐:https://www.androiddevtools.cn/

安卓Gradle下载安装

  • 默认配置
    在这里插入图片描述
    Gradle配置文件:项目根/gradle/wrapper/gradle-wrapper.properties
    distributionBase:下载的Gradle压缩包解压后存储的主目录GRADLE_USER_HOME默认指向C:\Users…gradle
    distributionPath:相对于distributionBase的解压缩后的Gradle压缩包的路径
    zipStoreBase:同distributionBase,只不过是存放zip压缩包的
    zipStorePath:同distributionPath,只不过是存放zip压缩包的
    distributionUrl:设置下载的Gradle压缩包的服务器路径,以及决定了这个项目使用的gradle版本
    从distributionUrl地址下载的Gradle会保存在1处指定的目录中。
  • 手动配置
    Gradle设置页面
    1、在官网下载Gradle压缩包。
    1.1 Gradle下载地址
    Gradle网页:https://gradle.org/releases/
    官方Gradle服务:https://services.gradle.org/distributions/
    华为Gradle服务:https://mirrors.huaweicloud.com/gradle/
    腾讯Gradle服务:https://mirrors.cloud.tencent.com/gradle/
    阿里Gradle服务:https://mirrors.aliyun.com/macports/distfiles/gradle/
    2、自定义Gradle配置
    2.1) File>Settings…>搜索Gradle,找到如上图的Gradle配置页面。
    2.2) 1处为当前项目Gradle的存放路径。也就是从distributionUrl的服务器下载的Gradle工具,可以存储在1处Gradle user home指定的目录下,这个目录的路径就是distributionBase的值。
    2.3) 2处为当前项目中正在使用的Gradle的存放路径。也就是在这个项目中指定Gradle的使用路径。估计是考虑到多项目的问题,才这样分层设计。
    默认为项目根目录/gradle/wrapper中的’gradle-wrapper.properties’文件。也可以将2处修改为Specified location:<找到下载的Gradle路径>。
    3、Gradle常用场景
    3.1) 一般情况下,修改项目中的distributionUrl为大厂的代理地址就可以自动下载到1处,注意https后需要添加右斜线,如distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.0-bin.zip
    3.2) 如果由于网络等原因无法自动下载Gradle,就需要自已从网站下载gradle文件(如gradle-8.0-bin.zip),然后将Gradle配置文件中的distributionUrl修改为目标版本号,这里需要注意:将手动下载的Gradle包(不要解压缩)路径粘贴到1处路径\wrapper\dists\gradle-8.0-bin\ca5e32b…otwh\目录中即可,最后点击Try Again即完成手动安装。当然如果比较熟悉这些,只要AS能按照你自定义的路径,找到压缩包并自动解压出来,也可以随便放。
    3.3) 如果需要将项目从外网迁移到内网继续开发,内网无法下载Gradle中配置的依赖包,就需要将该目录下的所有文件全部迁移到内网环境中,因为此目录(默认2处路径)中包含所有同步sync下来的依赖包。
    3.4) 如果需要彻底修改1处的Gradle的默认下载路径,可以在IDE的安装路径下打开bin目录,找到studio64.exe.vmoptions文件并编辑,添加-Dgradle.user.home=D:\Win10_Programs\develop\Android\AndroidGradle后保存修改,最后重启AS即可生效。

安装 & 使用&构建问题

Android Studio无法下载SDK

  • 方案一:
  1. 使用在线ping工具,ping dl.google.com
    在线工具非常多,随便找一个https://ping.chinaz.com/dl.google.com,输入dl.google.com
    在这里插入图片描述
  2. 选择响应快的ip地址
    在这里插入图片描述
  3. 将选中的ip加入hosts文件末尾
120.253.255.97 dl.google.com    # 写入hosts文件末尾
系统host文件路径
windowsC:\Windows\System32\drives\etc\hosts
linux/etc/hosts
Mac/etc/hosts
Android/system/etc/hosts
iPhone/etc/hosts

说明:Linux、Mac 使用 Root 权限;iPhone、iPad 须越狱、Android 必须要 root。Windows:在 CMD 窗口输入ipconfig /flushdns刷新生效。Linux 命令:sudo nscd restart刷新生效。
此外,使用这种方式可以用于github。

20.205.243.166         github.com
185.199.109.153       github.io
  • 方案二
    通过配置国内代理访问国外仓库地址:https://services.gradle.org/distributions/gradle-x.x.x-all.zip
    打开File>Setting>Appearance & Behavior>System Settings>HTTP Proxy
    选择Auto-detect proxy configuration URL:,然后输入国内代理服务地址之一(参考下面的开源镜像站),点击Check connection,检查需要代理的目标地址是否能够链接成功。

    搜集到的一些开源镜像站:
    1、东软信息学院:mirrors.neusoft.edu.cn port:80
    2、北京化工大学:ubuntu.buct.edu.cn/ubuntu.buct.cn port:80
    3、中国科学院开源协会:mirrors.opencas.cn (mirrors.opencas.org/mirrors.opencas.ac.cn) port:80
    4、上海GDG镜像服务器:sdk.gdgshanghai.com port:8000
    5、电子科技大学:mirrors.dormforce.net port:80
名称地址
中国科学技术大学http://mirrors.ustc.edu.cn/
阿里https://mirrors.aliyun.com/android.googlesource.com/
腾讯https://mirrors.cloud.tencent.com/AndroidSDK/
清华大学https://mirrors.tuna.tsinghua.edu.cn/
搜狐http://mirrors.sohu.com/
网易http://mirrors.163.com/
北京交通大学http://mirror.bjtu.edu.cn
兰州大学http://mirror.lzu.edu.cn/
上海交通大学http://ftp.sjtu.edu.cn/
东北大学http://mirror.neu.edu.cn/
东软信息学院http://mirrors.neusoft.edu.cn/
重庆大学http://mirrors.cqu.edu.cn/

Could not find method dependencyResolutionManagement() for arguments…

最近新建工程无法运行,如题报错,修复办法:
1、修改build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
// buildscript里是gradle脚本执行所需依赖,分别是对应的maven库和插件
buildscript {
    repositories {   
        // google() //注释
        // mavenCentral() //注释
        maven { url 'https://plugins.gradle.org/m2/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/public' }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.1.2"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}


//allprojects里是项目本身需要的依赖
allprojects {
    repositories {
//        google()
//        jcenter()
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
        maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
    }
    tasks.withType(Javadoc) { // 新增
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
    }
}

plugins {
    id 'com.android.application' version '7.1.2' apply false
    id 'com.android.library' version '7.1.2' apply false
}

tasks.register('clean', Delete) {
    delete rootProject.buildDir
}

2、修改settings.gradle

pluginManagement {
    repositories {
        // google()  //注释
        // mavenCentral()  //注释
        // gradlePluginPortal()  //注释

        maven { url 'https://plugins.gradle.org/m2/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/public' }
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        // google() //注释
        // mavenCentral() //注释

        maven { url 'https://plugins.gradle.org/m2/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/public' }
    }
}

rootProject.name = "Demo"
include ':app'

常用Maven仓库

Maven全名叫Apache Maven,是一个软件项目管理和项目自动构建的工具。由Apache软件基金会开发。
jcenter()是由JFrog公司提供的Bintray中的Maven仓库。它是当前世界上最大的Java和Android开源软件构件仓库。
官方仓库:https://jcenter.bintray.com
国内仓库:https://maven.aliyun.com/repository/jcenter
jcenter是maven central的超集。也就是说maven central上有的库,jcenter上都有。但是jcenter上有的库,在maven central上不一定有。上传到jcenter上的库,可以一键发布到maven central上,且jcenter的界面更友好。jcenter通过CDN发送library,下载更快。

google()是Google官方的Maven仓库。
官方仓库:https://maven.google.com/web/index.html或https://maven.google.com
国内仓库:https://maven.aliyun.com/repository/google或者https://dl.google.com/dl/android/maven2

mavenCentral()是由sonatype.org维护的Maven仓库。任何人都可以将其项目的工件上传到Sonatype。
官方仓库:https://central.maven.org/maven2
国内仓库:https://maven.aliyun.com/repository/central

jitpack是由jitpack提供的仓库,主要用于检查代码、构建,并提供构建工具jar、aar。
官方仓库:https://jitpack.io
国内仓库:https://jitpack.io

public是一个jcenter和mavenCentral的聚合仓库
国内仓库:https://maven.aliyun.com/repository/public

gradle-plugin是Gradle插件仓库
官方仓库:https://plugins.gradle.org/m2
国内仓库:https://maven.aliyun.com/repository/gradle-plugin

最新版本IDE依赖仓库配置:
仅仅修改settings.gradle配置文件即可,build.gradle中无需修改。

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        google()
        mavenCentral()
    }
}

rootProject.name = "MyAutoTest"
include ':app'

IDE多开

有时候为了方便修改了默认设置,但某些场景下有需要多开IDE,记录一下设置过程:
File > Settings > Appearance & Behavior > System Settings
在设置页面中,Reopen projects on startup根据需要选择多开方式。
在这里插入图片描述

过滤默认关键字

package:mine

AS IDE build打印乱码

在工具栏打开Help>Edit Custom VM Options...,或者在AS工作区双击shift键,在搜索框中输入Edit Custom VM Options回车,打开studio64.exe.vmoptions文件,如果没有找到此文件,就点击create创建该文件,并添加-Dfile.encoding=UTF-8,这里根据实际情况修改编码格式,最后重新运行。
在这里插入图片描述

Read timed out

根因:一般是Gradle的问题。请检查gradle-wrapper.properties中的distributionUrl指定版本的Gradle有没有下载完成,找到正在使用的Gradle的安装路径:distributionBase指定的路径\wrapper\dists\gradle-x.x.x-x\dmo…k0deb\,检查此目录下有没有gradle-x.x.x-x.zip文件和它的大小是否正常。
解决方法:手动下载Gradle包,放在Gradle的安装路径下即可,不用解压。

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

切换到Terminal页面,在终端窗口执行gradlew compileDebug --stacktrace,或者gradle compileDebug --stacktrace

Using flatDir should be avoided because it doesn‘t support any meta-data formats.

升级了Android Studio和Gradle后,运行的时候会出现警告.
1、将项目中的目录添加进来。在app/build.gradle文件下增加sourceSets节点。
2、将编译时需要的.jar/.aar文件添加到依赖项中。

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

dependencies {
    implementation fileTree(include: ['*.?ar'], dir: 'libs')
    implementation files('libs/XXX.aar')
...
}

SSH变体’simple’不支持设置端口

ssh variant ‘simple’ does not support setting port
在ubuntu上git工具升级到2.42.0后出现报错不能拉代码。原因是git 2.16.x 以上的版本上 ssh variant 需要手动设置为 ssh。解决方法:

git config --global ssh.variant ssh

Error: “xxx” is not translated in “zh” (Chinese) [MissingTranslation]

方法1:在资源文件的根标签下添加属性tools:ignore="MissingTranslation

<resources  xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">

方法2:子标签属性添加属性translatable="false"

<string name="name"  translatable="false">Android</string>

cvc-complex-type.2.4.a

老项目用较新的IDE打开后,出现cvc-complex-type.2.4.a:发现了以元素’base-extension’开头的无效内容。应以’layoutlib’之一开头。
打开File>Project Structure>Project修改配置,参考下面的Gradle和Gradle Plugin版本对照表。

Gradle Version:5.4.1 +
Android Plugin Version:3.5.2 +

Failed to find Build Tools revison 30.0.2

原因:SDK中缺少必需的基本的核心的开发工具包30.0.2
工具包路径:在1处指定的路径下AndroidSdk目录中的\build-tools下,有各个API平台的对应的工具包。
解决办法:重新安装工具包
具体操作:在Android SDK的SDK Tools中,勾选Show Package Details展开显示所有子选项,先取消勾选有问题的工具包,点击Apply按钮后开始卸载有问题工具包;等Finish后在勾选这个工具包,点击Apply开始安装此包。
Android SDK Tools是一种开发工具集,主要用于Android平台上的应用程序开发。它提供了许多有用的工具,包括模拟器调试器编译器打包工具等等,但这些不是固定的,它们会随着谷歌的修改变化位置,比如说模拟器已经从工具包中迁移到外面,adb迁移到platform-tools目录中。
在这里插入图片描述

buildOutput.apkData must not be null

方案1:Build -> Clean Project,Build -> Make Project
方案2:Build -> Clean Project,Build -> Rebuild Project
方案3:动删除所有module自动生成的build文件夹

Android Studio无法找到CMake

Errror: Unable to find CMake with version:3.10.2 within folder:[…
解决办法:重新安装CMake工具包或者手动下载安装。
CMake官网下载地址:https://cmake.org/download/
有两种选择:源码版本和二进制版本,这里根据项目选择下载历史版本3.10.2(下载地址:https://cmake.org/files/

CMake was unable to find a build program corresponding to “Ninja”

使用cmake工具且选用Ninja作为编译工具编译时报错,找不到Ninja的程序
Ninja官网:https://ninja-build.org/
官网出问题或者无法下载时,可以使用源码编译后安装。

构建时insecure protocols

项目构建时报错:Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository ‘maven(XXX)’ to redirect to a secure protocol (like HTTPS) or allow insecure protocols.
原因:不兼容https请求协议,无法链接到服务器。

maven {
            allowInsecureProtocol true //添加这一行时注意格式或者将url中的http修改为https
            url 'http://xxx'
}

mips64el-linux-android

No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
下载ndk后找到缺失的添加:【新版本】https://developer.android.google.cn/ndk/downloads/
【旧版本】https://developer.android.google.cn/ndk/downloads/older_releases
https://github.com/android/ndk/wiki/Unsupported-Downloads
这里需要逐个下载找很麻烦,如果条件允许,推荐删除NDK后重新下载比较方便。

Error:No such property: GradleVersion for class: JetGradlePlugin

排查原因:首先检查项目根目录下的build.gradle文件中repositories中maven的格式和值设置是否正确,有没有不正常的文字出现。然后再检查Gradle版本和AGP的版本是不是对应,参考Gradle和Gradle Plugin版本对照表。

Gradle和JDK版本不一致问题

  • Failed to notify dependency resolution listener.
    ‘void org.gradle.api.artifacts.DependencySubstitutions$Substitution.with(org.gradle.api.artifacts.component.
    ComponentSelector)’
  • Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
  • Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not “opens java.io” to unnamed module

这种非项目代码的报错,很可能是gradle版本和JDK版本不一致导致的,如果使用的是openJDK8,也有可能会遇到问题,可以结合后面的AGP的版本一起调试。
项目使用gradle为编译工具,gradel和jdk版本对应关系如下:https://docs.gradle.org/8.3/userguide/compatibility.html

Java versionSupport for compiling/testing/… ​Support for running Gradle
8N/A2.0
9N/A4.3
10N/A4.7
11N/A5.0
12N/A5.4
13N/A6.0
14N/A6.3
156.76.7
167.07.0
177.37.3
187.57.5
197.67.6
208.18.3

Gradle和Gradle Plugin版本对照表

官网Android Gradle 插件版本说明:
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn
用法:根据项目的AGP版本,Gradle版本应选择不低于最低版本的版本。比如项目build.gradle版本是7.1.2,那Gradle的版本不能低于7.2。

插件版本所需的最低 Gradle 版本
8.18.0
8.08.0
7.47.5
7.37.4
7.27.3.3
7.17.2
7.07.0
4.2.0+6.7.1
3.5.05.4.1+
3.4.0 - 3.4.15.1.1+
3.3.0 - 3.3.24.10.1+
3.2.0 - 3.2.14.6+
3.0.0+4.1+
2.3.0+3.3+
2.1.3 - 2.2.32.14.1+
2.0.0 - 2.1.22.10 - 2.13
2.0.0 - 2.1.22.10 - 2.13
1.5.02.2.1 - 2.13
1.2.0 - 1.3.12.2.1 - 2.9
1.0.0 - 1.1.32.2.1 - 2.3

Could not create task ‘:app:processDebugResources’.

Could not create task ‘:app:processDebugResources’.
Cannot use @TaskAction annotation on method IncrementalTask.taskAction$gradle_core() because interface org.gradle.api.tasks.incremental.IncrementalTaskInputs is not a valid parameter to an action method.
一般是因为gradle的接口有变化导致使用时报异常,这是常态,只要降低一下gradle版本即可。

distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip

Cause: class org.gradle.internal.compiler.java.ClassNameCollector

完整错误:Cause: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0xaa9da18) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.code to unnamed module @0xaa9da18
原因是jdk版本问题,应当使用jdk1.8版本编译。
在这里插入图片描述

Android resource linking failed

完整错误:ERROR:: AAPT: error: resource style/Theme.Material3.DayNight.NoActionBar (aka com.wingtech.wtautotestai:style/Theme.Material3.DayNight.NoActionBar) not found.
error: resource style/Theme.Material3.DayNight.NoActionBar (aka com.wingtech.wtautotestai:style/Theme.Material3.DayNight.NoActionBar) not found.
error: failed linking references.
问题原因:在res/values/themes.xml等文件中删除或者替换掉有问题的主题,注意可能存在多个主题文件。
在这里插入图片描述

Execution failed for task ‘:app:packageDebug’.

完整错误:Execution failed for task ‘:app:packageDebug’.
com.android.ide.common.signing.KeytoolException: Failed to read key AndroidDebugKey from store “C:\Users\XXX.android\debug.keystore”: Invalid keystore format
解决办法:关闭所有AS后,找到debug.keystore和debug.keystore.lock文件删除即可。
在这里插入图片描述

Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]

使用adb命令安装apk时出现如此问题,原因可能是系统检测到apk为测试包或是项目依赖了测试版本的库。
解决方法:在gradle.properties里配置android.injected.testOnly=false后,Build>Clean Project>重新打包。或者使用adb install -t apk路径强制安装到目标设备。

基础知识

Android设备CPU支持

ABI应用程序二进制接口(Application Binary Interface),abi定义了二进制文件(尤其是.so文件)运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。即就是在Android 系统上,每一个CPU架构对应一个ABI:armeabi,armeabi-v7a,x86,mips,arm64- v8a,mips64,x86_64。
如果在build.gradle中对abiFilters进行配置,那么只有配置过的目录下的so文件才会被打包到apk安装包中。

ndk {
	// 指定要ndk需要编译的cpu架构(这样应用依赖包里的x86,x86_64等架构的so会被过滤掉)
	abiFilters 'armeabi-v7a', 'arm64-v8a'  
 }

arm64-v8a:64位ARM设备,目前主流版本(Google Play上架要求app必须适配arm64-v8a),AArch64
armeabi-v7a:32位ARM设备,一些老旧的手机。AArch32
armeabi/mips / mips64:NDK 以前支持 ARMv5 (armeabi) 以及 32 位和 64 位 MIPS,但NDK r17 已不再支持,极少用于手机可以忽略。

使用arm64-v8a架构的手机,运行app时jnilibs会去读取so库,先去arm64-v8a目录找:
如果不存在v8目录,就会去v7目录下找,若v7目录也不存在,就去armeabi目录找;
如果存在v8目录,且此目录下存在对应的so文件,当然就直接使用;
如果存在v8目录,但此目录下没有对应的so文件,会直接抛出异常并停止遍历查找,所以如果添加一些第三方sdk,注意so文件的类型,不要产生不全的文件夹。

ADB命令

常用ADB命令

> adb help //查看adb帮助文档
> adb devices //
> adb get-serialno //获取序列号 同adb devices显示的序列号
> adb reboot  //重启安卓设备
> adb kill-server/adb start-server  //设备未连接可尝试重启adb服务
> adb shell getprop ro.hw.country //查询hw手机发货地址
> adb shell getprop ro.build.version.emui  //查询hw手机EMUI版本
> adb shell getprop ro.product.cpu.abi   //查询芯片是32位还是64位
> adb shell getprop ro.product.manufacturer   //查询设备制造商
> adb shell getprop ro.product.brand  //查询手机品牌
> adb shell getprop ro.product.model  //查询手机内部代号
> adb shell getprop ro.product.name  //查询设备名称
> adb shell getprop ro.serialno  //查询设备序列号
> adb shell getprop ro.build.version.release //查询手机Android系统版本
> adb shell am monitor  //获取包名:先执行此命令后启动APP
> adb shell dumpsys window | findstr mCurrentFocus  //获取包名:先启动APP后执行此命令
> adb shell dumpsys package #包信息Package Information
> aapt dump badging apk本机路径  //获取计算机本机(未安装)存储的APK包名
> aapt dump xmltree apk本机路径 AndroidManifest.xml | findstr “package”  //获取计算机本机(未安装)存储的APK包名
> adb -s 设备名 install apk本机路径  //计算机连接多个设备,安装应用到指定的设备
> adb install test.apk          //安装应用
> adb install -d test.apk       //允许安装低版本的应用
> adb install -r test.apk       //替换已存在的应用程序,也就是说强制安装
> adb install -s test.apk       //安装应用apk到sd卡
> adb install -t test.apk       //允许安装的应用是测试包
> adb install -g test.apk       //为应用程序授予所有运行时的权限
> adb uninstall <应用包名>      //卸载应用
> adb uninstall -k <应用包名>   //卸载应用,但保留数据和缓存文件
> adb shell pm list packages    //列出手机装的所有app的包名
> adb shell pm path <应用包名>  //查看应用apk源文件存储路径
> adb shell pm list packages -3 //获取所有已安装的第三方应用包名
> adb shell pm clear <应用包名>  //清除指定应用的数据与缓存
> adb shell am force-stop <应用包名>  //强制停止应用
> adb logcat | find "<应用包名>"  //抓取指定应用的日志
> adb logcat -c //清除log 缓存

ADB获取应用

  1. 获取应用包名
    1.1 查看安卓设备上所有应用的包名:
    adb shell pm list package
    1.2 查看安卓设备上当前运行的应用包名
    adb shell dumpsys window | findstr mCurrentFocus
    1.3 获取当前正在活动的页面activity
    adb shell dumpsys activity|findstr “realActivity”
    1.4 获取当前窗口显示的页面activity
    adb shell dumpsys window | findstr mCurrent
  2. 根据要导出的包名,查看app安装路径
    adb shell pm path <应用包名>
  3. 导出应用的安装文件apk到pc端
    adb pull <apk路径> <pc路径>

ADB无线WIFI连接

  • 1、用USB数据线连接手机,打开USB调试功能。
    如果安卓设备有“无线调试”选项就打开此选项;如果没有“无线调试”选项如华为手机,就打开“仅充电模式下允许ADB调试”选项。·
    adb devices // 检查USB连接,查询设备名
    在这里插入图片描述
  • 2、将手机和计算机处于同一局域网中,通过计算机指定安卓设备的tcpip端口号。注意:这里只要在同一局域网就行,可以满足特殊场景下的连接调试。
    adb tcpip 5588 //开启默认设备的adb无线模式服务
    adb -s 设备名 tcpip 5588 //开启指定设备的无线模式,这里可以开启多个设备。
    开启无线模式服务后,此时可以断开USB数据线.
  • 3、无线连接手机设备。
    方式1:查找设备的IPv4地址(如192.168.0.7),可以使用命令
    adb shell ifconfig | findstr "inet addr" //linux上将findstr换成grep
    即可输出:inet addr:192.168.0.7,也可以在手机上查看。
    方式2:使用如下命令连接设备。
    adb connect 192.168.0.7:5588
    可以同时无线连接多台设备。
  • 4、断开无线连接
    一般情况下,断开WIFI后再重连同一WIFI,等几秒会自动连接到移动设备。
    当不需要连接设备时,可以使用如下命令:
    adb disconnect 192.168.0.7:5588 //或者用adb usb命令断开,或者重启手机
  • 另外,USB连接模式和无线调试模式
    adb usb // restarts the adbd daemon listening on USB
    adb tcpip 端口号 //restarts the adbd daemon listening on TCP on the specified port
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值