zoukankan      html  css  js  c++  java
  • android调用lua

    项目发布以后由于外部数据的问题总是有部分逻辑代码要更改,而每次更改都必须从新发布,审核,下载,更新很是麻烦,客户流失严重。想过很多解决 方案,如:加个客户更新每次提示更新或者弄台服务器将外部数据统一等等,当然都不靠谱。前几日想到可以通过脚本来解决,由于脚本是个解释型语言不需要使得 程序重新编译发布等过程,维护起来相当方便。虽说执行效率会慢一点,但是那么点语句一点都影响。

         正题,由于我只对lua比较熟悉所有首选lua。了解了一下android上调用lua的方法。
    参考:http://blog.csdn.net/hpccn/article/details/8003454    我也没有编译,直接将他库托进我的项目
     
    考虑到维护方便,我将lua代码文件放在了服务器上,通过(HttpURLConnection)加载lua文件
         干货:
    1 //根据URL得到输入流 
    2 public InputStream getInputStreamFromUrl(String urlStr)
    3              throws MalformedURLException, IOException {
    4          URL url = new URL(urlStr);
    5          HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
    6          InputStream inputStream = urlConn.getInputStream();
    7          return inputStream;
    8      }
     1 // 将获得到的流保存到一个字符串里
     2     private String loadAssetsString(String resPath) {
     3          InputStream isread = null;
     4         byte[] luaByte = new byte[1];
     5         try {            
     6             isread = getInputStreamFromUrl(resPath);
     7             int len = isread.available();
     8             luaByte = new byte[len];
     9             isread.read(luaByte);
    10         } catch (IOException e1) {
    11 
    12         } finally {
    13             if (isread != null) {
    14                 try {
    15                     isread.close();
    16                 } catch (IOException e) {
    17                 }
    18             }
    19         }
    20         return EncodingUtils.getString(luaByte, "UTF-8");
    21     }
     1 //调用lua
     2  
     3         LuaState L = LuaStateFactory.newLuaState();
     4         L.openLibs();
     5         String temp = loadAssetsString("http://192.168.1.21:6014/appupdate/testLua.lua");
     6         L.LdoString(temp);
     7 
     8         L.getGlobal("text");
     9         String text = L.toString(-1);
    10 
    11         // L.close();
    12 
    13         mTextView.setText(text);
    14         
    15         
    16         //调用lua中的函数
    17         L.getField(LuaState.LUA_GLOBALSINDEX, "cutStr");
    18         L.pushString("in the pad!");   //传入参数
    19         L.call(1,1);                    //调用函数指定参数和返回值个数
    20         
    21         L.setField(LuaState.LUA_GLOBALSINDEX, "a"); //将返回值保存到参数a中
    22         LuaObject obj = L.getLuaObject("a");        //获取参数a
    23         
    24         mTextView.setText(obj.toString());
     
     
    lua代码:
     
     1 text = ""
     2 for i = 0,10 do
     3     for k = 0,10-i do
     4         text = "" .. text
     5     end
     6     text = "\n"..text
     7 end
     8 
     9 
    10 function cutStr (str)
    11 
    12  j = string.find(str,"pad")
    13  k = string.find(str,"in")
    14  restr = string.sub(str,k,j)
    15 
    16 return restr
    17 end
    收....
  • 相关阅读:
    io学习
    asp.net文件上传进度条研究
    asp.net页面中的Console.WriteLine结果如何查看
    谨慎跟随初始目的不被关联问题带偏
    android 按钮特效 波纹 Android button effects ripple
    安卓工作室 日志设置
    安卓工作室 文件浏览器 android studio File browser
    一个新的Android Studio 2.3.3可以在稳定的频道中使用。A new Android Studio 2.3.3 is available in the stable channel.
    新巴巴运动网上商城 项目 快速搭建 教程 The new babar sports online mall project quickly builds a tutorial
    码云,git使用 教程-便签
  • 原文地址:https://www.cnblogs.com/sambird/p/3181370.html
Copyright © 2011-2022 走看看