titanium本身有提供建立native module的指令,可透過指令產出基本可以使用的template,然後再做修改。
可參考官方的quick start,或者直接參考以下教學:
建立一個android native module
建立一個android module
1 | ti create -p android -t module -d . -n test -u http:// --id com.example.test |
build一個native java project
1 | cd test/android |
將build好的zip,解壓縮至titanium的module路徑
1 | unzip -o com.example.test-android-1.0.0.zip -d ~/Library/Application\ Support/Titanium/ |
KrollModule與KrollProxy
透過titanium的指令產生的native module,會建立出Module和Proxy兩個class,分別繼承KrollModule和TiViewProxy。其中會看到Kroll.method和Kroll.getProperty、Kroll.setProperty這些annotation,主要是會將method或者參數讓js去使用或存取寫入用。
取得剛建立好的native module
1 | var test = require('com.example.test'); |
若是在KrollModule宣告的Kroll.method這類annotation,將可直接讓js module存取
java code
1 | module(name="Test", id="com.example.test") . |
js code
1 | Ti.API.info( test.example() ); |
若透過KrollProxy宣告的Kroll.method這類annotation,會先建立一個instance,在讓js使用
java code
1 | .proxy(creatableInModule=TestModule.class) |
js code
1 | if (Ti.Platform.name == "android") { |
若是想傳入function可透過KrollFunction
java code
1 | method |
js code
1 | test.testCallback(function( evt ){ |
以上的程式碼皆為片段。