【问题标题】:Cannot set the value of read-only property 'jniFolders' on task ':android:packageDebug'无法在任务“:android:packageDebug”上设置只读属性“jniFolders”的值
【发布时间】:2016-03-06 04:48:43
【问题描述】:

我想在一段时间未使用的 Android Studio 中打开并进行项目,但是当 Android Studio 尝试加载项目时,它会失败并显示以下错误消息:

Error:(21, 0) Cannot set the value of read-only property 'jniFolders' on task ':android:packageDebug'.

我点击了build.gradle 的链接,我猜这些行是问题所在......

// needed to add JNI shared libraries to APK when compiling on CLI
tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
    pkgTask.jniFolders = new HashSet<File>()
    pkgTask.jniFolders.add(new File(projectDir, 'libs'))
}

我在这里看到一个答案:Google AppInvites break build 说...

通过添加这个来修复:

android {
  sourcesets {
    main {
      jniLibs.srcDir new File(buildDir, 'lib')
    {
  }
}

但是上面的答案不是很清楚。我不确定要更改哪一行,并且答案中的大括号似乎不匹配。

我完全不知道该怎么办?任何帮助表示赞赏。

谢谢

【问题讨论】:

    标签: android android-studio android-gradle-plugin


    【解决方案1】:

    好的,我必须将 build.gradle 文件的开头更改为此 ....

    android {
        buildToolsVersion project.androidToolsVersion
        compileSdkVersion project.androidSDKVersion.toInteger()
        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.srcDir 'libs'
            }
    
            instrumentTest.setRoot('tests')
        }
    }
    
    /*RBC
    // needed to add JNI shared libraries to APK when compiling on CLI
    tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
        pkgTask.jniFolders = new HashSet<File>()
        pkgTask.jniFolders.add(new File(projectDir, 'libs'))
    }
    RBC*/
    

    我添加了一行:

    jniLibs.srcDir 'libs'
    

    我注释掉了

    // needed to add JNI shared libraries to APK when compiling on CLI
    tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask ->
        pkgTask.jniFolders = new HashSet<File>()
        pkgTask.jniFolders.add(new File(projectDir, 'libs'))
    }
    

    C:\Users\plankton\Desktop\ThePlaneThatCouldntFly\flappytrip\android\build.gradle 文件中。

    我在阅读此https://github.com/libgdx/libgdx/issues/3027后想到了这个解决方案

    【讨论】:

    • 感谢它的工作原理。但是虽然我试图解决这个错误,但我失去了很多头发。
    【解决方案2】:

    我在尝试将“Libgdx Cross-platform Game Development Cookbook”中的 libgdx-cookbook 示例导入 Android Studio 2.1.1 时遇到了同样的问题。就我而言,它可以通过以下方式解决:

    • 正在导入/samples 项目;
    • 出现提示时不升级 Gradle 插件;
    • 更新 android 子项目下的build.gradle 文件,使其使用我拥有的buildToolsVersioncompileSkdVersion

      buildToolsVersion "23.0.3"
      compileSdkVersion 23
      
    • 再试一次。

    所以这可能与 Gradle 插件的版本有关。

    【讨论】:

      猜你喜欢
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 2020-01-02
      • 2016-02-14
      • 1970-01-01
      • 2017-10-29
      相关资源
      最近更新 更多