生成签名APK失败 - 必须提供组织标识符(使用--org)

10

在设置完Sentry.io错误跟踪后,当我尝试生成已签名的Apk时,出现了以下错误:

Java Compiler
error: An organization slug is required (provide with --org)

点击此图片并打开它以查看更多详细信息: 错误

我从这张图片中什么也看不懂:

Process 'command
'/var/folders/j4/_fzm1rks3tsc2h3j4l2qbq4w0000gn/T/.sentry-cli1369818638611304938.exe'
' finished with non-zero exit value 1

这是一个出错的文件地址: 出错的地址 我该如何解决这个问题并生成已签名的 Apk 文件?
7个回答

5

这份文档并不十分清晰,尽管提到了,但很容易被忽略。这里需要两个不同的sentry.properties文件。

请注意,在项目根目录中配置sentry-cli的sentry.properties文件与您在应用资源中包含的用于在运行时配置Sentry SDK的文件是不同的(如配置文档所示)。

您需要在项目根目录中拥有另一个sentry.properties文件。

defaults.project=your-project
defaults.org=your-org
auth.token=YOUR_AUTH_TOKEN

运行时的sentry.properties文件包含DSN值等,可以放置在app/src/main/resources目录中(如有需要,则创建资源目录)

配置文档


如何创建这个文件? - roghayeh hosseini

2
你需要将Proguard映射文件上传到Sentry服务器。 在根项目文件夹中创建一个文件,并设置名称为sentry.properties。
defaults.url=https://sentry.io
defaults.org=TEST
defaults.project=TEST_DEV
auth.token=TOKEN

替换TEST、TEST_DEV和TOKEN。

您可以从https://sentry.io/api获取TOKEN。

如果您使用自定义Sentry服务器,请将 https://sentry.io替换为您的服务器地址。

并更改文件build.gradle。

buildscript {
    
    dependencies {

        classpath 'com.android.tools.build:gradle:3.5.2'
        
        classpath 'io.sentry:sentry-android-gradle-plugin:1.7.27'

    }
}

并且

apply plugin: 'com.android.application'
apply plugin: 'io.sentry.android.gradle'

...

sentry {
  autoProguardConfig true
  autoUpload true
}
    
android {
  ...
}
dependencies {

     ...

     implementation 'io.sentry:sentry-android:1.7.27'
     implementation 'org.slf4j:slf4j-nop:1.7.25'

     ...
}

1
对于ReactNative/iOS,如果你遇到这样的错误,请确保在iOS文件夹中放置了sentry.properties文件enter image description here

0

当你启用Proguard代码混淆时,符号将上传到Sentry。 这个上传是通过sentry-cli完成的,但会抛出错误。错误显示CLI不知道将符号与哪个Sentry项目相关联。 你需要确保阅读文档中的gradle集成部分。 具体来说:

defaults.project=airflow
defaults.org=sentry
auth.token=YOUR_AUTH_TOKEN

您也可以直接使用sentry-cli上传符号,但建议使用gradle集成。


我正准备提出一个关于gradle手动集成的新问题。我在我的app/build.gradle中使用了另一种方式,即 sentry { autoProguardConfig true autoUpload true } 但问题仍然存在。你能帮我测试手动集成吗? - Alireza Noorali
1
如果文档中列出的步骤没有帮助到您,我建议在 GitHub 上开启一个问题。最终解决方案可以作为答案添加在这里。 - Bruno Garcia
1
我同时完成了它。我正在等待答案。 - Alireza Noorali

0

我也曾陷入困境,试图弄清楚我的Sentry源代码映射上传出了什么问题(不是在Android上,而是在Web上遇到了类似的错误)。为了调试那些没有匹配的事件,我使用了sentry-cli,像这样:

Screenshot 2022-06-08 at 10 01 48

所以我在搜索如何将组织slug添加到我的源代码映射上传中。但是这个错误不是关于事件的,而是关于使用explain CLI功能本身!这让我感到困惑。

我必须向CLI脚本传递附加参数,以获取事件的实际问题;

Screenshot 2022-06-08 at 10 04 20

也许这会帮助其他跳过文档的人。

-2

不要再使用空格来排版

minifyEnabled false

只需将这些规则添加到proguard规则文件中,并保持minifyEnabled为true。
#sentry
-keepattributes LineNumberTable,SourceFile
-dontwarn org.slf4j.**
-dontwarn javax.**
-keep class io.sentry.event.Event { *; }

这解决了我的问题,而不需要禁用代码压缩。


1
谢谢您的帖子。老实说,我发布这个问题已经有很长时间了,现在无法测试您的答案。我敦促所有阅读您帖子的其他人公布他们的测试结果。 - Alireza Noorali

-5

这不是一个真正的答案,但是通过将false值设置为minifyEnabled,可以在短期内解决我们的问题。

app/build.gradle:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

但它增加了1.3MB到我的Apk文件大小。

如果有其他更好的解决方案,请告诉我。


这个答案只是预防症状而不是治愈,这不应该被接受的答案。通过禁用缩小,您只是构建了开发变体并添加了所有不必要的代码,它们存在是有原因的。最好寻找解决错误的解决方案,而不是掩盖它。请阅读我的答案:https://dev59.com/sK_la4cB1Zd3GeqPz-fL#55585290 - Stack learner
@Stacklearner 我同意你的观点,但我4个月前就问过这个问题,并且用另一种方法解决了它,现在我已经不记得具体细节了。 - Alireza Noorali
为什么您要清除问题陈述?! :) - roghayeh hosseini
@roghayehhosseini 答案已更新,以更清晰地描述解决方案的类型。 - Alireza Noorali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接