请根据以下步骤操作,查看应用当前签名。
1. 打开命令提示符(Windows)或终端(Mac/Linux)。
2. 输入以下命令并回车:
```
apksigner verify --verbose
```
例如:
```
apksigner verify --verbose C:\Usersliyd\Downloads\100055-productMode-oppo-202307071822.apk
```
重新签名包的流程如下:
1. 打开命令提示符(Windows)或终端(Mac/Linux)。
2. 输入以下命令并回车:
```
jarsigner
```
3. 用解压软件打开已经签名的apk包,删除META_INF文件夹;,获得未签名的apk包。
4. 将游戏的签名文件keystore,删除签名的apk,放在同一文件夹下。
5. 修改命令行:`jarsigner -verbose -keystore keystoreName -signedjar signed.apk unsigned.apk keystoreAlias`,并运行。
例如:
```
jarsigner -verbose -keystore .\common.keystore -signedjar signed.apk .\appoppo-release.apk xxx
```
注意:签名工具存放路径为D:\work\tkbackground\jjchannelpackage\ToolConfigPath\tools\sign。
6. 对于targetApi30以上版本的应用,要求对齐文件。
7. 签名后的文件安装到手机上时,可能会出现“Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary”的提示。这是因为从Android 7.0(API级别24)开始,应用程序的资源二进制数据需要进行对齐。具体对齐要求可见Android官方文档。
8. 注意:您必须在构建流程的特定时间点使用zipalign。该时间点取决于您使用的应用签名工具。如果您使用的是apksigner,则必须在为APK文件签名之前使用zipalign。如果您在使用apksigner为APK签名之后对APK做出了进一步更改,签名便会失效。如果您使用的是jarsigner,则必须在为APK文件签名之后使用zipalign。
请使用以下命令对未对齐的apk文件进行对齐并签名:
```shell
.\zipalign -p -f -v 4 .\signer.apk output.apk
```
其中,4表示多少字节。`.\signer.apk` 是输入的文件(未对齐的apk),`output.apk` 为输出文件,对齐后的apk。
在执行此命令之前,请确保已安装 Android SDK Build Tools 修订版 24.0.3 及更高版本,并将 `.\zipalign` 路径设置为 D:\sdk\build-tools\30.0.3。同时,要求使用 v2 及以上签名。
如果在签名过程中遇到问题,可以尝试使用 `apksigner` 工具。首先,确保已安装 release.jks(密钥库中唯一的密钥)。然后,执行以下命令为 APK 签名:
```shell
apksigner sign --ks release.jks app.apk
```
其中,`app.apk` 是需要签名的 APK 文件。
请查看以下内容:
```csharp
PS C:\Users\liyd\Desktop\1> apksigner verify --print-certs .\100055-bilibili-202303201210.apk Signer #1 certificate DN: C=86, ST=Beijing, L=Beijing, O=“JJWorld (Beijing) Network Technology Co.,LTD””, OU=BlackWood Studio, CN=BlackWood Signer #1 certificate SHA-256 digest: 1f9711a43c640b2b8324e9fb7c33879ce9f395dfcbaf0f039d290ba8a807da01 Signer #1 certificate SHA-1 digest: 61f2b58169886ad36deaadb02102b65b902371b6 Signer #1 certificate MD5 digest: 506717f052b89d584b6bf24b9f65a5ef
```
```powershell
$ apksigner verify --print-certs C:\Users\liyd\Downloads\100057-testMode-xiaomi-202305121439.apk
```
PS C:\UsersliydDownloads> apksigner verify -v --print-certs C:\Users\liyd\Downloads\100057-testMode-xiaomi-202305121439.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Verified using v3 scheme (APK Signature Scheme v3): true
Verified using v4 scheme (APK Signature Scheme v4): false
Verified for SourceStamp: false
Number of signers: 1
Signer #1 certificate DN: CN=jj, OU=jj, O=jj, L=bj, ST=bj, C=cn
Signer #1 certificate SHA-256 digest: 0200504aa89bb21c3db9efefbe124ccb15c87a20f815949045f1ddc112b7d265
Signer #1 certificate SHA-1 digest: d966fff971b684da63d5c185231d7df580420bc4
Signer #1 certificate MD5 digest: 65ca9a9644c6e1d3b9ac10bb4147e968
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 1024
Signer #1 public key SHA-256 digest: 499c35356a8faeb7e6d32c0a929c82f03f9dd944a41d4b3d8de783cded7c4657
Signer #1 public key SHA-1 digest: ff774554acb9a36ea3b4e343794592d05c55c09b
Signer #1 public key MD5 digest: f9c87c9acf9bc59b311a67b59f8f4652
请根据以下内容完成重构,并保持段落结构:
设置签名级别:
- `--v1-signing-enabled`:确定 apksigner 是否会使用基于 JAR 的传统签名方案为给定的 APK 软件包签名。默认情况下,该工具会使用 `--min-sdk-version` 和 `--max-sdk-version` 的值来决定何时采用此签名方案。
- `--v2-signing-enabled`:确定 apksigner 是否会使用 APK 签名方案 v2 为给定的 APK 软件包签名。默认情况下,该工具会使用 `--min-sdk-version` 和 `--max-sdk-version` 的值来决定何时采用此签名方案。
- `--v3-signing-enabled`:确定 apksigner 是否会使用 APK 签名方案 v3 为给定的 APK 软件包签名。默认情况下,该工具会使用 `--min-sdk-version` 和 `--max-sdk-version` 的值来决定何时采用此签名方案。
- `--v4-signing-enabled`:确定 apksigner 是否会使用 APK 签名方案 v4 为给定的 APK 软件包签名。此方案会在单独的文件 (apk-name.apk.idsig) 中生成签名。如果为 true 并且 APK 未签名,则系统会根据 `--min-sdk-version` 和 `--max-sdk-version` 的值生成 v2 或 v3 签名。然后,该命令会根据已签名的 APK 的内容生成 .idsig 文件。使用 only 仅生成 v4 签名,而不修改 APK 及其在调用前具有的任何签名。如果 APK 还没有 v2 或 v3 签名,或者签名使用的密钥与为当前调用提供的密钥不同,only 会失败。默认情况下,该工具会使用 `--min-sdk-version` 和 `--max-sdk-version` 的值来决定何时采用此签名方案。
zipalign:
zipalign 是一种用于 zip 归档文件对齐的工具,它可以确保归档文件中的所有未压缩文件相对于文件开头对齐。这样做的好处是可以直接通过 mmap(2) 访问这些文件,而无需在 RAM 中复制这些数据,从而减少了应用程序的内存使用量。
需要注意的是,在使用 zipalign 时必须在构建流程的特定时间点进行操作。这个时间点取决于您使用的应用程序签名工具:
- 如果使用的是 apksigner,那么必须在为 APK 文件签名之前使用 zipalign。如果您在使用 apksigner 为 APK 签名之后对 APK 进行了进一步更改,那么签名将会失效。
- 如果使用的是 jarsigner(不推荐),则必须在为 APK 文件签名之后使用 zipalign。
使用方法如下:
- 如果您的 APK 包含共享库(.so 文件),请使用 `-p` 参数来确保它们与适合 mmap(2) 的 4KiB 页面边界对齐。对于其他文件(其对齐方式由 zipalign 的必选对齐参数确定),Android Studio 将在 32 位和 64 位系统中对齐到 4 个字节。
要对齐 infile.apk 并将其保存为 outfile.apk,可以运行以下命令:
```bash
zipalign -p -f -v 4 infile.apk outfile.apk
```
如果想要确认 existing.apk 的对齐情况,可以使用以下命令。如果您使用 Android Studio 或 AGP 进行构建,那么应该使用该命令来验证 APK 是否已对齐。
```bash
zipalign -c -v 4 existing.apk
```