4

のプラグインClojureを使用して、でAndroid 開発を行いたいと考えています。人々がそれが可能であると述べているいくつかの投稿を見てきましたが、私はそれを機能させることができませんでした.CursiveAndroid Studio

ビルドしようとすると、Java から Clojure を呼び出そうとするとエラーが報告されます。

Error:(6, 18) error: package com.domain does not exist
Error:(15, 49) error: cannot find symbol variable tiny

これが私が試したことです:

  1. 私はすでに、スタンドアロンの Clojure アプリをビルドしてCursive実行しIntelliJています。leiningen

  2. Android Studio バージョン 1.5.1 を起動します。

  3. 新しい Android プロジェクトを作成します。選択された API レベル 15、空のアクティビティ

  4. この投稿に従って Cursive プラグインをインストールします: Is it possible to get the Cursive Plugin installed with Android Studio?

  5. clojure jar をクラスパスに追加: モジュール設定、依存関係、+ ライブラリ依存関係を開き、検索して選択します。org.clojure:clojure:1.8.0-RC5

  6. ビューからAndroidビューに切り替えてProject、Clojure src ディレクトリを作成します。app/src/main新しいディレクトリを選択して作成しますclojure

  7. 次のステップはClojure、この投稿の例を使用して、Java から呼び出すことができるソース ファイルを作成することです: Java から clojure を呼び出す

  8. src directory を選択clojureし、右クリックして次のNew Clojure Namespaceように入力します: com.domain.tiny(例で使用されている ns と一致させるため)

  9. 上記の例のコードを新しいファイルに貼り付けます (新しいファイルの ns は でtinyあり、そうあるべきだったことに注意してくださいcom.domain.tiny) 。

  10. と表示されますFile tiny.clj is not under a source rootので、 をクリックしAdd source rootます。これで、両方がsrc/javaありsrc/clojure、src ルートとして設定されました

  11. プロジェクトをビルドします。この時点で、Java コードにも Clojure コードにも構文エラーはなく、すべて問題ないように見えます。(ほぼ) 空の Android プロジェクトをデプロイして実行し、ローカル REPL を実行して Clojure コードをロードしてテストできます。

  12. Java からいくつかの Clojure コードを呼び出したいので、次のコードをMainActivity(上記の例から) に追加します。

    System.out.println("(binomial 5 3): " + tiny.binomial(5, 3));
    System.out.println("(binomial 10042, 111): " + tiny.binomial(10042, 111));
    
  13. com.domain.tinyAndroid Studio はパッケージとクラスを見つけることができ、tiny構文エラーはなく、見栄えが良い

  14. プロジェクトをビルドしてみてください。この時点でエラーが発生します。

    Error:(6, 18) error: package com.domain does not exist
    Error:(15, 49) error: cannot find symbol variable tiny
    

この時点で、私は立ち往生しています。コンパイラが Clojure コードを正常に認識していても、ビルド プロセスにはまだ何かが欠けていると思います。leiningen関与する必要はありますか?もしそうなら、私はどのように、またはproject.clj構成ファイルに何を入れなければならないのかわかりません。

誰にもアイデアはありますか?ありがとう!

4

1 に答える 1