Kev*_*ght 14 android scala scala-2.8
在android上使用Scala的权威参考资料似乎在这里:http://www.scala-lang.org/node/160
不幸的是,所有关于在Android上使用scala的引用都是基于Scala 2.7并且引用了一个自定义构建android-library.jar,其中有几个神秘的引用,暗示了android的更高版本不需要这个自定义构建(I' m使用2.1/API v7)
那么......在Android项目中使用Scala 2.8需要哪些步骤?最好使用eclipse和Google为该IDE提供的Android工具.
Jam*_*ore 11
编辑:
我这样做的新方法是使用我的Eclipse插件:https://github.com/banshee/AndroidProguardScala(自述文件包含安装说明和指向普通Eclipse更新站点的指针).
旧答案仍然有效,但新方法更好.
[旧方式]我的方法:
我没有把它用于比hello更有野心的东西,但是把它作为更多的一些提示.
在scala项目中,我在项目的根目录中添加了一个构建器(Builder> New),它只是一个名为pguard的shell脚本,包含:
#!/bin/sh
cd $1
PROGUARD=$HOME/dev/proguard/lib/proguard.jar
LIBS=
OUTPUT=lib/proguard.jar
rm -f $OUTPUT
AJAR=/Users/jamesmoore/dev/android-sdk-mac_86/platforms/android-7/android.jar
# java -jar $PROGUARD -injars 'bin:lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties)' -outjar $OUTPUT -libraryjars @proguard.txt
java -Xmx1g -jar $PROGUARD -injars 'bin:lib/scala-library.jar(!META-INF/MANIFEST.MF,!library.properties)' -outjar $OUTPUT -libraryjars $AJAR @proguard.txt
Run Code Online (Sandbox Code Playgroud)
构建器的位置设置为:
${build_project}/pguard
Run Code Online (Sandbox Code Playgroud)
并且工作目录和参数都设置为
${build_project}
Run Code Online (Sandbox Code Playgroud)
同样在scala项目的根目录中,有一个proguard参数文件@ proguard.txt:
-dontwarn
-dontoptimize
-dontobfuscate
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class com.banshee.** {
public protected *;
}
Run Code Online (Sandbox Code Playgroud)
当然,您需要更改-keep参数以保留自己的代码.
在java项目中,我添加了scala项目生成的jar文件(我在上面的脚本中使用了lib/proguard.jar).
但是,不要将scala项目添加为java项目构建路径中的必需项目.除了jar文件之外,这将添加scala类文件并混淆dex(因为它将同时获取.class文件和jar中的相同内容).据我所知,Eclipse将在工作区中构建所有内容,因此当您点击go按钮时,两个项目都会构建.
归档时间: |
|
查看次数: |
1758 次 |
最近记录: |