Cannot change dependencies of configuration (after enabling instant run)

后端 未结 8 2145
眼角桃花
眼角桃花 2020-12-08 04:05

I just enabled instant run in my android studio project. (Followed the instructions here)

My project contains git submodules and somehow th

相关标签:
8条回答
  • 2020-12-08 04:18

    classpath 'com.android.tools.build:gradle:2.0.0-alpha1'

    try to change it to

     classpath 'com.android.tools.build:gradle:2.0.0-alpha6'
    

    alpha1 seems obsolete since today (?) and is not compiling any more. Also you'll have to upgrade your gradle to latest 2.10 to work with alpha6

    0 讨论(0)
  • 2020-12-08 04:22

    I had the same problem. I resolved it by removing the classpath in the submodule Top-level build.gradle file.

    dependencies { 
         // classpath 'com.android.tools.build:gradle:1.0.0'
    }
    

    I'm not sure if it's the best thing to do, but it worked for me.

    0 讨论(0)
  • 2020-12-08 04:25

    Take your dependencies out of your top level build gradle. As it is you are creating a classpath with your top level gradle and then attempting to overwrite it with your other build.gradles

    From:

    buildscript {
    repositories {
        mavenCentral()
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha6'
        classpath 'com.novoda:bintray-release:0.2.7'
        classpath 'io.fabric.tools:gradle:1.+'
    }}
    

    To: Note I did not add that commented line, Android-Studio does this automatically

    buildscript {
        repositories {
            jcenter()
        }   
        dependencies {
            classpath 'com.android.tools.build:gradle:2.0.0-alpha6'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            jcenter()
        }
    }
    

    You should be able to add any needed Maven repositories into your separate app gradles, as they should be specific and the jcenter would cover many of these, as @AndroidMechanic, and @Hi I'm Frogatto have been trying to say in previous answers and comments. Have a look at read here Bintray - JCenter

    The other thing is, I do not understand why you are managing your libraries build gradle within your project as part of your project. You should be referencing your library from your project, with the app build.gradle. You are treating the library gradle as the app gradle.

    dependencies {
        compile fileTree(include: '*.jar', dir: 'libs')
        compile 'com.android.support:support-v4:23.1.0'
        compile 'com.android.support:appcompat-v7:23.1.0'
    
        testCompile 'junit:junit:4.12'
    
    }
    

    Make these changes, then see what duplicates and you can manage that from there.

    Also, I recommend manually syncing project with gradle files when changes are made. I would not rely on instant anything, it's important to make changes step wise and take stock of what's occurring, particularly when it won't compile. That's my opinion only and one way to program in android.

    If instant run creates havoc with a particular project, I would disable it for that project. It is enabled by default and I've had no issues with it. The build mess may be the result of unclear gradles in your project to begin with.

    Also:

    In gradle wrapper properties, grade 2.10 is required for classpath 'com.android.tools.build:gradle:2.0.0-alpha6':

    distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
    

    See here for latest updates Android Tools Project Site

    Or you can install a previous version of Android Studio and use the previous working version of your project.

    If you have multiple git files, I suggest you remove the redundant ones, keep only the ones you are using for version control.

    0 讨论(0)
  • 2020-12-08 04:25

    The library project's build.gradle seems to cause the configuration error (because of some obscure reason). For me it was enough to also add the library project (which is a git submodule) to settings.gradle instead of only adding the library's project module.

    Instead of: include ':libraries:my_library:sdk'

    try including both the library subproject and the subproject's module: include ':libraries:my_library' include ':libraries:my_library:sdk'

    0 讨论(0)
  • 2020-12-08 04:28

    According to official documentation on instant run.

    What happened behind the scenes is that we have updated your project’s build.Gradle file to use the latest version of the Android Gradle plug-in, which is required for Instant Run to work. We also update your Gradle wrapper version to 2.8, and attempt to update the build tools version in all your modules to the latest (23.0.2). This isn't required for Instant Run, but it will use a new faster version of dex, which helps both instant run and a full build be a bit faster.

    A Snippet of Application\build.gradle is shown below:

    buildscript {
       repositories {
           jcenter()
       }
    
       dependencies {
           classpath 'com.android.tools.build:gradle:2.0.0-alpha1'
       }
    }
    

    Known Issues Using Instant Run

    Using Instant Run with Reflection

    Reflection could show unexpected things, for example:

    • Classes are all made public
    • Many other things are also made public

    Limitations with Performance Profiling

    We suggest temporarily disabling Instant Run while profiling your debug application.

    There is a very small performance impact when using Instant Run, and a slightly larger impact when methods are overridden.

    Increases in App Methods

    Instant Run adds some methods–140 plus three times the number of classes in your app and its local dependencies. If the app was previously just below the dex limit, enabling Instant Run may push your app over the dex limit. Learn how to fix this by Optimizing Multi dex Development Builds.

    Other Known Issues

    • Intermittent issues may occur where the IDE loses connection with the app which will trigger a full rebuild.
    • Third party Gradle plugin compatibility has not yet been tested, especially those that have not been updated to use the new transforms API.
    • Data-binding is currently broken in this build (capability to be restored).

    so if you are facing this issue then you can turn off you instant run

    go to Settings → Build, Execution, Deployment → Instant Run and uncheck Enable Instant Run… .

    Better understanding of instant run go here

    0 讨论(0)
  • 2020-12-08 04:31

    Two things you can try

    Change your plugin for "android"

    With the new gradle tools you need to specify the correct plugin for your module gradle file as well as your library gradle file. If you look closely, your library gradle file is correct:'

    apply plugin: 'com.android.library'
    

    Change your module gradle plugin:

    apply plugin: "android" -> apply plugin: 'com.android.application'
    

    org.apache classes are now depcrated

    This could also be a possible reason as to why your application isn't compiling anymore. Remove this:

    useLibrary 'org.apache.http.legacy'
    

    See Deprecated List.

    0 讨论(0)
提交回复
热议问题