安卓应用

[English]


1. 为什么 APP 无法扫描到 Wi-Fi 或者蓝牙信号?

  • Android 6.0 之后的系统需要申请位置权限 (android.permission. ACCESS_FINE_LOCATION)。

  • Android 9.0 之后的系统除申请位置权限外,还需要打开 GPS。

  • Android 12.0 之后的系统需要申请扫描权限 (android.permission. BLUETOOTH_SCAN)。

更新时间:2022.4.20


2. 为什么扫描 Wi-Fi 和蓝牙信号需要位置权限?

  • APP 有可能通过解析 Wi-Fi 和蓝牙信息来获取您当前所在的位置,Google 为了您的隐私考虑,对 Android 6.0 之后的相关 API 加入了位置权限需求。

更新时间:2022.4.20


3. APP 需要继承第三方库中的 Application 类,但如需同时继承 MultiDexApplication 怎么办?

  • 在您的 Application 类的 onCreate() 方法中调用 MultiDex.install(this) 即可。

更新时间:2022.4.20


4. APP 发送 http 请求报错是为什么?

  • Android 高版本中需要使用加密请求例如 https,若您依然需要发送 http 请求,在 AndroidMenifest.xml 中 application 标签下添加 android:usesCleartextTraffic=”true” 即可。

更新时间:2022.4.20


5. 怎么把 APP 的签名文件迁移到 pkcs12?

  • keytool -importkeystore -srckeystore 源文件 -destkeystore 生成文件 -deststoretype pkcs12

更新时间:2022.4.20


6. 在不安装 Android Studio 的情况下怎么查看 APP 的日志输出?

  1. 安装 adb 工具。

  2. 在命令终端执行下述命令。

pid=`adb shell ps | grep 包名 | awk '{print $2}'`
adb logcat | grep --color=auto $pid

更新时间:2022.4.20


7. 如何在 Module 的 BuildConfig 中添加模块版本信息?

  • 最新的 Android Studio 编译 Module 已经不会自动添加 VERSION_NAME 信息了,若需要该信息,可以在 Module 对应的 build.gradle 中添加以下命令:

android {
    defaultConfig {
        buildConfigField "String", "VERSION_NAME", "\"YOUR_MODULE_VERSION\""
    }
}

更新时间:2022.4.20