Androidスタジオ:complex build.xmlをbuild.gradleに移行するandroid


Answers

ちょうど記録のために:私は以前のant-buildを使用し、完全に移行したという考えをダンプしました。 私がやる必要のあるもののほとんどは、ディレクトリ構造だけで達成することができました。 あなたは私が他の質問でそれをした方法の詳細を見つけることができます:

Androidスタジオ:Gradle Product Flavors:カスタムプロパティの定義

今度は2番目の部分は私が本当にgroovy / gradleに移行したくないいくつかのことをしたjavaコードを呼び出すことでした。 したがって、私はJavaクラスを実行する方法を知っていました(実際にはjarファイルを作成しなくてはなりませんでしたが)。

Android Studio Gradle:静的なJavaメソッドを実行する(ANTからGradleへの移行)

誰かが質問をしたら、私は自分のベストを尽くして答えてくれるでしょう。

Question

私はEclipseからEclipseにアンドロイドスタジオへのプロジェクトを正常に移行し、デフォルトのbuild.gradleファイルが生成されました。 プロジェクトが正しくビルドされ、デバッグなどにデプロイできます。

実際の問題はビルドAPKファイル(コマンドラインから)私はカスタムのビルドを持っていた(コマンドラインを介して呼び出され、Eclipseからではない)ビルドです。

私のカスタムbuild.xmlはSDKフォルダから標準のsdk build.xmlファイルをインポートしました:

<import file="${sdk.dir}/tools/ant/build.xml" />

だから、私がbuild.xmlでやらなければならなかったのは、ターゲットをオーバーライドしたり、 "depends"を使ってターゲットにフックすることでした。

オーバーライドの例:

<target name="-set-release-mode" depends="-set-mode-check">
    <!--Here I rename my output apk files to something like: myapp-versionFromAndroidManifest.apk -->
</target

依存関係を追加する例

<target name="-pre-build" depends="clean">
    <!-- my custom code where I copy resource files, process command line arguments   
     use xpath to extract things like the version from the AndroidManifest.xml and 
     write them into custom xml files etc... -->
</target

だから、全体的な事件は本当にアリを使って簡単でした。 しかし、今、それがgradleに移行することになると、私は以前にアリで行ったことと同じように、具体的にどのように達成するのか?

  1. build.xmlには、自分のantビルドでインポートしたデフォルトのbuild.xmlがあります。標準のbuild.gradleファイルはどこかに存在するため、定義済みのタスクをチェックアウトできますか?
  2. gradleタスクをオーバーライドすることは可能ですか?はいの場合:どのように?
  3. 私はかなりアリのdepend = "..."をgradleで模倣できると確信していますが、私はどのように考えているのでしょうか。それはまた質問1への答えを必要とします。

私はチュートリアルの集まり、マイグレーションチュートリアル(不幸にも私の問題に対処していない)のようなGoogle検索を行った。

http://keepsafe-engineering.tumblr.com/post/87818767721/migrating-android-app-from-ant-to-gradle

http://ryanharter.com/blog/2013/07/17/migrating-android-projects-to-gradle/

私はまた、この問題について1または2または3の質問に答えることができないので、実際には役に立たなかったgradle文書からこの章を読んでいます。

http://www.gradle.org/docs/current/userguide/ant.html

以下はいくつか興味深い指摘をした:

http://toastdroid.com/2014/03/28/customizing-your-build-with-gradle/

私はまた、単にbuild.xmlをデフォルトのbuild.xmlをsdkフォルダから自分のbuild.xmlにコピーして、そのantビルドファイルをgradleにインポートし、antタスクを実行してビルドを実行しました。

<target name="release"
            depends="-set-release-mode, -release-obfuscation-check, -package, -post-package, -release-prompt-for-password, -release-nosign, -release-sign, -post-build"
            description="Builds the application in release mode.">
</target>

しかし、デフォルトのbuild.xmlがSDKバージョンに関連していると思われるエラーを投げ始めたので、これはもうオプションではないことを示唆する問題にぶつかり始めました。 新しいアンドロイドスタジオのプロジェクト構造のために、元のsdk build.xmlで多くのことを混乱させなければならなかったので、ファイルは期待された場所などではありませんでした...