小编Cri*_*tan的帖子

使用 Kotlin 信号处理 (KSP) 时提供注释处理器参数

我使用以下方法将 KSP 与 Room 结合使用:

plugins {
    id 'com.google.devtools.ksp' version "$kotlin_version-1.0.0"
Run Code Online (Sandbox Code Playgroud)
dependencies {
   ksp "androidx.room:room-compiler:$room_version"
Run Code Online (Sandbox Code Playgroud)

这确实有效。但是,当我尝试运行它时,我会收到此警告

[ksp] MyDatabase.kt:11:架构导出目录未提供给注释处理器,因此我们无法导出架构。您可以提供room.schemaLocation注释处理器参数或将 exportSchema 设置为 false。

为了做到这一点:使用 KSP 时如何提供注释处理器参数?

android kotlin android-room kotlin-symbol-processing

22
推荐指数
1
解决办法
4663
查看次数

Firebase性能监视器导致“ D8:不支持的源文件类型”

我加了

apply plugin: 'com.google.firebase.firebase-perf'
Run Code Online (Sandbox Code Playgroud)

当我运行build脚本时,我得到了

/transforms/FirebasePerformancePlugin/dev/debug/174/module-info.class:D8:不支持的源文件类型

这可能是什么问题?

我更新了所有插件,播放服务和Android Studio,但没有运气

performance plugins android

12
推荐指数
3
解决办法
404
查看次数

如何在 Jetpack Compose 中为 TextField 设置 inputType

我想限制用户可以在 Jetpack Compose 的 TextField 中输入的内容。我怎么做?

xml 中的等效项是inputType

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="number"
    android:hint="Only numbers please!" />
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose android-compose-textfield

9
推荐指数
2
解决办法
1072
查看次数

使用 MockK 捕获 vararg 参数?

您可以在 MockK 中模拟vararg 方法:

interface ClsWithManyMany {
    fun manyMany(vararg x: Any): Int
}

val obj = mockk<ClsWithManyMany>()
every { obj.manyMany(*anyVararg()) } returns 2
println(obj.manyMany("testing", "testing")) // 2
Run Code Online (Sandbox Code Playgroud)

如何捕获传递给该方法的值?这不起作用(捕获 a 也不起作用mutableListOf<Array<Any>>()):

val captured = slot<Array<Any>>()
every { obj.manyMany(*capture(captured)) } answers {
    println ("arguments: ${captured.captured}")
    2
}
Run Code Online (Sandbox Code Playgroud)

kotlin mockk

6
推荐指数
1
解决办法
3351
查看次数

谷歌登录可以在模拟器中使用,但不能在手机中使用

我在使用 Firebase 实施 Google 登录时遇到了非常严重的问题。我可以使用模拟器 Android 7.0(为 x86_64 构建的 SDK)登录,但是如果我将项目上传到手机(Android 6.0),我无法使用 Google 登录。我唯一看到的是应用程序关闭。在极少数情况下,如果我快速双击登录按钮,它将登录,但不会获得进一步使用的凭据。可能是什么问题?

LoginActivity中的代码

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == FirebaseConstants.LOG_IN_REQUEST){

        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        Intent i = new Intent(LoginActivity.this, MainActivity.class);
        startActivity(i);

    }
    if(requestCode == FirebaseConstants.LOG_OUT_REQUEST){
        TastyToast.makeText(this, "Logged out successfully", TastyToast.LENGTH_LONG, TastyToast.SUCCESS);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 onCreate 方法中的代码(单击按钮):

    btnGoogleSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(NetworkUtil.isNetworkAvailable(LoginActivity.this)){
                googleLogin.logIn(LoginActivity.this);
            }else{
                TastyToast.makeText(LoginActivity.this, "Network is unavailable", TastyToast.LENGTH_LONG, TastyToast.ERROR);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

谷歌登录实例

    public class …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-authentication google-signin

5
推荐指数
1
解决办法
4021
查看次数

Grails:将堆栈跟踪记录到stdout

当我启动我的grails应用程序时,我收到以下错误:

java.io.FileNotFoundException:stacktrace.log(权限被拒绝)

我知道这可以通过chowning一些文件/目录或通过更改日志转到的文件来解决,但我不想这样:我只想将stracktraces记录到stdout.

文件规定:

例如,如果您希望完整堆栈跟踪转到控制台,请添加以下条目:

错误标准输出:"StackTrace"

但是:它还说明:

这不会阻止Grails尝试创建stacktrace.log文件 - 它只是重定向写入堆栈跟踪的位置.

然后:

或者,如果您根本不想使用'stacktrace'appender,请将其配置为'null'appender:

log4j = {
    appenders {
        'null' name: "stacktrace"
    }
}
Run Code Online (Sandbox Code Playgroud)

我结合2并获得以下配置:

// log4j configuration
environments {
    production {
        log4j = {
            appenders {
                console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
                // Don't use stacktrace.log
                'null' name: "stacktrace"
            }
        }

    }
}

log4j = {
    // print the stacktrace to stdout
    error stdout:"StackTrace"
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用:

信息:部署Web应用程序存档MyBackend.war

2012年9月12日下午4:46:11 org.apache.catalina.core.StandardContext start

严重:错误listenerStart

2012年9月12日下午4:46:11 org.apache.catalina.core.StandardContext start

严重:由于先前的错误,上下文[/ MyBackend2]启动失败

不可否认,它不再尝试编写stacktrace.log,因此不再抛出Permission denied错误,但我不知道为什么应用程序无法启动因为它记录的唯一内容是"Error listenerStart"

任何人都可以帮我配置我的应用程序只是将堆栈跟踪记录到stdout?

grails grails-2.0

3
推荐指数
1
解决办法
9397
查看次数