LuaViewSDK 完全新手教程(Android)
說明:LuaView = LuaViewSDK
1.LuaViewSDK 是什么
LuaViewSDK 主要解決客戶端開發(fā)中的兩個(gè)常見問題:
相同的業(yè)務(wù)邏輯需要在 iOS 和 Android 平臺(tái)各實(shí)現(xiàn)一次,除了開發(fā)成本高,也會(huì)引入體驗(yàn)的細(xì)微差別。是否有一種技術(shù)方案可以做到一份代碼,兩個(gè)平臺(tái)運(yùn)行,行為相同 ?
移動(dòng) APP 開發(fā)領(lǐng)域,要極致體驗(yàn)發(fā)布就不靈活(Native),要靈活發(fā)布就沒有極致體驗(yàn)(H5)。有沒有一種技術(shù)方案可以兼顧極致的體驗(yàn)和靈活的發(fā)布?
LuaView 可以完美解決上述兩個(gè)問題。
LuaView 是一種運(yùn)行在一個(gè) ViewController/Activity 中,可以靈活加載Lua 腳本,并能夠按照 Native 的方式運(yùn)行的一種面向業(yè)務(wù)的開發(fā)技術(shù)方案??梢钥焖匍_發(fā)電商應(yīng)用中既要求體驗(yàn)又要求靈活性的頁面功能,例如首頁,類目首頁,垂直頻道,大促活動(dòng)會(huì)場等。
LuaViewSDK 對(duì) iOS 和 Android 平臺(tái)的接口做了包裝,保證同一份 Lua 代碼可以在兩個(gè)平臺(tái)運(yùn)行,同時(shí)兼顧開發(fā)效率和運(yùn)行性能。
LuaViewSDK 基于 LuaJ 和 LuaC 完成,所以有著與 Native 一樣強(qiáng)大的性能。
LuaViewSDK 可以通過 Lua 腳本橋接所有 Native 的功能,所以具有與 Native 一樣豐富的性能。
最關(guān)鍵的是 LuaViewSDK 已經(jīng)開源了,可以在 https://github.com/alibaba/luaviewsdk 查看 LuaViewSDK 的全部代碼。
說的這么好,有沒有什么證明呢?請(qǐng)看聚劃算客戶端的量販團(tuán)、品牌團(tuán)頁面。
2.本文針對(duì)的人群
這里的內(nèi)容主要針對(duì)沒有無線開發(fā)經(jīng)驗(yàn),想快速學(xué)習(xí)無線開發(fā)的Android同學(xué)。
可能你是一個(gè)其他領(lǐng)域的程序員,做過前端或服務(wù)端開發(fā),完全沒有客戶端開發(fā)經(jīng)驗(yàn)。你只需要打開Android Studio IDE,就可以完成這里的所有操作,可以快速建立一個(gè)簡單的App,這個(gè) App 沒有其他功能,只是在屏幕上顯示 Hello World LuaView to Android!。
對(duì),它就是又一個(gè)的 Hello Word!
3.大綱
- 環(huán)境安裝( Android Studio 和 Android SDK )
- Android Studio 建立Android工程(new Android Studio project)
- 通過 import module方式,導(dǎo)入 LuaViewSDK 依賴
- 使用 Lua 編寫業(yè)務(wù)腳本
- 在 Activity Java 代碼中加載 Lua 業(yè)務(wù)腳本
- 在模擬器中運(yùn)行
4.環(huán)境配置
4.1 第一步是安裝 Android Studio,Android開發(fā)必須用到的開發(fā)工具。
- 官方網(wǎng)址: http://developer./sdk/index.html
- 替代網(wǎng)址: http://www./
4.2 下載 Android SDK
Android SDK 在 Android Studio中已經(jīng)包含,但是只是一個(gè)最新版的(當(dāng)前最新為6.0),你可以將以前版本補(bǔ)全以進(jìn)行所有代碼測(cè)試。
通過 Androd Studio > Preferences 打開設(shè)置面板,然后選擇 Appearance & Behavior > System Settings > Android SDK 看到SDK設(shè)置面板,
在SDK Platform中選擇你要下載的SDK版本(這里需要講Api Level 21、22 的版本全部鉤上),然后點(diǎn)擊 Apply 下載, 完成后重啟 Android Studio即可。

4.3 第三步在github上clone LuaViewSDK到本地目錄。
- github網(wǎng)址: https://github.com/alibaba/LuaViewSDK
- https方式:git clone https://github.com/alibaba/LuaViewSDK.git
- ssh方式:git clone git@github.com:alibaba/LuaViewSDK.git
5. Hello World 開發(fā)
主要步驟為:
- 新建Androd工程
- 添加LuaViewSDK Module
- 編寫 Lua 腳本
- 在Activity中加載 Lua 腳本
- 在模擬器中運(yùn)行
5.1 新建Androd工程
(1)通過 File > New > New Project 建立新工程 或者

