2016-11-14 78 views
0

我想從ARToolkit中使用ntfSimpleProj示例。 我設置環境變量:ARToolkit gradle生成錯誤

export ANDROID_HOME=/media/applica/Storage/Android/Sdk; export ANDROID_NDK_ROOT=$ANDROID_HOME/ndk-bundle; export NDK=$ANDROID_NDK_ROOT;

後,我成功地建立在android文件夾,運行./build.sh兩個腳本和./build_native_examples.sh

但gradle這個的構建返回我這個錯誤:

Error:Attempt to read property 'main' from a write only view of model element 'android.sources' given to rule android.sources { ... } @ nftSimple/build.gradle line 40, column 5

這是我的gradle這個文件:

apply plugin: 'com.android.model.application' 

model { 
    android { 
     compileSdkVersion = 22 
     buildToolsVersion = "23.0.3" 

     defaultConfig.with { 
      applicationId = "org.artoolkit.ar.samples.NftSimple" 
      minSdkVersion.apiLevel = 15 
      targetSdkVersion.apiLevel = 22 
      versionCode = 1  //Integer type incremented by 1 for every release, major or minor, to Google store 
      versionName = "1.0" //Real fully qualified major and minor release description 

      buildConfigFields.with { //Defines fields in the generated Java BuildConfig class, in this case, for 
       create() {   //default config, that can be accessed by Java code 
        type = "int"  //e.g. "if (1 == BuildConfig.VALUE) { /*do something*/}". 
        name = "VALUE" //See: [app or lib]/build/generated/source/buildConfig/[package path]/ 
        value = "1"  //  BuildConfig.java 
       } 
      } 

      ndk.with { 
       moduleName = "NftSimple" 
      } 
     } 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
    } 

    android.productFlavors { 
    } 

    android.sources { 
     main.jni { 
      source { 
    apply plugin: 'com.android.model.application' 

model { 
    android { 
     compileSdkVersion = 22 
     buildToolsVersion = "23.0.3" 

     defaultConfig.with { 
      applicationId = "org.artoolkit.ar.samples.NftSimple" 
      minSdkVersion.apiLevel = 15 
      targetSdkVersion.apiLevel = 22 
      versionCode = 1  //Integer type incremented by 1 for every release, major or minor, to Google store 
      versionName = "1.0" //Real fully qualified major and minor release description 

      buildConfigFields.with { //Defines fields in the generated Java BuildConfig class, in this case, for 
       create() {   //default config, that can be accessed by Java code 
        type = "int"  //e.g. "if (1 == BuildConfig.VALUE) { /*do something*/}". 
        name = "VALUE" //See: [app or lib]/build/generated/source/buildConfig/[package path]/ 
        value = "1"  //  BuildConfig.java 
       } 
      } 

      ndk.with { 
       moduleName = "NftSimple" 
      } 
     } 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 
        'proguard-rules.pro' 
     } 
    } 

    android.productFlavors { 
    } 

    android.sources { 
       srcDirs = ['src/main/nop'] 
      } 
     } 
     main.jniLibs { 
      source { 
       srcDirs = ['src/main/libs'] 
      } 
     } 
    } 
} 

dependencies { 
    //compile 'com.android.support:support-v4:23.0.1' 
    //compile 'com.android.support:appcompat-v7:23.0.1' //Only required when the target device API level is greater than 
    compile project(':aRBaseLib') 
}              //the compile and target of the app being deployed to the device 

可發omeone幫助我?

非常感謝!

回答

0

我修正了錯誤,我必須更改gradle中的聲明聲明。

從這:

android.sources { 
      srcDirs = ['src/main/nop'] 
     } 
    } 
    main.jniLibs { 
     source { 
      srcDirs = ['src/main/libs'] 
     } 
    } 
} 

要這樣:

android.sources { 
    main{ 
     jni { 
      source { 
       srcDirs "src/main/nop" 
      } 
     } 

     jniLibs { 
      source { 
       srcDirs "src/main/libs" 
      } 
     } 
    } 
}