- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 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 更新站点的指针)。
旧答案仍然有效,但新方法更好。
[老办法]我的做法:
虽然我没有将它用于比 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/
以下代码在 c++17 模式下使用 clang-trunk 编译得很好,但在 c++2a(即将推出的 c++20)模式下会中断: // Meta struct describing the resul
我是 Mercurial 的新手。我习惯使用颠覆。人们习惯使用 trunk 作为项目的主文件夹。 当我在 Mercurial 中创建新存储库时,是否应该将默认分支命名为 Trunk ? 最佳答案 无论
谁能给我指出一个带有 jquery 教程的漂亮抽屉菜单。我正在尝试使用非常好的 Trunk.js 插件,但我遇到了问题。如果我将 slider 放入正文内容中,它会滚动到固定导航栏的顶部而不是其下方。
不幸的是,我有机会通过 Borland 的 StarTeam 进行源代码控制。不幸的是,它做的事情很少,最大的弱点是它的 View 管理。我喜欢 SVN,并且来自 SVN 思维模式。我们的问题是后期制
是否有可能在 svn 服务器中删除一个修订版,就好像它从未存在过一样? 所以我们有以下修改: 1004 // Commit of some bogus code that broke the buil
我的团队最近决定不使用大多数 Subversion 存储库布局中典型的“主干”分支。我们发现,在任何特定时刻,总会有一个特定的分支发挥着主干在其他存储库中所扮演的传统角色的作用。也就是说,我们始终有一
我有以下项目结构,想知道每个项目是否都应该有自己的 trunk 文件夹? myproject/trunk/myproject-commons myproject/trunk/myproject-web
我有一个包含以下目录的存储库: 分支机构 标签 中继 trunk目录包含了开发的主线。我为存储库创建了一个提交后 Hook 脚本,当用户提交回存储库时,它会更新(主干的)工作副本。 看起来像这样: /
转载请注明出处: 1.交换机与路由器 交换机与路由器的特点: 交换机(Switch): 用于在局域网中传输数据帧 基于MA
长话短说,我基本上在主干中创建了一个开发分支。 大约两周前,我决定在我们的存储库中创建一个单独的分支是有意义的,因为我们最终要切换到 visual studio 2010。我没有阅读我应该阅读的颠覆书
假设我已经从主干创建了标签和分支并删除了主干。删除主干后,标签和分支会怎样? 最佳答案 如果删除主干,标签和分支不会发生任何变化。如果您要从 SVN 中删除某些内容,那么您只是将其从 SVN 的当前状
好的,我已经切换到 branch,现在我的文件变成了蓝色,但是我怎样才能切换回 trunk? 最佳答案 您是否在切换回主干后尝试“尝试”提交以查看将提交哪个文件? 否则,蓝色表示修改过的文件,检查你的
以下操作只会从主干的头部修订版创建分支。如何从特定修订版创建分支?谢谢。 $ svn copy http://svn.example.com/repos/calc/trunk \ htt
显然我已经检查了过去几周对分支的提交。除了对一个文件的更改之外,我想将所有内容提交到主干。我该怎么办? 最佳答案 当您与 Mercurial 谈论命名分支时,您谈论的是变更集上的永久属性。变更集不能位
我们使用 SVN 作为数据存储库。我已经从 Eclipse 成功为我们的项目创建了分支现在我正在尝试创建标签,以便我可以将项目版本放在那里。但是当我尝试从 eclipse 创建“标签”时,它给了我以下
我已经在 Fossil SCM 工作了一段时间,但我仍然看到一些我不太明白的东西。 在屏幕截图中,您可以看到我在存储库中有两个叶子,但遗憾的是我找不到将它们合并回主干的方法(在我的所有提交中都有“叶子
我从 lauchpad 下载 OpenERP 的主干版本。当我启动服务器时出现以下错误 追溯(最近的调用最后): 文件“./openerp-server”,第 2 行,位于 导入 openerp 文件
我创建了一个 Subversion 存储库以及 branches、tags 和 trunk 目录: svnadmin create file:///home/user/public_html/repo
我想让这段代码工作 #include template struct conditional { static constexpr auto value = T; }; template str
我已经在 CocoaPods trunk 上注册了两个账户。有没有办法指定推送时使用哪个账号,还是每次推送都需要重新注册中继服务? 最佳答案 目前最好的方法是替换 ~/.netrc 文件中的凭据。保存
我是一名优秀的程序员,十分优秀!