折腾:
【未解决】Mac中用Android Studio打开rctjsa项目并编译apk和实时调试安卓手机小米9
期间,已经解决了gradle的问题。
然后自动继续sync,然后开始build,然后出错:
Could not find method leftShift() for arguments [build_1pjiekz1uqs36vttboddevsf5$_run_closure3@2711c614] on task ':notification:installServiceFirst' of type org.gradle.api.DefaultTask. Open File
点击Open File
打开了文件:
tools/notification/build.gradle
apply plugin: 'com.android.application' android { //Required to support the old folder structure sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } androidTest.setRoot('tests') } //Required to support builds although lint errors exist lintOptions { abortOnError false } compileSdkVersion rootProject.compileSdkVersion buildToolsVersion rootProject.buildToolsVersion defaultConfig { applicationId "com.gsma.rcs.registry" minSdkVersion rootProject.minSdkVersion targetSdkVersion rootProject.targetSdkVersion versionCode 1 versionName "2.0" archivesBaseName = "notification" } } dependencies { compile project(':api') compile 'com.android.support:support-v4:25.0.1' } //Below install dependecy was added to always install RCS service before //a RCS client to secure that Android handles RCS permissions correctly. task installServiceFirst(dependsOn: ':core:installDebug') << { println 'RCS core service was installed first!' } tasks.whenTaskAdded { task -> if (task.name == 'installDebug') { task.dependsOn installServiceFirst } }
其中的:
task installServiceFirst(dependsOn: ':core:installDebug') << {
这样报错的:
这段代码是:
//Below install dependecy was added to always install RCS service before //a RCS client to secure that Android handles RCS permissions correctly. task installServiceFirst(dependsOn: ':core:installDebug') << { println 'RCS core service was installed first!' }
感觉意思是:
每次运行一个RCS的客户端之前,确保始终都已安装了RCCS的服务了
这个也就是我们一直希望实现的目的啊
如果解决此问题,或许就顺带解决了之前的:
【未解决】rcsjta中RCS的RI中各种功能都提示:The service is not available Please retry later
的问题了
但是感觉提示内容:
Could not find method leftShift() for arguments [build_1pjiekz1uqs36vttboddevsf5$_run_closure3@2711c614] on task ':notification:installServiceFirst' of type org.gradle.api.DefaultTask.
和此处代码:
task installServiceFirst(dependsOn: ':core:installDebug') << { println 'RCS core service was installed first!' }
有点对不上?
然后Command+鼠标单击
提示:
Cannot find declaration to go to
Could not find method leftShift for arguments run_closure3 on task
android – Could not find method leftShift() for arguments after updating studio 3.4 – Stack Overflow
看来是:还是要找到此处的task的定义,估计里面有不兼容的语法
没有找到
才发现,本身当前文件就是函数定义和实现。。。
只是语法错了,去从:
task installServiceFirst(dependsOn: ':core:installDebug') << { println 'RCS core service was installed first!' }
改为:
//task installServiceFirst(dependsOn: ':core:installDebug') << { task installServiceFirst(dependsOn: ':core:installDebug') { doLast{ println 'RCS core service was installed first!' } }
其他几个文件,也依次改掉
RI/build.gradle
tools/settings/build.gradle
tools/notification/build.gradle
samples/api/tts/build.gradle
然后顺带也从
task installServiceFirst(dependsOn: ':core:installDebug') {
加深理解了,此处的 RCS的service,就是core的installDebug 所安装的debug的app
都改完了,再去点击Try again 重试
开始重新编译:
然后此处错误就消失了。
【总结】
此处看来是由于gradle升级后的语法不同,之前的:
task installServiceFirst(dependsOn: ':core:installDebug') << { println 'RCS core service was installed first!' }
(此处有多处:
RI/build.gradle
tools/settings/build.gradle
tools/notification/build.gradle
samples/api/tts/build.gradle
)
需要改为:
task installServiceFirst(dependsOn: ':core:installDebug') { doLast{ println 'RCS core service was installed first!' } }
即可。
转载请注明:在路上 » 【已解决】Android Studio中build编译rcstja项目报错:Could not find method leftShift for arguments on task notification installServiceFirst of type org.gradle.api.DefaultTask