android - Google 如何识别 Android 项目/开发者
问题描述
我只是想知道 Google 如何识别项目(包名称或代码除外)或 Android 应用程序的开发人员。我认为您的 Android Studio 中有一些数据被插入到 apk 中。你知道如何编辑这些数据吗?
如果您使用较旧的 api 构建,我看到 apk 中有一个文件 build-data.properties。在这个文件中有一些数据,如 build.time、build.build_id 或 build.timestamp。你知道如何从 Android Studio 更改这些数据吗?
谢谢
解决方案
谷歌通过三个属性来识别一个项目:
packageName
来自 AndroidManifest.xml- 使用证书+RSA 密钥对 APK 文件或 appBunlde 进行签名(使用哪个密钥库和签名密钥通常在 Android Studio 项目的 gradle 配置中表示)。要更改签名,您必须生成一个新的密钥库并配置 gradle 以使用它来签署您的 APK。
- 对于在 Google Play 商店中发布的应用程序,用于上传和发布应用程序的 Google 帐户。
如果您将 APK 文件直接加载到设备(通过adb
或从某处下载 APK 文件),设备将使用前两个属性来识别应用程序/开发。
APK签名
关于APK 签名,目前有 4 个不同的版本如何对 APK 文件进行签名。一个 APK 可以通过这些签名标准中的一个或多个签名,您甚至可以同时通过所有四个版本对一个 APK 进行签名。
APK 签名 v1 是旧的 Java jarsigner
(包含在 APK 目录中的几个文件中/META-INF
。
APK 签名 v2和v3直接对 APK 文件进行签名,并将签名不可见的添加到 APK 文件中 ZIP 规范未涵盖的部分中。
APK 签名 v4是一个分离的签名,因此签名保存在 APK 文件之外的单独文件中,例如名为<apk name>.apk.idsig
.
推荐阅读
- javascript - 警告:预期的服务器 HTML 在 div 中包含匹配的导航
- microsoft-graph-api - 如何使用 Microsoft Graph API 更新 onenote 页面的墨迹数据
- oracle - 窗口函数:如何分区?
- python - pandas:根据另一个列表列中的条件从列表列中返回一个值
- java - 无法创建 SAAJ 元工厂:未找到提供程序 com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl
- unity3d - 在 Unity 中重新加载场景后玩家的跳跃受到影响
- spring - 为什么spring security oauth2授权服务器一直调用UserDetailsService?
- r - 在ggplot中避免二次拟合中的锯齿形图案
- neural-network - 在 PyTorch 中沿批次维度计算损失
- sql - 在我的表的属性上应用 DROP 约束 SQL 查询时出现问题