Eclipse 带有Scala的Android库项目可以工作,但不可扩展
我发现了一个在scala for Android中使用Eclipse创建库项目和主应用程序的变通方法,我想与大家分享。然而,Eclipse中晦涩难懂的清理过程(见最后的问题)阻碍了我在更大的项目中实现这个特性,而这个解决方法目前还不能完全奏效 我假设您已经安装了Eclipse 3.6、Scala 2.8.3的插件、最新的Android SDK(对我来说是18个)、treeshaker插件等配置 创建库Eclipse 带有Scala的Android库项目可以工作,但不可扩展,eclipse,scala,build,android-library,Eclipse,Scala,Build,Android Library,我发现了一个在scala for Android中使用Eclipse创建库项目和主应用程序的变通方法,我想与大家分享。然而,Eclipse中晦涩难懂的清理过程(见最后的问题)阻碍了我在更大的项目中实现这个特性,而这个解决方法目前还不能完全奏效 我假设您已经安装了Eclipse 3.6、Scala 2.8.3的插件、最新的Android SDK(对我来说是18个)、treeshaker插件等配置 创建库 文件>新建>项目>Android项目 项目名称:TestScalaLibrary,新建,使用
- 文件>新建>项目>Android项目
- 项目名称:
,新建,使用默认位置,下一步TestScalaLibrary
- 目标2.3.3 API 10,下一步
- 应用程序名称:
,包名testscalaribrary
,创建名为com.examplebrary
,完成testscalaribraryactivity
- 右键单击项目,配置,添加scala nature
- 在项目上单击鼠标右键,添加/删除Treeshaker
- 右键单击项目、属性。。。安卓,勾选“是库”,好吗
- 在package
中创建一个名为com.examplebrary
的新scala类,其内容如下:TestScalaLibraryActivity2
package com.exampleLibrary import android.app.Activity import android.os.Bundle class TestScalaLibraryActivity2 extends Activity { override def onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) setContentView(R.layout.main) } }
- 删除文件
testscallalibraryactivity.java
- 更新
方法是将AndroidManifest.xml
替换为android:name=“.testscalaribraryactivity”
android:name=“com.examplebrary.testscalaribraryactivity2”
- 清理项目,让它自动生成。如果在某个时候由于无法删除
而导致生成错误,请在eclipse之外通过临时关闭引用此库的项目手动执行此操作李>testscalalibrary.jar
- 文件>新建>项目>Android项目
- 项目名称:
,新建,使用默认位置,下一步TestScala
- 目标2.3.3 API 10,下一步
- 应用程序名称:TestScala,包名
,创建名为com.exampleApplication
TestScalaActivity
- 右键单击项目,配置,添加scala nature
- 在项目上单击鼠标右键,添加/删除Treeshaker
- 右键单击项目、属性。。。安卓,库,添加。。。将项目
添加为库项目,好吗TestScalaLibrary
- 编辑
并将相对名称AndroidManifest.xml
替换为其绝对等效名称android:name=“.TestScalaActivity”
android:name=“com.examplebraryactivity2”
RunTimeException
看看LogCat,它最终会告诉您问题来自何处。
原因:加载程序dalvik.system.PathClassLoader中的java.lang.ClassNotFoundException:com.exampleLibrary.TestScalaribraryActivity2
为了解决这个问题,我采用了以下变通方法
- 在项目TestScala中,使用以下代码创建类
:TestScalaActivityDummy
package com.exampleApplication class TestScalaActivityDummy {}
- 删除文件
(是,删除文件),清理项目,让它自动重建。启动它。它仍然有效李>TestScalaActivityDummy.scala
- 再次清理项目,可能几次。 然后,如果您启动它,您将再次得到一个RunTimeException
为什么在一次清理、一次启动和一次清理之后会出现这些错误?解决方案是在没有treeshaker的情况下重新开始,而是使用AndroidDrugardScala插件:
没有直接回答您的问题,但我在maven+scala+android上黑客攻击了几天,但最终在sbt+sbt android插件中找到了解决方案。加上sbt idea插件生成idea项目。请注意,Idea free也支持Android和Scala,也许值得一试。或者sbteclipse来生成Eclipse项目(),虽然没有经验。我也不能解决这个问题,但我想为scala+android推荐一个不同的Eclipse插件:(我是作者)非常棒的插件!我会写下一个不同的解决方案,它现在正在发挥作用。