(4)項(xiàng)目建成之后的目錄結(jié)構(gòu)

(4)項(xiàng)目建成之后的目錄結(jié)構(gòu)

5.2 添加LuaViewSDK Module
(1)通過 File -> New -> Import Module
選擇之前git clone的LuaViewSDK目錄下的Android/LuaViewSDK目錄
點(diǎn)擊ok后,在選擇Module name 你可以直接用默認(rèn)的“LuaViewSDK”,也可以自己選擇一個(gè)新的module名稱,注意不要去掉前面的“:”。直接點(diǎn) finish。

(2) 引入時(shí)因?yàn)橐螺dLuaViewSDK中build.gradle中 buildToolsVersion
字段定義的gradle版本,過程可能會(huì)比較慢。先結(jié)束引入流程,然后文件目錄版從Android切換成Project,找到LuaViewSDK下面的
build.gradle文件,進(jìn)行編輯,將 buildToolsVersion字段的值替換成app目錄下build.gradle中
buildToolsVersion 字段的值。

(3)點(diǎn)擊一下 Sync Now 或者 build button 進(jìn)行編譯一下
(4)編譯完成后如果當(dāng)前compileSdkVersion的版本是23(Adnroid 6.0)的情況會(huì)報(bào)錯(cuò),因當(dāng)前LuaViewSDK暫不支持6.0編譯,需要將compileSdkVersion降一下,這里可以直接改兩個(gè) module目錄下的build.gradle文件。
app目錄下的build.gradle文件添加
compileSdkVersion 21
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'junit:junit:4.12'
compile 'com.android.support:support-v4:21.0.0'
compile 'com.android.support:recyclerview-v7:+'
compile project(':LuaViewSDK')
}LuaViewSDK目錄下的build.gradle文件添加或修改
compileSdkVersion 21也可以直接用ide的工具進(jìn)行修改:
1.點(diǎn)擊項(xiàng)目右鍵 -> 選擇Open Module Settings,進(jìn)入Module修改面板。

2.Modules選中LuaViewSDK,在Properties選項(xiàng)中找到 “Compile Sdk Version”,下拉選中API 21。
3.Modules選中app,在Properties選項(xiàng)中找到 “Compile Sdk Version”,下拉選中API 21。

- Flavors選項(xiàng)中 “Target Sdk Version”也要修改一下。

- 修改Dependencies選項(xiàng) 先將V4 和 V7包的版本依賴修改如下

- app Module中添加LuaViewSDK module的依賴。選擇“+” -> Module dependency ,
chose module 中選中“:LuaViewSDK”。
然后查看LuaViewSDK依賴是否已加入。

(5)點(diǎn)擊一下 Sync Now 或者 build button 進(jìn)行編譯一下
這里可能會(huì)遇到某些style因修改compileSdkVersion而找不到,可以將報(bào)錯(cuò)行直接刪除,將app目錄下
AndroidManifest.xml文件中Activity對(duì)應(yīng)的style修改成
“@android:style/Theme.Holo.Light”,不用android 6.0版本的style即可。
同時(shí)主Activity修改成繼承自Activity。
然后再編譯一下。
5.3 編寫 Lua 腳本
(2)在 assets 文件夾下添加hello.lua文件:New > File

(3)文件內(nèi)容為:
w,h = System.screenSize();
window.frame(0, 0, w, h);
window.backgroundColor(0xDDDDDD);
label = Label();
label.frame(0,50,w, 60);
label.text("Hello World LuaView to Android");5.4 在Activity中加載 Lua 腳本
按照如下內(nèi)容修改Activtiy文件:
package com.luaview.hellolua;
import android.app.Activity;
import android.os.Bundle;
import com.taobao.luaview.global.LuaView;
public class LuaActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LuaView view = LuaView.create(this);
view.load("hello.lua");
setContentView(view);
}
}
5.5 在模擬器中運(yùn)行
點(diǎn)擊運(yùn)行按鈕:
運(yùn)行結(jié)果:

6.后記
完成了這些,你可以驕傲的說你能跨平臺(tái)進(jìn)行移動(dòng)開發(fā)了,歡迎進(jìn)入LuaView的世界!
在LuaViewSDK目錄下,也可以讓Android Studio直接運(yùn)行Android子目錄。在項(xiàng)目中有一些簡單的lua demo,這些將是后續(xù)進(jìn)階的利器。
Doc目錄下的內(nèi)容是LuaViewSDK的doc幫助文檔。
LuaViewDebugger目錄下的文件是LuaView的調(diào)試工具(目前只支持模擬器調(diào)試)。





