sentry-cli可用于将proguard文件上传到Sentry,但在大多数情况下,您可以使用gradle插件来执行此操作。在某些情况下,您可以手动上传proguard文件(例如,当您只发布一些正在创建的构建时)。
一、基本上传
upload-proguard命令是用于上载proguard文件的命令。它采用一个或多个proguard映射文件的路径,并将它们上传到Sentry。如果您想将它们与Android应用相关联,您还应该将其指向来自构建中间文件夹的已处理AndroidManifest.xml。例:
sentry-cli upload-proguard \
--android-manifest app/build/intermediates/manifests/full/release/AndroidManifest.xml \
app/build/outputs/mapping/release/mapping.txt
由于sentry-java客户端需要知道映射文件的UIUD,因此需要将其嵌入到sentry-debug-meta.properties文件中。如果提供自动完成的--write-properties:
sentry-cli upload-proguard \
--android-manifest app/build/intermediates/manifests/full/release/AndroidManifest.xml \
--write-properties app/build/intermediates/assets/release/sentry-debug-meta.properties \
app/build/outputs/mapping/release/mapping.txt
二、上传选项
--no-reprocessing
此参数可防止Sentry立即触发重新处理。 在极少数情况下,如果您希望以多个批次上载文件,并且希望确保Sentry在上载某些可选的dsyms之前不开始重新处理,则它非常有用。 请注意,虽然有人仍然可以在此期间触发从UI重新处理。
--no-upload
禁用实际上传。 这将运行处理的所有步骤,但不会触发上载(这也会自动禁用重新处理。如果您只想验证映射文件并将proguard UUID写入proeprties文件,这非常有用.
-- required-one
至少需要 一个要上传的文件或命令将出错。
三、UUID格式
与大多数调试信息文件不同,proguard文件本身不携带可用于唯一标识文件的唯一标识符。由于这会导致不必要的复杂性,因此我们根据文件的校验和为文件提供SHA1 UUID。您可以对proguard文件使用sentry-cli difutil检查以查看生成的UUID。
如果您想自己生成UUID,可以使用以下算法(Python代码供参考):
import uuid
NAMESPACE = uuid.uuid5(uuid.NAMESPACE_DNS, "guardsquare.com")
def get_proguard_uuid(filename):
with open(filename, 'rb') as f:
return uuid.uuid5(NAMESPACE, f.read())