2016-05-12 36 views
0

NDKが必要なEclipseプロジェクトをインポートしたいので、最新のAndroidスタジオビルド1.5を使用しています。私のプロジェクトは機能しています。それがエラーを作るのです、私はorg.apache.tools.ant.taskdefs.condition.Osをインポートしようが、私はAPKを建てたときにそれが働いています:Android Studio NDKビルドの問題エラー: ':app:ndkBuild'タスクの実行に失敗しました

Error:Execution failed for task ':app:ndkBuild'. 
> A problem occurred starting process 'command 'ndk-build.cmd'' 

マイbuild.gradle:

apply plugin: 'com.android.application' 
import org.apache.tools.ant.taskdefs.condition.Os 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "vaeapp.gamecard.vn" 
     minSdkVersion 14 
     targetSdkVersion 19 
     multiDexEnabled = true 
     versionCode 4 
     versionName "1.3.4" 

     ndk { 
      moduleName "gc" 
     } 
    } 
    task ndkBuild(type: Exec) { 
     if (Os.isFamily(Os.FAMILY_WINDOWS)) { 
      commandLine 'ndk-build.cmd', '-C', file('src/main').absolutePath 
     } else { 
      commandLine 'C\\:\\\\Users\\\\Android\\\\AppData\\\\Local\\\\Android\\\\sdk\\\\ndk-bundle', '-C', file('src/main/jni').absolutePath 
     } 
    } 

    tasks.withType(JavaCompile) { 
     compileTask -> compileTask.dependsOn ndkBuild 
    } 

    repositories { 
     jcenter() 
     maven { url "https://jitpack.io" } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    //compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'com.android.support:appcompat-v7:23.2.0' 
    compile 'com.google.code.gson:gson:2.2.4' 
    compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' 
    compile 'com.facebook.android:facebook-android-sdk:4.2.0' 
    // compile 'com.android.support:appcompat-v7:20.0.0' 
// compile 'com.google.android.gms:play-services:+' 
    compile 'com.google.android.gms:play-services:4.0.30' 
    compile files('libs/activation.jar') 
    compile files('libs/additionnal.jar') 
    compile files('libs/commons-io-2.4.jar') 
    compile files('libs/error-reporter.jar') 
    //compile files('libs/httpclient-4.0.1.jar') 
    compile files('libs/mail.jar') 
    compile files('libs/universal-image-loader-1.9.3.jar') 
    compile fileTree(dir: 'libs', include: 'Parse-*.jar') 
    // compile 'com.parse:parse-android:1.10.1' 
    compile 'com.parse.bolts:bolts-android:1.+' 
    compile 'com.parse:parse-android:1.+' 
} 

私の地元.properties:

ndk.dir=C\:\\Users\\Android\\AppData\\Local\\Android\\sdk\\ndk-bundle 
sdk.dir=C\:\\Users\\Android\\AppData\\Local\\Android\\sdk 

私の修正エラーを助けてください。ありがとうございます!私たちは、次のラッパーを使用

答えて

0

:あなたのGradleで

task ndkBuild(type: Exec) { 

    File ndkDir = project.getPlugins().getPlugin('com.android.library').sdkHandler.getNdkFolder() 
    if (ndkDir == null) { 
     ndkDir = file(System.getenv('NDK_ROOT')) 
    } 

    if (ndkDir == null) { 
     def gradle_project_root = project.rootProject.rootDir 
     throw new GradleException("NDK is not configured. Make sure there is a local.properties " + 
       "file with an ndk.dir entry in the directory ${gradle_project_root}, or set the " + 
       "ANDROID_NDK envrionment variable") 
    } 

    def ndkBuildExecutable = new File(ndkDir, 'ndk-build') 
    if (Os.isFamily(Os.FAMILY_WINDOWS)) { 
     ndkBuildExecutable += '.cmd' 
    } 
    if (!ndkBuildExecutable.exists()) { 
     throw new GradleException("Could not find ndk-build. The configured NDK directory ${ndkDir} may not be correct.") 
    } 
    commandLine(ndkBuildExecutable, '-j8', '-C', file('src/main').absolutePath) 
} 

を、NDK-build.cmdの実際のパスは、Windows以外のプラットフォーム用に設定されています。私はこれが間違っていると信じています。あなたがそこに設定したパスがWindows-yのパスであるからです。エスケープ文字の乗算が狂ってしまうのを避けるために、あなたのgradleファイルにスラッシュ/を使用してパスを定義することができます。 'C:/Users/Android/AppData/Local/Android/sdk/ndk-bundle'。指定するすべてのパスに空白が含まれていないことを確認してください(例:'C:/Program Files')。

+0

com.android.libraryこれは何ですか? –

+1

@AhmadArslan:私は主に[ライブラリモジュール](https://developer.android.com/studio/projects/android-library.html)用のネイティブコードを使用します。アプリケーションモジュールに 'com.android.application'を使います。 ** ndkDir **を見つける他の方法があります:http://stackoverflow.com/questions/21999829/how-do-i-read-properties-defined-in-local-properties-in-build-gradle –

関連する問題