如果我没看错的gradle assemble不运行gradle assembleDebug和gradle assembleRelease,但我相信gradle build也不会是相同的,所以是什么他们两个之间有什么不同?
我在Kotlin开发了一个Android库模块 - 在Kotlin项目上进行了测试,一切正常.使用gradle的maven-publishing插件,我已经生成了aar文件并将它们上传到Maven服务器上,所以后来我在Android Java应用程序上添加了lib compile 'group:artifact:version'.
库文件似乎被识别,但是,当我尝试启动Lib上存在的活动时,我得到以下堆栈跟踪:
05-12 14:21:48.221 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/dataform/renderengine/core/model/DataCollector; annotation class 182
05-12 14:21:48.222 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/dataform/renderengine/core/model/DataCollector; annotation class 181
05-12 14:21:48.222 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/dataform/renderengine/core/model/DataCollector; annotation class 181
05-12 14:21:48.223 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/dataform/renderengine/core/model/Collect; annotation class 182
05-12 14:21:48.224 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/dataform/renderengine/core/model/Collect; annotation class 180
05-12 14:21:48.224 11735-11735/*****.*****.dev W/art: Unable to resolve Lbr/com/**********/dataform/renderengine/core/model/Collect; annotation class 180
05-12 14:21:48.224 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gradlew通过终端构建我的Android项目(包含库模块).在Android Studio中,它可以成功编译和安装,但是当我尝试运行时,./gradlew assembleDebug我得到以下堆栈跟踪:
Using kotlin incremental compilation
e: java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.jetbrains.kotlin.gradle.tasks.JarSearchingUtilKt.findToolsJar(jarSearchingUtil.kt:48)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar$2.invoke(GradleCompilerEnvironment.kt:21)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment$toolsJar$2.invoke(GradleCompilerEnvironment.kt:15)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment.getToolsJar(GradleCompilerEnvironment.kt)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerEnvironment.getCompilerClasspath(GradleCompilerEnvironment.kt:24)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.getDaemonConnection(GradleKotlinCompilerRunner.kt:289)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.compileWithDaemon(GradleKotlinCompilerRunner.kt:132)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.compileWithDaemonOrFallback(GradleKotlinCompilerRunner.kt:112)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.compileWithDaemonOrFallback(GradleKotlinCompilerRunner.kt:49)
at org.jetbrains.kotlin.compilerRunner.KotlinCompilerRunner.runCompiler(KotlinCompilerRunner.kt:134)
at org.jetbrains.kotlin.compilerRunner.GradleCompilerRunner.runJvmCompiler(GradleKotlinCompilerRunner.kt:73)
at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompiler$kotlin_gradle_plugin(Tasks.kt:259)
at org.jetbrains.kotlin.gradle.tasks.KotlinCompile.callCompiler$kotlin_gradle_plugin(Tasks.kt:160)
at org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile.execute(Tasks.kt:141)
at sun.reflect.GeneratedMethodAccessor530.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:163)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) …Run Code Online (Sandbox Code Playgroud) 我正在尝试与使用Spring Boot构建的API一起提供ReactJS应用程序.我create-react-app在/ public /上运行脚本- 如下面的结构所示 - 但是,当我尝试从http:// localhost:8080/public/index.html访问时,来自ReactJS的所有相对路径似乎都被破坏了
为了正确加载ReactJS中的资源,我还需要做些什么?
我经历了许多类似的问题,但没有一个答案似乎解决了我的问题.我实现了一个EditText我希望与双向数据绑定兼容的自定义.问题是,每次我尝试编译时都会收到错误:
Error:java.lang.IllegalStateException: failed to analyze: android.databinding.tool.util.LoggedErrorException: Found data binding errors.
****/ data binding error ****msg:Cannot find the getter for attribute 'android:text' with value type java.lang.String on com.app.toolkit.presentation.view.CustomEditText. file:/Users/humble-student/Home/workspace/android/application/app/src/main/res/layout/login_view.xml loc:68:8 - 81:69 ****\ data binding error ****
at org.jetbrains.kotlin.analyzer.AnalysisResult.throwIfError(AnalysisResult.kt:57)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler.compileModules(KotlinToJVMBytecodeCompiler.kt:137)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:158)
at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:61)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:107)
at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51)
at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:386)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$1$2.invoke(CompileServiceImpl.kt:96)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:892)
at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:96)
at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137)
at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:919)
at
Run Code Online (Sandbox Code Playgroud)
这是我的实现:
class CustomEditText @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = …Run Code Online (Sandbox Code Playgroud) 我目前LifecycleObserver用于通知诸如onStart我的观点之类的事件。这对于作为演示者或处理程序的组件非常有用,例如FacebookLoginHandler一旦视图准备好就需要注册回调。但是,在某些情况下,正如我提到的那样,我希望我的处理程序处理另一个活动的返回数据。
例子:
当我选择使用 Facebook 登录时,它会启动另一个活动,并将其返回到视图的onActivityResult方法。这让我FacebookLoginHandler在视图中注入 my ,只是将处理委托给它。我想用来LifecycleObserver获得通知onActivityResult并避免将我的处理程序耦合到视图仅用于委派此事件。有没有办法做到这一点?
android android-facebook android-architecture-lifecycle android-architecture-components
我正在使用FCM进行聊天应用.每次用户收到消息时,我都会通过FCM向他发送通知.如果用户未在前台使用我的Web应用程序,则消息处理将在默认的Service Worker中进行,该Service Worker会生成一个通知,其中包含我在请求正文中指定的参数.问题是,每次发送新推送消息且应用程序处于后台时,浏览器(在Chrome和Firefox上测试)都会创建新消息,而不是更新现有消息.我想保留已经可见的通知并仅更新其值,这可能吗?
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js');
firebase.initializeApp({
'messagingSenderId': '*****'
});
const messaging = firebase.messaging();
Run Code Online (Sandbox Code Playgroud)
{
"priority" : "normal",
"collapse_key": "demo",
"notification": {
"title": "Felicius Humble",
"body": "This is a sample message content",
"click_action": "https://****.herokuapp.com",
"icon": "****"
},
"to": "****",
"data": {
"id": 7,
"timestamp": 1493573846692,
"content": "teste",
"type": "MESSAGE",
"direction": "OUTPUT",
"sender": {
"id": 5,
"name": "Felicius Humble",
"email": "****@gmail.com",
"gender": "MALE",
"picture": "****",
"facebookID": "****",
"fcmToken": "****",
"accessToken": "****"
},
"chatID": 3
}
}
Run Code Online (Sandbox Code Playgroud) 我对批注处理器的当前理解是,它指的是预先准备文件以查找某些批注的代码,然后基于该代码生成或更改其他代码。它发生在项目的常规编译阶段之前。
在gradle中,我们通常使用apt,kpt-我有时看到使用annotationProcessor-表示在“注释处理时”需要一些依赖。
如果上面的理解是正确的,那么compileOnly与apt,kpt等有什么不同?
android ×5
kotlin ×3
gradle ×2
android-architecture-components ×1
android-architecture-lifecycle ×1
data-binding ×1
firebase ×1
java ×1
reactjs ×1
spring-boot ×1