NDK学習(5)アンドロイドプラットフォームの下でNDKコンパイルlua
3201 ワード
長い間振り回されたlua....卵が痛い!
luaのコンパイルには2つの方法があります.
1.ソースコードを静的ライブラリにコンパイルしてから、静的ライブラリを彼のjniプログラムに埋め込む
2.ソースコードとjniを直接コンパイルする
推奨方法1、このように静的ライブラリは私たちが後で使うことができるならば、とても便利です
ちなみにコンパイルプロセスのいくつかのピット...
方法1:
新規ディレクトリlua/jni乱源コードを入れてandroidを新規作成します.mk luaファイルリストを書き込む
ファイルはとても多くて、WINDOWSの下でluaのコンパイルするファイルのリストを参考にすることができて、同じです.ここで直接ファイルを出して、みんなはcopyが便利です
ステップ1:
Android.mk:
ソースコードのコンパイルができました.JAVAとC/C++のデータ型が違うので、javaとインタラクティブになるファイルを書く必要があります.
ステップ2:
それからネット上からluajavaファイルをダウンロードして、もちろん私は下でみんなに提供することができて、ネット上にもあって、肝心なのはいくつか使ってすべてプログラムが崩壊するのです....
そしてこのluajavaファイルをコンパイルします.
新規ディレクトリ:luajava/jni
これをcを入れ、luaをコンパイルした静的ライブラリも入れます.またLuaの4つのヘッダファイルも入れる必要があります:lua.h lauxlib.h luaconfig.h lualib.h
そしてAndroidを書きますmk
そのうちaは最初のステップで生成されます.
実行
ndk-buildはluajavaを生成する.so、よし、終わりだ.
方式2:第1種と差が少ないので、簡単に言えば:
luaソースコードとluajavaはすべてjniディレクトリの下に置かれています.
Android.mk:
ndk-build生成に成功した.最初のステップと同じようにluajavaが増えましたcファイル.....
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
次はアンドロイド呼び出しです.まず、後で提供されるjavaコードをダウンロードし、アンドロイドエンジニアリングのsrcディレクトリに配置し、luajavaをlibディレクトリに配置します.
import org.keplerproject.luajava.*;//luajavaを含むソースコード
テストが必要な場所:
LuaState L = LuaStateFactory.newLuaState();
L.openLibs(); L.LdoString("text = 1+98"); L.getGlobal("text"); String text = L.toString(-1); super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(text); setContentView(tv);
ここまで、问题があってみんなは交流することができて、别に言って、私のあげたluajavaをダウンロードしたほうがいいです.ネット上の私は1日穴をあけられました.コンパイルして、アンドロイドは间违って崩壊しました.
リソースのダウンロード:http://download.csdn.net/detail/a289672082/8533847
luaのコンパイルには2つの方法があります.
1.ソースコードを静的ライブラリにコンパイルしてから、静的ライブラリを彼のjniプログラムに埋め込む
2.ソースコードとjniを直接コンパイルする
推奨方法1、このように静的ライブラリは私たちが後で使うことができるならば、とても便利です
ちなみにコンパイルプロセスのいくつかのピット...
方法1:
新規ディレクトリlua/jni乱源コードを入れてandroidを新規作成します.mk luaファイルリストを書き込む
ファイルはとても多くて、WINDOWSの下でluaのコンパイルするファイルのリストを参考にすることができて、同じです.ここで直接ファイルを出して、みんなはcopyが便利です
ステップ1:
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := lua
LOCAL_SRC_FILES := lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c ltable.c ltablib.c ltm.c lundump.c lvm.c lzio.c
LOCAL_LDLIBS := -ld -lm
include $(BUILD_STATIC_LIBRARY)
LOCAL_LDLIBS := -ld -lm 。
ソースコードのコンパイルができました.JAVAとC/C++のデータ型が違うので、javaとインタラクティブになるファイルを書く必要があります.
ステップ2:
それからネット上からluajavaファイルをダウンロードして、もちろん私は下でみんなに提供することができて、ネット上にもあって、肝心なのはいくつか使ってすべてプログラムが崩壊するのです....
そしてこのluajavaファイルをコンパイルします.
新規ディレクトリ:luajava/jni
これをcを入れ、luaをコンパイルした静的ライブラリも入れます.またLuaの4つのヘッダファイルも入れる必要があります:lua.h lauxlib.h luaconfig.h lualib.h
そしてAndroidを書きますmk
LOCAL_PATH:= $(call my-dir)
#
#
include $(CLEAR_VARS)
LOCAL_MODULE := lua
LOCAL_SRC_FILES := liblua.a
include $(PREBUILT_STATIC_LIBRARY)
# ,
include $(CLEAR_VARS)
LOCAL_MODULE := luajava
LOCAL_SRC_FILES := luajava.c
LOCAL_STATIC_LIBRARIES := lua
include $(BUILD_SHARED_LIBRARY)
そのうちaは最初のステップで生成されます.
実行
ndk-buildはluajavaを生成する.so、よし、終わりだ.
方式2:第1種と差が少ないので、簡単に言えば:
luaソースコードとluajavaはすべてjniディレクトリの下に置かれています.
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := luajava
LOCAL_SRC_FILES := lapi.c lauxlib.c lbaselib.c lcode.c ldblib.c ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c ltable.c ltablib.c ltm.c lundump.c lvm.c lzio.c luajava.c
include $(BUILD_SHARED_LIBRARY)
ndk-build生成に成功した.最初のステップと同じようにluajavaが増えましたcファイル.....
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
次はアンドロイド呼び出しです.まず、後で提供されるjavaコードをダウンロードし、アンドロイドエンジニアリングのsrcディレクトリに配置し、luajavaをlibディレクトリに配置します.
import org.keplerproject.luajava.*;//luajavaを含むソースコード
テストが必要な場所:
LuaState L = LuaStateFactory.newLuaState();
L.openLibs(); L.LdoString("text = 1+98"); L.getGlobal("text"); String text = L.toString(-1); super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText(text); setContentView(tv);
ここまで、问题があってみんなは交流することができて、别に言って、私のあげたluajavaをダウンロードしたほうがいいです.ネット上の私は1日穴をあけられました.コンパイルして、アンドロイドは间违って崩壊しました.
リソースのダウンロード:http://download.csdn.net/detail/a289672082/8533847