2017-02-06 12 views
0

タイプExecのGradleタスクからPythonスクリプトを実行しようとしています。私の主なビルドタスクはこのタスクに依存しています。この例では、私のビルドタスクassembleProjectDebugを呼び出してみましょう。のは、これにも例を単純化してみましょう:コマンドラインビルドから実行しているが、Androidビルドから実行していないGradle Execタスク

tasks.create(name: newFooTask, type: Exec) { 
    commandLine "python", "doSomething.py" 
} 

tasks[assembleProjectDebug].dependsOn(newFooTask) 

私は端末から./gradlew assembleProjectDebugを実行する場合、私のPythonスクリプトを実行し、すべての世界でもあります。しかし、Build -> Make ProjectでAndroidスタジオからビルドしようとすると、私のpythonスクリプトは実行されません。

私も私の現在選択されているビルドバリアントが projectDebugに設定されていることを確認することができ、また、Androidのメーカーから構築するとき、 :app:assembleProjectDebugassembleProjectDebugタスクがあると信じて私をリードし、ログに表示されるか、実行されることを確認することができます

(Iそこに間違っている可能性があります)。

簡潔にするために、自分の$ PATH変数を私のpython execの場所に向ける私の仕事に環境変数をどこに割り当てるのかを除いています。

私の外で、サブプロセスのための適切な$ PATH変数の割り当てがうまくいかず、コマンドラインビルドでこのタスクが実行されるのですが、Android Studio内のビルドはこのタスクを実行しません。

+0

:あなたはここにConfigure on Demand詳細を読むことができます:両方のインスタンスでassembleProjectDebugを実行します。端末ビルドで 'app:assembleProjectDebug'の前に' newFooTask'に依存するタスクが実行されていますが、Android Studioビルドでは 'newFooTask'が実行されていません。 –

答えて

0

。 Android Studioからビルドすると、コマンドラインからビルドするときと同じように、私のタスクの依存関係は実行されていませんでした。これはAndroid Preferences -> Build, Execution, Deployment -> CompilerConfigure on Demandを選択したためです。 Android Studioはデフォルトでこの設定を適用します。アプリ:私は出力を `見ていますと依存タスク` assembleProjectDebug`は、端末のビルドとAndroid Studioの両方で実行されているが、ビルドすることを確認することができます

Configure on Demand in Gradle

0

それはあなたがExecのタスク

例:上workingDirを設定する必要があります可能性があります:私は私の問題への解決策を見つけた

tasks.create(name: newFooTask, type: Exec) { 
    commandLine "python", "doSomething.py" 
    workingDir = projectDir 
} 
+0

workingDirの設定が機能しませんでした。 –

関連する問題