3

「AndroidでScalaを使用する」チュートリアルは、単純な「Hello World」アプリを作成するためだけに表示されます。実際の Android アプリで Scala ライブラリ jar の使用に成功した人はいますか?

Android プロジェクトでgoose ライブラリ ( https://github.com/GravityLabs/goose/ ) を使用しようとしました。ソースから goose-2.1.22.jar をビルドしました。Android プロジェクトの libs ディレクトリに挿入し、何が起こるかをテストするコードを追加しました。

String url = "http://www.cnn.com/2010/POLITICS/08/13/democrats.social.security/index.html";
Configuration cfg = new Configuration();
Goose goose = new Goose(cfg);
com.gravity.goose.Article article = goose.extractContent(url);
String s = article.cleanedArticleText().toString();

プロジェクトは問題なくコンパイルされました。ただし、実行しようとすると、例外が発生します。

java.lang.NoClassDefFoundError: com.gravity.goose.Configuration

scala-for-android.jar を libs フォーム "Scala for Android" プロジェクトに追加するか、最新の安定した Scala から scala-library.jar を追加すると、少し良くなります。

    java.lang.ExceptionInInitializerError
    at com.gravity.goose.Configuration.<init>(Configuration.scala:77)
    at com.hyperionics.ScalaTest.TestActivity$1.onClick(TestActivity.java:31)

それを機能させるためのトリックはありますか?


詳細情報:クラッシュは goose の Configuration.scala ファイルの次の行にあります。

var contentExtractor: ContentExtractor = StandardContentExtractor

一定期間のテストの後、Scala ディストリビューションの lib ディレクトリからすべての jar ファイルをプロジェクトに追加しましたが、違いはなく、同じようにクラッシュしました。また、 http://code.google.com/p/scalaforandroid/で「Scala for Android」プロジェクトを見つけ、標準の Scala ディストリビューションの代わりに jar を追加しましたが、違いはありません。プロジェクトをコンパイルして「Android Dex: メソッドが多すぎます...」というエラーを回避するには、DexGuard を使用する必要がありました。Proguard で再び奇妙なエラーが発生していたためです。

この作業を行う方法に関するその他のヒントは大歓迎です!

4

0 に答える 0