cra*_*ark 3 debugging android release apk android-studio
问题
我正在使用一个 Android 应用程序,其中用户数据被保存到由 SQLCipher 加密的数据库中。Android 密钥库用于存储密钥。发生了特定于设备的问题(可能与正在保存的数据有关)。我可能会接触到遇到此问题的设备,但是,据我所知,我可以从该设备中提取的信息非常有限。有什么可能的方法可以以某种方式将调试器附加到加载到设备上的当前 APK 上,或者以某种方式将其替换为可调试版本而不丢失用户数据?
该设备正在运行 android 6.0.1,我正在使用 Android Studio
我在调试发布版 APK 时发现的内容
当我连接装有从 PlayStore 下载的 APK 的 Android 平板电脑时,我能看到的唯一数据是使用 logcat (Android Studio) 的应用程序特定调试日志。当我尝试调试应用程序时,Android Studio 告诉我先卸载现有的 APK,然后才能加载可调试的 APK。但是,这将删除现有数据,这是我不希望发生的。
我试图解决我原来的问题的其他事情
尝试让特定用户向我发送他们有问题的数据库
这将不起作用,因为我无权访问私钥,因此即使我获得了文件,我也无法解密数据。
尝试让特定用户向我发送应用日志
这将不起作用,因为从 Android 4.1 开始,特定于应用程序的日志仅对那些特定应用程序是私有的(除非设备已植根,有问题的设备不是,并且植根它不是真正的选项)。这实际上导致了另一个我有轻微相关的问题。为什么我可以在 logcat 中看到特定于应用程序的日志,即使它们在通过 CatLog 等应用程序查看无根设备上的日志时不可见?
您可以通过简单地使用您的发布密钥而不是调试密钥进行签名并确保设置 Debug 标志来安装可调试的 APK。我总是这样做,因为不断卸载和重新安装不同版本变得很痛苦,尤其是在具有不同调试密钥库的不同计算机之间进行交换时。
安装使用您的发布密钥签名的 APK 只会执行就地升级,即使设置了可调试标志,所有应用程序数据也不会受到影响。
例如
buildTypes {
debug {
minifyEnabled false
debuggable true
signingConfig signingConfigs.release
}
release {
minifyEnabled false
signingConfig signingConfigs.release
}
}
Run Code Online (Sandbox Code Playgroud)
只要日志是由您自己的应用程序生成的,您就可以从用户设备获取日志。您自己的进程可以访问您自己的应用程序日志条目。
| 归档时间: |
|
| 查看次数: |
5662 次 |
| 最近记录: |