Android 人们口中的sdcard和android开发中的sdcard的区别(自理解)

现在的android手机很多都不支持在手机上再插一张sdcard了,就是那种上面印着多少GB的小黑卡,我查了很多资料发现,手机自带的内存(其中分为两部分:系统所占内存 + 手机除去系统所占内存剩余的内存,其中“手机除去系统所占内存剩余的内存”被安卓默认为:手机自带sdcard)

String state = Environment.getExternalStorageState();

File path=Environment.getDataDirectory();

也就是说这两种获取到的内存剩余容量和大小都是一样的,也就是说存储块和存储大小的乘积是一样的。

当然这是在模拟器上进行的修改,因为很多厂商都自行修改了android的系统,所以等到实际开发的时候还是应该具体问题具体分析的。

学习伴随着不断的记录,越积越多,加油!

<think>嗯,用户遇到了adb安装微信APK时提示"InvalidAPKfile"的错误。参考了用户提供的三份资料,特别是资料[3]展示的完整调试过程很有价值。资料[1]资料[7]都提到了中文路径的问题,不过微信APK默认名称应该是英文。资料[3]的案例很有意思,用户用adbshell安装系统路径失败,但改用adbinstall自动传输却成功了,这说明可能不是APK本身的问题。用户强调是微信APK,需要重点考虑几个特殊因素:首先是微信安装包较大(通常200MB+),容易出现传输中断;其次微信有Tinker热更新机制,签名校验比较严格;另外用户可能连接了多个设备。准备从基本检查开始建立决路径:先排除文件损坏路径问题,这是最常见的两类错误。特别提醒使用绝对路径时目录分隔符的兼容性,Windows的""需要替换为"/"。如果基础方案无效,再延伸思考设备空间、USB调试等深层原因,最后补充微信专用的处理技巧。用户可能急于决问题,所以决方案需要保持清晰编号,但实际处理时要强调先后逻辑:先做简单的路径修改传输测试,再尝试复杂操作(如重新下载)。最后留出反馈渠道很关键,避免用户反复尝试失败。</think> 好的,我们来系统分析一下 `adb install` 命令安装微信 APK 时出现 `Invalid APK file` 错误的原因及决方案。结合你提供的引用信息常见场景,以下是导致该错误的可能原因及对应的决方法: ## 错误原因及决方案 1. **APK 文件路径问题 (最常见):** * **原因:** `adb install` 命令无法正确识别文件路径。这通常发生在: * 路径包含 **中文字符**。`adb` 对非英文字符(尤其是 Windows 路径下的中文目录名或文件名)支持很差。 * 路径包含 **空格** 或 **特殊符号** (`!`, `@`, `$`, `#`, `&`, `()` 等)。 * 使用了错误的 **路径分隔符** (尤其在 Windows 上使用反斜杠 `\`)。 * 路径**不存在**或拼写错误。 * **驱动盘符问题 (Win)**:某些配置下,adb可能无法直接访问非系统盘(如D:、E:)。 * **决方案:** * **重命名 APK:** 将微信 APK 文件重命名为简单的 **纯英文小写** 文件名(例如:`weixin.apk`)。 * **移动 APK:** 将 APK 文件移动到**纯英文**目录下,例如 `C:\weixin.apk`。**避免**使用 `C:\Users\张三\Downloads\` 这类路径。 * **修改路径命令:** 尝试将文件拖到命令窗口自动生成路径时请注意检查是否有空格或中文。最好 **手动输入简单路径**。 * **使用正斜杠 (Win):** 在 Windows 命令提示符或 PowerShell 中,使用正斜杠 `/` 替代反斜杠 `\`: ```bash adb install C:/weixin.apk ``` * **使用相对路径 (临时目录):** 将 APK 复制到 ADB 所在目录(通常是 `platform-tools`),然后使用相对路径: ```bash adb install weixin.apk ``` * **推送到设备再安装 (引用[3]方法):** 1. 将 APK 推送到设备的临时目录:`adb push C:\path\to\weixin.apk /data/local/tmp/` 2. 连接到设备的 shell:`adb shell` 3. 安装推送的文件:`pm install /data/local/tmp/weixin.apk` 4. 退出 shell:`exit` 2. **APK 文件损坏或下载不完整:** * **原因:** 从网络下载的 APK 文件可能在传输过程中损坏,或者本身就是无效的安装包(非标准 APK)。 * **决方案:** * **重新下载 APK:** 从 **官方可信来源** 重新下载微信 APK(微信官网或应用商店)。 * **验证文件:** 如果提供 MD5 或 SHA 校验值,下载后校验一下是否匹配。 * **手动安装测试:** 尝试在手机的文件管理器中直接点击下载的 APK 文件安装,看是否成功或提示文件损坏。如果手动安装也失败,基本确定是文件问题。 3. **ADB 版本过旧或自身问题:** * **原因:** 使用的 `adb` 工具版本太老,无法识别较新的 APK 格式。 * **决方案:** * **更新 SDK Platform-Tools:** 前往 [Android SDK Platform-Tools 官网](https://developer.android.com/studio/releases/platform-tools) 下载最新版本并替换掉你当前的 `adb` 等工具(`adb.exe`, `AdbWinApi.dll`, `AdbWinUsbApi.dll` 等)。 * **确保 ADB 路径正确:** 确认你运行的是新更新的 `adb`。检查版本 `adb version`。 4. **设备存储空间不足 (引用[3]):** * **原因:** `/data/local/tmp` 或其他相关路径剩余空间不足以存放临时的 APK 副本(`push` 或 `install` 时都会产生)。 * **决方案:** * 清理手机内存(尤其是内部存储空间)。 * 如果支持,尝试将应用安装到外部存储 (但微信通常建议安装在内部存储)。 5. **USB 连接不稳定或调试未授权:** * **原因:** 数据传输过程中断导致 APK 推送不完整,或设备未授权当前电脑进行 USB 调试。 * **决方案:** * 重新插拔 USB 线,使用原装数据线并连接到机箱后置 USB 口。 * 检查设备屏幕是否弹出 **“允许 USB 调试吗?”** 的请求,勾选 **“总是允许”** 并确认。 * 重启 `adb` 服务: `adb kill-server` 然后 `adb start-server`。 * 重启手机电脑。 6. **非标准 APK 或非常规安装:** * **原因:** 尝试安装 Split APKs (APKs), Instant App APKs,或者签名不完整的 APK。 * **决方案 (对普通用户较少见):** * 微信 APK 通常是单一安装包。确认你下载的是完整的单一 APK 文件。 * 使用 `adb install-multiple` 安装 Split APKs(普通用户一般不会用到)。 * 确保 APK 签名有效。 ## 决步骤推荐 (按优先级顺序尝试) 1. **首选:决路径问题** * 将 `weixin.apk` 移动到 `C:\` (Win) 或 `/tmp/` (Linux/Mac)。 * 在命令行中使用:`adb install C:\weixin.apk` (Win, 用 `/` 也可以)。 2. **其次:推送到设备安装** * `adb push C:\weixin.apk /data/local/tmp/` * `adb shell` * `pm install /data/local/tmp/weixin.apk` * `exit` 3. **检查文件:** 如果上述方法报错,**重新下载** APK,并**尝试手动在手机上安装**看是否提示文件损坏。 4. **更新工具:** 下载最新的 `platform-tools` 替换你的 ADB。 5. **检查连接授权:** 确保 USB 线稳定,设备已授权 USB 调试,重启 adb (`adb kill-server && adb start-server`)。 6. **清理存储空间:** 删除设备上不必要的文件释放空间。 ## 重点提示 * **中文路径或文件名是 Windows 下导致 `Invalid APK file` `INSTALL_FAILED_INVALID_URI` 的头号原因**[^1][^2][^7]。务必**简化路径文件名为纯英文**。 * **文件损坏也很常见**。通过手动在手机文件管理器安装可以快速验证文件是否有效[^2]。 * `adb push + pm install` 的组合方案(如引用[3]所展示)是规避路径问题的有效方法[^3]。 如果你按照以上步骤尝试后问题依旧存在,请将 **具体执行的命令** **完整的错误信息输出** 发给我,以便进一步诊断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值