SL4A apk 編譯生成

SL4A apk 編譯生成

前言:SL4A(即 Scripting Layer for Android)是一個 Android 腳本解釋環境,可用於自動化測試,可是我根據書本的自動化步驟操作時,遇到了不少坑,下面是填坑的系列過程,如果大家恰好工作中也遇到了 SL4A 的相關使用,希望我的填坑過程可以幫助大家避坑,節省時間。

前往 SL4A 的官網網站

SL4A 書本給的官網地址爲 http://code.google.com/p/android-scripting

然而當我們前往這個網站時,發現官網地址已經改變了。

SL4A於是,我們前往新的官網地址,即 GitHub 地址。
SL4A github
我們可以把該項目源碼 clone 到本地,然後自行編譯 SL4A 的 apk 文件。因爲沒有辦法,原來的官網地址是給我們 apk 的下載地址的,現在直接把源碼給我們了,只能我們自己去編譯。

下載 SL4A 文件

目錄結構如下:
SL4A
讀一下 README 文件,看一下相關的介紹,下載別人的代碼時,如果有 README 文件,一定先讀該文件,該文件肯定會寫了作者的一些建議,手冊等信息。這個 README 我是沒怎麼看懂的,前往 android 這個目錄文件夾。
SL4A
讀一下 README 文件。
README
那我們從 README 中瞭解到,項目工程是 Eclipse 環境的,主程序是 ScriptingLayerForAndroid 。

導入到 Eclipse 中

在導入中,有點問題的,ScriptingLayerForAndroid 是一個 Android 工程項目,可以直接導入,但是其他的並不是,在導入其他依賴 Library 時,我是先在 Eclipse 中建立 Android 項目,設置爲 Library,將 Google 的代碼複製到 Eclipse 中的。
Eclipse
除了 ScriptingLayerForAndroid,其他都是先在項目中建立 Android 工程,設置爲 library,手動複製代碼進去,各個 library 相互之間會有一點依賴,自己處理一下即可。這樣,ScriptingLayerForAndroid 就不會有編譯錯誤了,接下來是運行到設備上去,運行過程中,會有一些錯誤,我說一下我遇到的錯誤以及解決方案。

運行 SL4A 到設備上

第一個錯誤:Unable to execute dex: Multiple dex files define

運行時報這樣的編譯錯誤,參考下面博客解決該問題:
https://blog.csdn.net/nomisshe/article/details/9083331

第二個錯誤:解決後可以運行到設備上面了,但是會閃退:

[2019-07-09 15:00:17 - ScriptingLayerForAndroid] Installing ScriptingLayerForAndroid.apk...
[2019-07-09 15:00:22 - ScriptingLayerForAndroid] Success!
[2019-07-09 15:00:22 - BluetoothFacade] Could not find BluetoothFacade.apk!
[2019-07-09 15:00:22 - Common] Could not find Common.apk!
[2019-07-09 15:00:22 - InterpreterForAndroid] Could not find InterpreterForAndroid.apk!
[2019-07-09 15:00:22 - ScriptingLayer] Could not find ScriptingLayer.apk!
[2019-07-09 15:00:22 - SignalStrengthFacade] Could not find SignalStrengthFacade.apk!
[2019-07-09 15:00:22 - TextToSpeechFacade] Could not find TextToSpeechFacade.apk!
[2019-07-09 15:00:22 - Utils] Could not find Utils.apk!
[2019-07-09 15:00:22 - WebCamFacade] Could not find WebCamFacade.apk!

報找不到一些 apk 文件,參考下面的博客解決方法:
https://blog.csdn.net/lissdy/article/details/7573714

其實,我這樣解決後,還是會報一個錯誤,而且運行的時候也會輸出這些錯誤信息,但是我解決了第三個問題後,就可以成功運行了。

第三個錯誤:

java.lang.RuntimeException: Unable to start activity ComponentInfo
{com.googlecode.android_scripting/com.googlecode.android_scripting.activity.ScriptManager}: 
android.util.AndroidRuntimeException: You cannot combine custom titles with other title features

ScriptManagerCustomizeWindow上面代碼會報錯,其實是因爲項目中沒有 style.xml 文件導致的,我添加了 style.xml 代碼就可以跑通了,但是會把 actionBar 的菜單欄給覆蓋掉,而菜單欄中的菜單是我們用這個程序時需要用的,所以,我們可以把 CustomzeWindow.requestCustomTitle() 這行代碼註釋掉,直接自己 setContentVeiw() 即可。

最後成功的圖片我就不截圖給大家了,希望可以幫助大家避掉一些坑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章