我在gradle中有两个构建版本但由于某种原因,每当我将以下标志更改为false时,我都会收到标题错误消息:
ext.enableCrashlytics = false
错误本身完成如下:
Process: com.mobile.myapp.staging, PID: 5439
java.lang.RuntimeException: Unable to create application com.mobile.myapp.UI.myappApplication: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4710)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:234)
at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:207)
at io.fabric.sdk.android.InitializationTask.onPreExecute(InitializationTask.java:44)
at io.fabric.sdk.android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.java:611)
at io.fabric.sdk.android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.java:43)
at io.fabric.sdk.android.Kit.initialize(Kit.java:69)
at io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:440)
at io.fabric.sdk.android.Fabric.init(Fabric.java:384)
at io.fabric.sdk.android.Fabric.setFabric(Fabric.java:342)
at io.fabric.sdk.android.Fabric.with(Fabric.java:313)
at com.mobile.myapp.UI.base.BaseApplication.setupExceptionHandling(BaseApplication.java:51)
at com.mobile.myapp.UI.myappApplication.onCreate(myappApplication.java:45)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
这就是我在Application子类中初始化crashlytics的方法:
Fabric.with(this, new Crashlytics());
我想要做的是控制崩解剂是否可以运行。让我说我想要flavor1不要运行crashlytics我以为我可以使用gradle标志并将其设置为false。我错过了什么吗?
除了回答Todd Burner
小心qazxsw poi。 IDE可以自动导入它
BuildConfig.DEBUG
而不是你的应用程序配置
com.crashlytics.android.BuildConfig (= false)
UPDATE
提供j2emanue请求的示例
${app_package}.BuildConfig
哪里的 ...
import com.fiot.ot.BuildConfig <- should be
import com.crashlytics.android.BuildConfig <- my IDE automatically imported
fun initFabric(context: Context) {
val core = CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()
val kit = Crashlytics.Builder().core(core).build()
Fabric.with(context, kit)
}
包我的应用程序的名称
也许缺少适用插件面料
我在文件com.fiot.ot
上添加了这一行解决了我的问题!
申请插件:'io.fabric'
每当我设定
app/build.gradle
我的应用程序崩溃了
ext.enableCrashlytics = false
对我来说似乎有用的是我必须通过将此行添加到AndroidManifest.xml来禁用Crashlytics的自动初始化
io.fabric.sdk.android.services.concurrency.UnmetDependencyException
This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up, install an Android build tool and ask a team member to invite you to this app's organization.
然后我在我的Application子类的onCreate()方法中手动初始化Crashlytics,使用BuildConfig.DEBUG来决定是否禁用CrashlyticsCore,并调用Fabric.with()。事实上,我不再设定
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
一点都不这似乎对我有用。
来自Fabric的Todd。除非您还在运行时禁用了Fabric,否则您将收到此错误。
ext.enableCrashlytics = false
有关更多详细信息,请查看此链接: // Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);
确保你加入
app.gradle
https://docs.fabric.io/android/crashlytics/build-tools.html#disable-crashlytics-for-debug-builds
我也有
apply plugin: 'io.fabric'
在里面
项目gradle依赖项
并在字符串中添加Crashlytics api,在classpath 'io.fabric.tools:gradle:1.26.1'
中注册
您需要具备以下内容才能收到上述错误:
AndroidManifest.xml
文件中添加以下行:
<application>
(您可以在<meta-data android:name="io.fabric.ApiKey" android:value="<FABRIC_API_KEY>" />
上进行入职时获取密钥)
或者在登录后访问https://fabric.io/onboard,你应该在教程中看到你的密钥。Resources/values/Strings.xml
<string name="com.crashlytics.android.build_id">15</string>
中的MainApplication.cs
或YourActivity.cs
中添加以下行:
OnCreate()
您的应用应该构建并运行在初始化行之外,没有任何问题。我遇到的唯一问题是,每次发布时,还有一个地方需要更新应用的Build版本。
就我而言,一个值是必需的,但根本没有使用。你实际上不必增加Fabric.Fabric.With(this, new Crashlytics.Crashlytics());
中的内部版本号,它会自动从应用程序中获取内部版本号,所以你应该没关系,只需将值保留为:Strings.xml
如果您对Xamarin有不同的体验,请在下面评论。
在我的情况下,这是有效的。
所以,这是顶级项目build.gradle
<string name="com.crashlytics.android.build_id">1</string>
这是app模块的build.gradle
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'java'
allprojects {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
}
最后“干净的构建”,一切都为我而定。