作者:戚明峰

最近接触了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. Python 变量交换

    # coding = utf-8 a, b = 1, 2 print 'before change' print a, b a, b = b, a print 'after change' print ...

  2. BZOJ1123:[POI2008]BLO(双连通分量)

    Description Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 所有towns连通. Input 输入n&l ...

  3. pinyin4j工具类

    <!-- 导入pinyin4j --> <dependency> <groupId>com.belerweb</groupId> <artifac ...

  4. 【洛谷P3853】 [TJOI2007]路标设置

    路标设置 题目链接 此题和跳石头很相似,都是二分答案,模拟判断是否可行 #include<iostream> #include<cstdio> using namespace ...

  5. 【luogu P3469 [POI2008]BLO-Blockade】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3469 #include <cstdio> #include <cstring> #i ...

  6. 使用TextView/EditText应该注意的地方,监听EditText,addTextChangedListener

    http://blog.csdn.net/huichengongzi/article/details/7818676 监听 EditText 控件: addTextChangedListener(ne ...

  7. Python—面向对象02

    1.抽象类与归一化 ​ 接口,即提供给使用者来调用自己功能的方式.方法.入口 为什么要使用接口? 接口提取了一类共同的函数,可以把接口看做一个函数的集合 然后让子类去实现接口中的函数 这么做的意义在于 ...

  8. PLSQL 禁用所有约束,启用约束,索引,触发器等

    --禁用外键和触发器 SET SERVEROUTPUT ON SIZE 50000BEGINfor c in (select 'ALTER TABLE '||TABLE_NAME||' DISABLE ...

  9. 全文搜索引擎 Elasticsearch 安装踩坑记录

    一.安装 Elastic 需要 Java 8 环境.如果你的机器还没安装 Java 安装完 Java,就可以跟着官方文档安装 Elastic.直接下载压缩包比较简单. $ wget https://a ...

  10. HTML5笔记——第一节

    我的第一个网页 <!--html的基础模板--><!--html hyperText markup Language--><!--声明文档类型--><!DOC ...