我使用以下方法将 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 时如何提供注释处理器参数?
我加了
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,但没有运气
我想限制用户可以在 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) 您可以在 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) 我在使用 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) 当我启动我的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?
android ×4
kotlin ×2
android-room ×1
firebase ×1
grails ×1
grails-2.0 ×1
mockk ×1
performance ×1
plugins ×1