2017-02-17 12 views
0

私はアンドロイドndkを使用して自分のコードをコンパイルしたいと思います。私はWindowsマシンを使用しています。 私のandroid.mkは以下の通りです。*** Android NDK:中断しています。 。停止

LOCAL_PATH := $(call my-dir) 
SHELL := PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin /bin/bash 

include $(CLEAR_VARS) 

LOCAL_MODULE := streamer_native_manager 
LOCAL_SRC_FILES := streamer-native-manager.c gstrtpchannels.c skyrtpL16pay.c skyrtpL16depay.c 
LOCAL_C_INCLUDES := gstrtpchannels.h skyrtpL16pay.h skyrtpL16depay.h 
LOCAL_SHARED_LIBRARIES := gstreamer_android 
LOCAL_LDLIBS := -llog -landroid 
LOCAL_ARM_MODE := arm 
include $(BUILD_SHARED_LIBRARY) 

そしてbuild.gradleに、私が作った設定以下、

sourceSets { 
    main { 
     jni.srcDirs = [] 
     jniLibs.srcDir 'src/main/libs' 
     java.srcDirs += 'src/main/jni/src' 
     assets.srcDirs += 'src/main/jni/assets' 
    } 
} 

と同じファイルにコンパイルするための

task nativeBuild(type: Exec, description: 'Compile JNI source via NDK') { 
      def ndkDir = project.plugins.findPlugin('com.android.application').sdkHandler.ndkFolder 
      commandLine "$ndkDir\\ndk-build.cmd", 
        '-C', file('src\\main\\jni').absolutePath, 
        '-j', Runtime.runtime.availableProcessors(), 
        'all' 
     } 

     task cleanNative(type: Exec, description: 'Clean JNI object files') { 
      def ndkDir = project.plugins.findPlugin('com.android.application').sdkHandler.ndkFolder 
      commandLine "$ndkDir\\ndk-build.cmd", 
        '-C', file('src\\main\\jni').absolutePath, 
        'clean' 
     } 

     clean.dependsOn 'cleanNative' 

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

しかし、私はクリーンなプロジェクトを行うときに、私は次のエラーを取得しています、

`*** Android NDK:中止。 。やめる。 エラー:タスク ':app:cleanNative'の実行に失敗しました。

Process 'command 'AndroidSDK\ndk-bundle\ndk-build.cmd'' finished with non-zero exit value 2`

私はWindowsマシンを使用していますので、誰でもお手伝いできますか?

+0

'-j'設定がクリーンタスクに渡されますか? https://github.com/android-ndk/ndk/issues/198 –

答えて

0

これが新しい問題ですか?これは、開発環境が適切にセットアップされていないように思えるのは、コードを単に掃除するだけだからです。ビルド時にこのエラーが発生した場合は、自分のコードを見るといいでしょう。しかし、それはクリーニング時に発生するので、ほとんどが開発環境でなければなりません。

最近あなたのパスに触れましたか?

Cygwinがパス上にあることを確認する必要があります。

+0

いいえ、アンドロイドダウンロードマネージャからndkをインストールしてプロジェクトをクリーンアップしようとしましたが、私は変更されました。「commandLine」$ ndkDir \\'clean' 'はスラッシュしてウィンドウと一致させますが、もしそれを元に戻しても、それでも元に戻すことができます/ ndk-build.cmd"、 '-C'、ファイル( 'src \\ main \\ jni')。動作しません。 – Rohit

+0

Cygwin端末をインストールする必要はありますか? – Rohit

+0

私はEclipseを使って開発を行っているため、Androidスタジオの状況はわかりませんが、はい、NDKコードをコンパイルするにはCygwinが必要です –