luckybilly / CC

业界首个支持渐进式组件化改造的Android组件化开源框架,支持跨进程调用。Componentize your android project gradually.
https://luckybilly.github.io/CC-website/
Apache License 2.0
4.04k stars 636 forks source link

Android3.4下无法编译通过 #139

Closed kigkrazy closed 5 years ago

kigkrazy commented 5 years ago

环境信息

1. 代码导入报错如下:

image

2. 点击更新Upgrade plugin to version 3.4.0 and sync project,升级gradle版本到3.4

ERROR: Cause: tried to access method org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V from class org.gradle.api.plugins.AndroidMavenPlugin$8

3. 参照#123

3.1. CC/cc-register/build.gradle:启用被注释的第42行代码//apply plugin: 'maven' -> apply plugin: 'maven'

3.2. CC/bintray.gradle中注释掉如下内容

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: uri('../repo-local')) //deploy到本地仓库
            pom.groupId = publishedGroupId
            pom.artifactId = artifact
            pom.version = libraryVersion + '-SNAPSHOT'
        }
    }
}

3.3依旧报错

ERROR: Cannot add task 'install' as a task with that name already exists.

4. 注释掉CC/cc-register/build.gradle中的apply from: rootProject.file('bintray.gradle')

报错如下

ERROR: Could not get unknown property 'GradleVersion' for project ':demo' of type org.gradle.api.Project.

============================================ 以上是我报错处理,请问哪里有问题吗, AS3.4编译不过问题。

kigkrazy commented 5 years ago

以下方案测试通过,高版本AS朋友可以参考下。

AS高版本解决方案

1. 下载代码同步的时候,点击更新Upgrade plugin to version 3.4.0 and sync project,升级gradle版本到3.4

2. 注释掉cc-register/build.gradlecc-register/build.gradlemvn插件相关内容

注释内容如下:

apply from: rootProject.file('bintray.gradle')

apply plugin: 'maven'
uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: uri('../repo-local')) //deploy到本地仓库
            pom.groupId = publishedGroupId
            pom.artifactId = artifact
            pom.version = libraryVersion + '-SNAPSHOT'
        }
    }
}

3. 解决GradleVersion相关警告

找到cc-settings-2.gradlecc-settings-demo.gradle中的如下内容:

def dependencyMode = GradleVersion.version(project.gradle.gradleVersion) >= GradleVersion.version('4.1') ? 'api' : 'compile'

将其替换成如下:

def dependencyMode = 'api'

4. 解决kotlin相关错误(kotlin版本太低引起)

build.gradleext.kotlin_version = '1.1.51'改成ext.kotlin_version = '1.3.10'。将demo_component_kt/build.gradle中的implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"改成implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"。(jre改成jdk

lgengsy commented 5 years ago

同样遇到这个问题,主要原因是GradleVersion 这个API在新的版本中废弃了,其实这个地方直接改下成默认是api就行了,不用做判断。