gpt4 book ai didi

android - 使用 Scala 2.8 Trunk 构建以 Android 为目标

转载 作者:可可西里 更新时间:2023-11-01 19:05:47 24 4
gpt4 key购买 nike

在 android 上使用 Scala 的权威引用似乎在这里:http://www.scala-lang.org/node/160

不幸的是,所有关于将 scala 与 android 结合使用的引用资料都基于 Scala 2.7 并引用了自定义构建 android-library.jar,其中一些含糊不清的引用表明更高版本的 android 不需要此自定义构建(我使用的是 2.1/API v7)

那么... 在android 项目中使用Scala 2.8 需要哪些步骤?最好使用 eclipse 和 Google 为该 IDE 提供的 Android 工具。

最佳答案

编辑:

我的新方法是使用我的 Eclipse 插件:https://github.com/banshee/AndroidProguardScala (自述文件包含安装说明和指向普通 Eclipse 更新站点的指针)。

旧答案仍然有效,但新方法更好。

[老办法]我的做法:

  • 使用普通的 Android/eclipse 工具创建 Java 项目。
  • 添加第二个包含 Scala 代码的项目。这样我就可以保留生成的代码以供将来引用(我是 Android 和 Scala 的新手)。本项目可以引用android.jar。
  • scala 项目生成一个在 java 项目中使用的 jar 文件
  • 使用混淆器剥离库。我相信这避免了对 2.7 中使用的 scala-android.jar 的需要

虽然我没有将它用于比 hello, world 更雄心勃勃的事情,所以将它更多地当作一组提示。

在 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

构建器的位置设置为:

${build_project}/pguard

并且工作目录和参数都设置为

${build_project}

在 scala 项目的根目录中,还有一个混淆参数文件@proguard.txt:

-dontwarn
-dontoptimize
-dontobfuscate
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keep public class com.banshee.** {
public protected *;
}

当然,您需要更改 -keep 参数以保留您自己的代码。

在 java 项目中,我添加了 scala 项目生成的 jar 文件(我在上面的脚本中使用了 lib/proguard.jar)。

不过,不要将 scala 项目作为必需项目添加到 java 项目的构建路径中。这将在 jar 文件之外添加 scala 类文件并混淆 dex(因为它会同时获得 .class 文件和 jar 中的相同内容)。据我所知,Eclipse 将构建工作区中的所有内容,因此当您点击开始按钮时,两个项目都会构建。

关于android - 使用 Scala 2.8 Trunk 构建以 Android 为目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com