2016-04-19 48 views
0

Androidアプリケーションをビルドするためのバッチファイルがあります。基本的にはgradlew.bat assembleです。ビルドマシン(Windows 8)にリモートデスクトップをインストールしてバッチファイルを実行すると、すべてが期待どおりにビルドされます。しかし、NTサービスを通じてバッチファイルを呼び出すと、エラーが発生します。インタラクティブアカウントではGradleは正常に動作しますが、NTサービスでは正常に動作しません。

サービスが実行されるアカウントには、マシンに対する管理者権限があります。

最初のエラーはjavax.net.ssl.SSLHandshakeExceptionでした。別の投稿Android Studio Gradle build failed. Error:Cause: peer not authenticatedに基づいて、gradle-wrapper.propertieshttpsの代わりにhttpに変更して配信URLにしました。それがこの問題を解決しました。

次のエラーも同様でしたが、今回はpomファイルをダウンロードしていました。別の投稿android- Gradle: An issue occurred configuring root project android studioに基づいて、私はbuild.gradleをデフォルトのhttpsの代わりにURLとしてhttp://jcenter.bintray.com/に変更しました。

今、私は次のエラーを取得しています:httpsはNTサービスアカウントではなく、通常の対話的なアカウントで問題を引き起こす可能性があり、なぜ

Could not parse POM  
http://jcenter.bintray.com/com/android/tools/build/gradle/1.1.0/gradle-1.1.0.pom 

私は疑問に思って。それを修正する方法はありますか?もしそうでなければ、誰かが上記のエラーが何を意味するのかについての洞察を持っていれば感謝します。よろしく。

+0

これは古いです:com/android/tools/build/gradle/1.1.0/gradle-1.1.0.pom。バージョン「2.0.0」以上を使用してください。 –

答えて

0

対話ユーザーとして正常に実行されるが、サービスとして実行されると失敗するプログラムの一般的な原因は、実行を囲むユーザー設定が変更されたことです。たとえば、Gradleを実行すると、%USERPROFILE%\ .gradle(通常はc:\ users \ <のユーザー名>)に設定があります。対話的にログインしたアカウントとサービスが実行されているアカウントとは異なります。

サービスとして実行すると、別のユーザープロファイルが存在する可能性があります。あなたのバッチスクリプトに環境をダンプさせ(.batファイルの最上部近くに "set"を追加する - これは環境変数のアルファベット順のリストをダンプする)、インタラクティブに実行するときのサービスとして実行される出力を比較する。 USERPROFILEが定義されているかどうか、サービスエリアの.gradleフォルダと自分の.gradleフォルダを比較するかどうかを確認します。

Gradleの設定に加えて、Gradleのキャッシュは通常.gradleフォルダの下にあります。キャッシュにはサービスのキャッシュとは異なる項目が含まれている可能性があります。これは、ビルドが接続しようとしている外部リポジトリに認証の問題がある場合に重要になる可能性があります(ユーザー構成の異なる資格情報!)

https要求を処理するツールは、ユーザープロファイルのどこかの証明書を検索する場合があります。承認されたサービスの証明書に含まれていない証明書(httpsサーバーを「認識」するために使用)を受け入れた可能性があります。これらはおそらくユーザープロファイルの.keystoreファイルにあります。 Javaのkeytool.exeは、このファイルのデコードとダンプに役立ちます。

あなたのビルドに関連する他のツールは、あなたのスペースとサービスアカウントのスペース(例えば、Android(.android)、Java、Maven(.m2)、Git .gitconfigなど)

関連する問題