我更新到Android Studio 3.0 Canary 6,现在我遇到了以下错误(已经在Canary 5上).我搜索过人们看到类似的问题但到目前为止没有运气.其他人看到这样的东西?(注意fwiw该项目包括一些Kotlin代码)
Exception in thread "main" java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:108)
at com.google.devtools.build.android.desugar.DefaultMethodClassFixer$DefaultMethodFinder.visit(DefaultMethodClassFixer.java:295)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at com.google.devtools.build.android.desugar.DefaultMethodClassFixer.defaultMethodsDefined(DefaultMethodClassFixer.java:173)
at com.google.devtools.build.android.desugar.DefaultMethodClassFixer.visitEnd(DefaultMethodClassFixer.java:75)
at org.objectweb.asm.ClassVisitor.visitEnd(Unknown Source)
at com.google.devtools.build.android.desugar.InterfaceDesugaring.visitEnd(InterfaceDesugaring.java:77)
at org.objectweb.asm.ClassVisitor.visitEnd(Unknown Source)
at com.google.devtools.build.android.desugar.LambdaDesugaring.visitEnd(LambdaDesugaring.java:137)
at org.objectweb.asm.ClassVisitor.visitEnd(Unknown Source)
at org.objectweb.asm.ClassVisitor.visitEnd(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at com.google.devtools.build.android.desugar.Desugar.desugarClassesInInput(Desugar.java:368)
at com.google.devtools.build.android.desugar.Desugar.desugarOneInput(Desugar.java:297)
at com.google.devtools.build.android.desugar.Desugar.desugar(Desugar.java:251)
at com.google.devtools.build.android.desugar.Desugar.main(Desugar.java:543)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDesugarForCustomDebug'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process …Run Code Online (Sandbox Code Playgroud) 有点奇怪,但在使用 Jetpack Compose 时收到“后端内部错误”错误,结果发现它是通过调用从协程中获取 lambda 的函数触发的。
重现起来非常容易......已将其范围缩小到以下步骤:
使用“空撰写活动”模板创建新项目。更新到 dev07(以前的版本也有问题)并添加以下内容build.gradle
composeOptions {
kotlinCompilerExtensionVersion = "0.1.0-dev07"
}
Run Code Online (Sandbox Code Playgroud)
添加以下内容到MyActivity.kt
fun someFun(success: (String) -> Unit) {
}
Run Code Online (Sandbox Code Playgroud)
然后更新onCreate为以下内容:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
someFun {
}
}
setContent {
MaterialTheme {
Greeting("Android")
}
}
}
Run Code Online (Sandbox Code Playgroud)
构建项目,然后您会看到以下错误:
e: java.lang.IllegalStateException: Backend Internal error: Exception during code generation
Element is unknownThe root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:42)
at org.jetbrains.kotlin.codegen.CompilationErrorHandler.lambda$static$0(CompilationErrorHandler.java:35)
at org.jetbrains.kotlin.backend.jvm.JvmBackendFacade.doGenerateFilesInternal$backend_jvm(JvmBackendFacade.kt:114)
Run Code Online (Sandbox Code Playgroud)
请注意,您还需要添加以下依赖项build.gradle
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
Run Code Online (Sandbox Code Playgroud) After updating to Android Studio 4.2 Canary 8 and now getting following error when I do gradle sync. It seems like it's related to using root level build.gradle.kts .....if I switch back to using build.gradle then issue is "fixed"
java.lang.NoClassDefFoundError: kotlin/KotlinNothingValueException
at com.android.build.gradle.options.BooleanOption.parse(BooleanOption.kt:427)
at com.android.build.gradle.options.BooleanOption.parse(BooleanOption.kt:28)
at com.android.build.gradle.options.ProjectOptions$OptionValue.lambda$setValueForUseAtConfiguration$0(ProjectOptions.java:365)
at org.gradle.api.internal.provider.DefaultProvider.calculateOwnValue(DefaultProvider.java:66)
at org.gradle.api.internal.provider.AbstractMinimalProvider.getOrNull(AbstractMinimalProvider.java:93)
at com.android.build.gradle.options.ProjectOptions$OptionValue.getValueForUseAtConfiguration(ProjectOptions.java:345)
at com.android.build.gradle.options.ProjectOptions$OptionValue.access$000(ProjectOptions.java:331)
at com.android.build.gradle.options.ProjectOptions.get(ProjectOptions.java:186)
at com.android.build.gradle.options.SyncOptions.getModelQueryMode(SyncOptions.java:41)
at com.android.build.gradle.internal.plugins.BasePlugin.createProjectServices(BasePlugin.java:868)
at com.android.build.gradle.internal.plugins.BasePlugin.basePluginApply(BasePlugin.java:262)
at com.android.build.gradle.internal.plugins.BasePlugin.lambda$apply$0(BasePlugin.java:246)
at com.android.build.gradle.internal.crash.CrashReporting.runAction(crash_reporting.kt:27)
at com.android.build.gradle.internal.plugins.BasePlugin.apply(BasePlugin.java:244)
at com.android.build.gradle.internal.plugins.BasePlugin.apply(BasePlugin.java:136)
at org.gradle.api.internal.plugins.ImperativeOnlyPluginTarget.applyImperative(ImperativeOnlyPluginTarget.java:43)
at org.gradle.api.internal.plugins.RuleBasedPluginTarget.applyImperative(RuleBasedPluginTarget.java:51)
at org.gradle.api.internal.plugins.DefaultPluginManager.addPlugin(DefaultPluginManager.java:177)
at org.gradle.api.internal.plugins.DefaultPluginManager.access$100(DefaultPluginManager.java:51)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试最近发布的功能,该功能允许使用gradle任务将ProGuard映射文件上传到Firebase(https://firebase.google.com/docs/crash/android).以下是我正在运行的任务.
./gradlew -PFirebaseServiceAccountFilePath=xxxxx.json :app:firebaseUploadReleaseProguardMapping
Run Code Online (Sandbox Code Playgroud)
但是,它似乎没有识别服务帐户文件.有没有人有幸得到这个工作?我也尝试过FirebaseServiceAccountFilePath在gradle.properties中定义.
* What went wrong:
Execution failed for task ':app:firebaseUploadReleaseProguardMapping'.
> Service account file path has not been defined! Service accounts are used to authorize your mapping file uploads. Learn more at
https://firebase.google.com/docs/crash/android.
Run Code Online (Sandbox Code Playgroud) 我正在使用Android Studio 3.2 Canary 14,我正在尝试迁移现有项目以供使用AndroidX.它来自https://developer.android.com/topic/libraries/support-library/androidx-rn,我必须设置android.enableJetifier=true(这是在我选择"Refactor to AndroidX .."选项时自动完成的).我还将目标API级别更新为28.还有其他人看到此问题吗?
无法使用Jetifier转换'/Users/jooreill/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-perf/15.0.0/6e68f6e44b0c9d91756f903547ee3853349ae666/firebase-perf-15.0.0.aar' .原因:null.(有关更多详细信息,请使用--stacktrace运行.)要禁用Jetifier,请在gradle.properties文件中设置android.enableJetifier = false.
运行"清理"时发生上述错误.一般情况下,如果执行gradle同步,我会收到多个错误:
无法解析':app-instant @ debug/compileClasspath'的依赖关系:无法使用transform JetifyTransform转换文件'play-services-measurement-base-15.0.2.aar'以匹配属性{artifactType = jetified-aar}
使用导航组件alpha09并添加apply plugin: "androidx.navigation.safeargs"到基本模块的顶部build.gradle但在执行gradle sync时遇到跟随错误.我正在使用Android Studio 3.4 Canary 9(但使用3.3 RC3也有同样的问题)
看起来相似的修复程序包含在alpha09中 - https://issuetracker.google.com/issues/119662045
Caused by: kotlin.TypeCastException: null cannot be cast to non-null type org.gradle.api.resources.TextResource
at androidx.navigation.safeargs.gradle.SafeArgsPlugin.setApplicationId(SafeArgsPlugin.kt:87)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin.access$setApplicationId(SafeArgsPlugin.kt:39)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin$apply$1$task$1.execute(SafeArgsPlugin.kt:63)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin$apply$1$task$1.execute(SafeArgsPlugin.kt:39)
at org.gradle.api.internal.tasks.DefaultTaskContainer.create(DefaultTaskContainer.java:360)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin$apply$1.invoke(SafeArgsPlugin.kt:59)
at androidx.navigation.safeargs.gradle.SafeArgsPlugin$apply$1.invoke(SafeArgsPlugin.kt:39)
at androidx.navigation.safeargs.gradle.SafeArgsPluginKt$sam$org_gradle_api_Action$0.execute(SafeArgsPlugin.kt)
at org.gradle.internal.ImmutableActionSet$SingletonSet.execute(ImmutableActionSet.java:225)
at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:247)
at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:236)
at com.android.build.gradle.LibraryExtension.addVariant(LibraryExtension.java:93)
at com.android.build.gradle.FeatureExtension.addVariant(FeatureExtension.java:121)
at com.android.build.gradle.internal.ApiObjectFactory.create(ApiObjectFactory.java:134)
Run Code Online (Sandbox Code Playgroud) 我正在使用Kotlin Coroutines,特别是使用Retrofit CoroutineCallAdapterFactory.我正在尝试对一个类进行单元测试,然后使用Retrofit接口(GalwayBusService下面).
interface GalwayBusService {
@GET("/routes/{route_id}.json")
fun getStops(@Path("route_id") routeId: String) : Deferred<GetStopsResponse>
}
Run Code Online (Sandbox Code Playgroud)
在我的单元测试中,我有
val galwayBusService = mock()
然后尝试类似下面的内容来模拟调用该方法时返回的内容.但问题是getStops返回一个Deferred值.是否有任何特定的方法建议用于模拟这样的API?
`when`(galwayBusService.getBusStops()).thenReturn(busStopsResponse)
Run Code Online (Sandbox Code Playgroud) 已开始尝试在JUnit单元测试中使用kotlinx-coroutines-test(https://github.com/Kotlin/kotlinx.coroutines/blob/master/core/kotlinx-coroutines-test/README.md)但在我调用时遇到以下错误Dispatchers.setMain()
java.lang.IllegalArgumentException: TestMainDispatcher is not set as main dispatcher, have Main[missing, cause=java.lang.AbstractMethodError: kotlinx.coroutines.test.internal.TestMainDispatcherFactory.createDispatcher()Lkotlinx/coroutines/MainCoroutineDispatcher;] instead.
at kotlinx.coroutines.test.TestDispatchers.setMain(TestDispatchers.kt:22)
Run Code Online (Sandbox Code Playgroud)
我试过打电话Dispatchers.setMain(Dispatchers.Unconfined)也传入了val mainThreadSurrogate = newSingleThreadContext("UI thread").看起来似乎问题不是传递价值,而是mainDispatcher在接下来的测试中绊倒
public fun Dispatchers.setMain(dispatcher: CoroutineDispatcher) {
require(dispatcher !is TestMainDispatcher) { "Dispatchers.setMain(Dispatchers.Main) is prohibited, probably Dispatchers.resetMain() should be used instead" }
val mainDispatcher = Dispatchers.Main
require(mainDispatcher is TestMainDispatcher) { "TestMainDispatcher is not set as main dispatcher, have $mainDispatcher instead." }
mainDispatcher.setDispatcher(dispatcher)
}
Run Code Online (Sandbox Code Playgroud) 刚刚更新到Android Studio 3.2 Canary 17,现在收到以下错误:
配置项目':some_module`时出现问题.'kotlin-android'希望将一个Android Gradle插件应用于该项目:
Run Code Online (Sandbox Code Playgroud)* android * com.android.application * android-library * com.android.library * com.android.test * com.android.feature * com.android.dynamic-feature
该build.gradle模块包括:
apply plugin: 'com.android.feature'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
Run Code Online (Sandbox Code Playgroud)
该项目包括混合物组成几个模块com.android.application,com.android.feature和com.android.instantapp
有没有办法meta-data根据 Gradle 中设置的值有条件地在 Android 清单文件中包含元素。我能够执行以下操作(resValue用于设置<some_value>in build.gradle),但无法找到包含/排除完整meta-data元素的方法。
<meta-data
android:name="<some_setting>"
android:value="@string/<some_value>" />
Run Code Online (Sandbox Code Playgroud)