2015-08-08 15 views
11

Próbowałem skonfigurować Studio Android dla NDK, postępując zgodnie z artykułem this i artykułem this. Poniżej przedstawiono zawartość moich gradle-wrapper.propertiesJak skonfigurować projekt NDK w Android Studio 1.3

#Sat Aug 08 09:36:53 IST 2015 
distributionBase=GRADLE_USER_HOME 
distributionPath=wrapper/dists 
zipStoreBase=GRADLE_USER_HOME 
zipStorePath=wrapper/dists 
distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip 

Poniżej znajduje się treść build.gradle (projekt)

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

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

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

i wreszcie build.gradle (moduł)

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

model { 
    android { 
     compileSdkVersion = 22 
     buildToolsVersion = "23.0.0 rc3" 

     defaultConfig.with { 
      applicationId = "com.opaxlabs.nativetest" 
      minSdkVersion.apiLevel = 15 
      targetSdkVersion.apiLevel = 22 
      versionCode = 1 
      versionName = "1.0" 
     } 
     android.buildTypes { 
      release { 
       minifyEnabled = false 
       proguardFiles += file('proguard-rules.pro') 
      } 
     } 
    } 
    android.ndk{ 
     moduleName = "native" 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.1' 
} 

gdy próbuję zsynchronizować Gradle plików pojawia się następujący błąd:

Error:No such property: android for class: com.android.build.gradle.managed.AndroidConfig 

następujące ścieżki są zdefiniowane w local.properties

ndk.dir=/opt/adt-bundle-linux-x86_64-20140702/sdk/ndk-bundle 
sdk.dir=/opt/adt-bundle-linux-x86_64-20140702/sdk 

więc wygląda na to, że coś przeoczyć tylko nie mogę go zlokalizować. Każda pomoc zostanie bardzo doceniona.

Odpowiedz

21

W swojej build.gradle (moduł), to android.buildTypes blok musi zewnątrz android bloku. Tak powinno to wyglądać tak:

model { 
    android { 
     compileSdkVersion = 22 
     buildToolsVersion = "23.0.0 rc3" 

     defaultConfig.with { 
      applicationId = "com.opaxlabs.nativetest" 
      minSdkVersion.apiLevel = 15 
      targetSdkVersion.apiLevel = 22 
      versionCode = 1 
      versionName = "1.0" 
     } 
    } 
    android.buildTypes { 
     release { 
      minifyEnabled = false 
      proguardFiles += file('proguard-rules.pro') 
     } 
    } 
    android.ndk{ 
     moduleName = "native" 
    } 
} 
+0

Bardzo pomaga, dzięki! – Roman

+0

Dla tych, którzy migrują z 0.2.0 do 0.4.0 UWAGA: + = nie działa już w wersji 0.4.0, zobacz http://tools.android.com/tech-docs/new-build-system/gradle-experimental # TOC-0.2.x --- 0.4.0 – skyfishjy

1

Czy zadeklarowałeś swoją ścieżkę NDK w pliku Local.property?

Wygląda na ścieżce środowiska i pliki local.properties są skierowane do różnych lokalizacjach:

PATH: C:\Program Files (x86)\Android\android-ndk-r9d 

local.properties: C: \ Program Files (x86) \ Android \ android-studio \ android-NDK -r9d

Upewnij się, co jest poprawne. Możesz zachować PATH i usunąć dekleracje local.properties, a następnie wypróbować to polecenie za pomocą konsoli: ndk-build -? aby sprawdzić, czy został znaleziony w PATH

+0

Nie trzeba zadeklarować 'NDK Path' jako Android 1.3 Studio ** **. Teraz jest ustawiony w 'Struktura projektu> Lokalizacja SDK'' – Mackovich

+1

Nigdy nie używaj ścieżek ze spacjami dla NDK. Zestaw SDK systemu Android może być niezadowolony, jeśli jego ścieżka zawiera również spacje. –

-2
NDK Build option 

ndk { 
    moduleName "SeePlusPlus" // Name of C++ module (i.e. libSeePlusPlus) 
    cFlags "-std=c++11 -fexceptions" // Add provisions to allow C++11 functionality 
    stl "gnustl_shared" // Which STL library to use: gnustl or stlport 
} 
+0

Przepraszam za downvote, ale twój skrypt gradle nie respektuje składni Gradle 2.5. Zobacz, dlaczego: http://tools.android.com/tech-docs/new-build-system/gradle-experimental – Mackovich

Powiązane problemy