作者:戚明峰

最近接触了shadowsocks的Android客户端项目源码(https://github.com/shadowsocks/shadowsocks-android),刚好这个项目是使用Scala开发的.至于为什么使用Scala开发Android项目,大概原因如下:

Android 开发一直有两个无法回避的问题:基于 JVM 的设计使得系统的性能受到拖累;Java 冗繁的语法令人绝望。Scala 作为一门 state-of-the-art 的编程语言,兼具面向对象以及函数式语言的特点。其设计在 JVM 之上,与 Java 类库完全兼容,甚至可以与 Java 代码相互转换。可以说,Scala 是当前替代 Java 的最好选择,在不需要放弃已经无比先进的 JVM 和足够完备的 Java 生态的前提下,开发者们可以获得更先进的语言特性和更高的开发效率。至于Android 开发,Scala 则提供了全新的体验,在配合 Scaloid 的情况下代码量可以大大减少。

言归正传,如何搭建SBT编译Scala开发的Android工程.

一、SBT构建工具的安装

直接访问SBT的官网(http://www.scala-sbt.org/download.html)下载安装包,安装SBT即可。Windows平台下,有msi安装包,安装后直接自动完成了配置。

运行命令行 sbt about检验是否安装成功。成功安装会输出以下内容:

二、环境变量的配置

配置环境变量ANDROID_HOME,指向Android
SDK的目录地址。

如果项目中有使用到NDK编译的,需要配置ANDROID_NDK_HOME环境变量。

三、SBT构建脚本的编写

在项目的根目录创建文件夹project,并创建文件plugins.sbt,在文件中添加如下代码:

addSbtPlugin("org.scala-android"
% "sbt-android" % "1.6.6")

其实是为编译工程指定sbt-android插件的版本为1.6.6。

接下来编写SBT编译脚本。在项目的根目录,创建文件build.sbt,并进行脚本的的编写。具体语法和API请自行Google。

四、编译release安装包

执行编译脚本,构建Android项目,命令如下:

sbt clean android:package-release

等待插件等下载完成和项目编译完成之后,在target/android/output 目录下可以找到apk安装包。

附:

SBT的常用命令:

  • compile

    • Compiles all the sources in the
           project, java and scala

    • Compile output is automatically
           processed through proguard if there are any Scala sources, otherwise; it
           can be enabled manually.

  • android:package-release

    • Builds a release APK and signs it
           with a release key if configured

  • android:package-debug

    • Builds a debug APK and signs it using
           the debug key

  • android:package

    • Builds an APK for the project of the
           last type selected, by default debug

  • android:test

    • run instrumented android unit tests

  • android:install

    • Install the application to device

  • android:run

    • Install and run the application
           on-device

  • android:uninstall

    • Uninstall the application from device

网易云产品免费体验馆,无套路试用,零成本体验云计算价值。

本文来自网易实践者社区,经作者戚明峰授权发布

更多网易研发、产品、运营经验分享请访问网易云社区

相关文章:
【推荐】 如何实现360度的手游安全防护?网易云易盾专家分享最新实践
【推荐】 聊聊空状态设计

如何搭建SBT编译Scala开发的Android工程的更多相关文章

  1. 【Android开发】Android工程打压缩包技巧

    android studio的: ".gradle" "*/.gradle" ".idea" "*/.idea" &qu ...

  2. windows 7/mac编译cocos2d-x-3.2*的android工程报错

    开始学习cocos2d-x-3.* 凭着对2.*的各个版本的认识和升级的经验,本以为直接用最新的3.2rc0版本练手应该没有问题,结果一上来就是一个大坑.你妹! Android NDK: Invali ...

  3. 在Windows平台搭建轻巧的Python开发环境——面向工程和科研的扩展包配置

    首先,下载最新版本的Python. 为什么强调最新版本呢,因为新版本的漏洞通常会少得多,而且反映了未来的趋势. 既然要学,何不起点高一点? 官方下载地址:https://www.python.org/ ...

  4. Android 开发环境搭建以及编译

    两种搭建编译环境的方式,一种方法是用户安装虚拟机,然后安装基础的Ubuntu12.04.2 系统,利用提供的工具和详细的使用步骤,搭建编译环境:另外一种方法是用户安装虚拟机,然后直接加载 “搭建好的U ...

  5. SBT 构建scala eclipse开发

    scala eclipse sbt 应用程序开发 搭建Eclipse开发Scala应用程序的一般步骤 一.环境准备: 1.Scala : http://www.scala-lang.org/ 2.Sc ...

  6. Linux-QT 开发环境搭建以及编译镜像

    搭建Linux-QT 开发环境,需要先搭建Android 的编译环境,然后在Android 编译环境的基础上,再搭建Linux-QT 编译环境. 第一:编译器. 第二:设置环境变量.环境变量设置后,编 ...

  7. 通过IDEA搭建scala开发环境开发spark应用程序

    一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安装scala插件,具体安装办法如下. 1.打开idea,点击c ...

  8. IDEA搭建scala开发环境开发spark应用程序

    通过IDEA搭建scala开发环境开发spark应用程序   一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安 ...

  9. android 编译环境 & 开发教程 【持续更新】

    一. 优秀博文推荐 1.ubuntu 搭建 android源码编译环境 ubuntu14.04LTS android 源码编译环境的搭建 2.开源网站 2.android 开源 网站 2015最流行的 ...

随机推荐

  1. Android(java)学习笔记11:生产者和消费者之等待唤醒机制

    1. 首先我们根据梳理我们之前Android(java)学习笔记70中,关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 下面 ...

  2. Codeforces Round #513

    A. Phone Numbers 题意:给一些数字,每个电话号码以8开头,11位,求最多组成多少个号码,重复累加. #include <bits/stdc++.h> using names ...

  3. HDU 3038 How Many Answers Are Wrong 【YY && 带权并查集】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 2000/1000 ...

  4. Codeforces Round #340 (Div. 2) E. XOR and Favorite Number 【莫队算法 + 异或和前缀和的巧妙】

    任意门:http://codeforces.com/problemset/problem/617/E E. XOR and Favorite Number time limit per test 4 ...

  5. 【题解】洛谷P2607【ZJOI2008】骑士

    洛谷P2607:https://www.luogu.org/problemnew/show/P2607 一道毒瘤的环基树问题 第一次做环基树的题目 刚看题目的时候觉得不就是跟没有上司的舞会一样嘛 然后 ...

  6. normal 普通身份 sysdba 系统管理员身份 sysoper 系统操作员身份 dba和sysdba

    as sysdba 就是以sysdba登录,oracle登录身份有三种:normal 普通身份sysdba 系统管理员身份sysoper 系统操作员身份每种身份对应不同的权限 sysdba权限:●启动 ...

  7. 简析--UUID

    内容转载自:http://www.cnblogs.com/java-class/p/4727698.html 阅读目录 1.UUID简介 2.UUID组成 3.UUID实战演练 1.UUID 简介 U ...

  8. oracle 分组函数、视图

    组函数 分组函数作用于一组数据,对每一组返回一个值 组函数类型: 1.计数        count(列名 或 表达式)     对满足的行数进行统计 2.求和        sum(列名 或 表达式 ...

  9. 通过匿名管道获取CMD运行结果

    #include <iostream> #include <string> #include <Windows.h> using namespace std; /* ...

  10. ABAP术语-Error Message

    Error Message 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/30/1058283.html Information from ...