- 浏览: 3548882 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38156
-
Cordova 3.x入门...
浏览量:607320
-
常用Java开源Libra...
浏览量:682350
-
搭建 CentOS 6 服...
浏览量:89358
-
Spring Boot 入...
浏览量:401860
-
基于Spring Secu...
浏览量:69699
-
MQTT入门
浏览量:91724
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
官方地址:Android Module Development Guide
摘要
本指南教你如何在Titanium中开发Android模块从而扩展Titanium的功能. 在本指南中,你将会学习到以下几点:
Titanium Android模块开发指南
为了使用Android模块SDK, 你必须具有Android SDK相关的知识. 本指南将假定你知道如何使用原生的Android SDK进行开发.
前提条件
环境设置
参照 Titanium命令行工具 完成环境设置.
创建一个模块
要创建一个模块,我们需要传递一些参数给titanium命令行工具.
对于一个Android, 我们以如下参数创建一个模块:
作为一个示例, 我们创建了一个运行简单的加减操作的模块, 命名为 “calc”, 给定其ID为 “org.appcelerator.calc”, 并把Android SDK的路径指向 /path/to/android-sdk
如果运行成功,应该能在当前目录下看到新创建的 calc 子目录了.
模块项目目录布局
在模块目录中, 你可以看到刚生产的文件和目录树:
Eclipse集成
TItanium 会创建导入为Eclipse项目所需要的文件, 在Eclipse 执行如下操作导入calc项目:
构建模块zip
dist目录下的zip包是模块的可分发形式, 它通常遵循的命名模式为$MODULE_ID-android-$MODULE_VERSION.zip
其中包含:
通过Ant从命令行构建
如果ant已经在PATH中, 你可以简单地在模块顶层目录执行, 你会看到如下输出:
从Eclipse构建
如果你米有安装Ant,或者你更愿意使用Eclipse, 参照下面的步骤:
模块分发
要再Titanium Mobile应用程序中使用模块, 参照下面的步骤:
[list]复制模块的zip文件到Titanium应用程序的根目录, 或Titanium SDK的根目录
在应用程序的tiapp.xml文件的标签内添加如下XML:
在应用程序代码中使用 require 函数包含模块代码到应用程序中, 例如:
下一次应用程序启动或构件时, 模块应该被包含在应用程序中了.[/list]
用嵌入的Example项目进行测试
使你的模块能够工作,最简单的方法是在example/app.js文件中编写代码,并使用ant运行和测试模块代码. example目录等同于应用程序的Resources目录.
运行示例项目的过程非常简单:
运行Android模拟器
从命令行在模块项目木下运行:
你应该会在控制台中看到模拟器的输出!
在Eclipse中配置调用信息:
运行Example项目
Once the emulator is up and running, you just need to wait for the unlock screen to appear, and you can start running your project. Make sure to unlock the screen so you’ll see the example project when it launches.
From command line, run this inside your module project:
在Eclipse中设置启动配置:
Follow the same steps from the Launch configuration setup above, but use the run target instead of the run.emulator target. You should also name the configuration something different, for example run calc project
疑难排除技巧:
如果你运行对象是超时,试着找到emulator,然后通过以下命令重启ADB服务:
$ $ANDROID_SDK/tools/adb kill-server
$ $ANDROID_SDK/tools/adb start-server
到这里,如果你成功的运行了模块例子工程的话,你将在模拟器中看到默认的”hello world“应用:
生成模块和Example代理
作为初始创建项目的一部分,Titanium产生两个示例项目中使用的类:
产看这些代码来了解一下Modules和Proxies是怎么样跟Javascript通信的,在下一节将简要介绍了Titanium 和Kroll的API。
Android Titanium API
模块和代理(Kroll part 1)
模块
代理
导出方法和属性(Kroll part 2)
方法
代理和模块的方法通过 @Kroll.method 符号标注进行导出. 下面是一个简单的例子:
如果你导出的方法要求当前Activity, 你可以添加 KrollInvocation 作为第一个参数:
方法还有许多其他的选项, 详细信息可查看 @Kroll.method Javadoc
属性
属性可以以两种不同的形式导出:
1,getter/setter方法通过 @Kroll.getProperty 和 @Kroll.setProperty 符号导出, Getter/setter方法还可以被导出为Kroll方法(这是在Titanium中常用的模式)
2,使用 Kroll.property 符号导出为一个对象字段(使用反射,速度稍慢)
该示例为message属性导出了一个getter和setter, 以及同名的方法:
在Javascript中可以这样使用:
常量
常量是 @Kroll.module 中的以及静态属性, 该字段以 “@Kroll.constant” 符号标注, 必须是static和final, 这儿有一个例子:
常量可以直接使用: Ti.My.CONSTANT == 100
视图
在Titanium中视图必须要有2个class::
视图代理: TiViewProxy的子类
视图实现: TiUIView的子类
重量级和轻量级窗口
当用户使用Titanium.UI.createWindow API 创建一个窗口时, 运行一些检查来告知是否创建应该是 heavy weight:
线程安全
从Javascript的Context(潜在的任何Activity或Thread)调用一个方法或者属性的话,在设计你的API的时候,很重要的一点是保证线程安全。
为了确保一个方法是在UI线程上执行, 可以参考 @Kroll.method#runOnUiThread(). 以下是例子:
摘要
本指南教你如何在Titanium中开发Android模块从而扩展Titanium的功能. 在本指南中,你将会学习到以下几点:
- 设置你的环境能够构建Android模块
- 构建一个Android模块
- 打包一个Android模块
- 理解Android模块API
Titanium Android模块开发指南
为了使用Android模块SDK, 你必须具有Android SDK相关的知识. 本指南将假定你知道如何使用原生的Android SDK进行开发.
前提条件
- Titanium Mobile SDK 1.5 及以上版本
- 最新版的Python( >= 2.5), 必须在PATH路径中, 或定义PYTHONHOME常量 在Windows中, Titanium Developer / Desktop绑定了Python2.5,因此不需要额外配置
- Oracle JDK
- Android SDK
- Ant 1.7.1 或以上版本,必须包含在PATH中. 如果你不想单独安装Ant,你可以使用Eclipse
环境设置
参照 Titanium命令行工具 完成环境设置.
创建一个模块
要创建一个模块,我们需要传递一些参数给titanium命令行工具.
- 模块的名字 ($MODULE_NAME) 和ID ($MODULE_ID)
- 模块的目标运行平台 (android)
- Android SDK的安装目录 ($ANDROID_SDK) 例如 /opt/android-sdk
对于一个Android, 我们以如下参数创建一个模块:
引用
titanium create --platform=android --type=module --name=$MODULE_NAME --id=$MODULE_ID --android=$ANDROID_SDK
作为一个示例, 我们创建了一个运行简单的加减操作的模块, 命名为 “calc”, 给定其ID为 “org.appcelerator.calc”, 并把Android SDK的路径指向 /path/to/android-sdk
引用
titanium create --platform=android --type=module --name=calc --id=org.appcelerator.calc --android=/path/to/android-sdk
如果运行成功,应该能在当前目录下看到新创建的 calc 子目录了.
模块项目目录布局
在模块目录中, 你可以看到刚生产的文件和目录树:
- LICENSE – 模块的版权说明
- build.properties – Ant的properties文件,包含Titanium SDK和Android SDK的路径
- build.xml – Ant 构建脚本 – 用于构建, 分发和测试模块
- manifest – 包含模块的版本,作者,许可,版权,名称,ID,GUID和平台信息的清单文件
- timodule.xml – 放置自定义的activities和想插入到AndroidManifest.xml文件的配置
- hooks – 脚本目录,在模块被添加/安装/删除/卸载的时候调用
- documentation – 生成的Markdown文件,包含了你的模块的例子文档
- assets – 模块所需的其他资源比如图像等放这里(详看README)
- lib – 放置需要的第三方JAR文件,他们将会被自动的追加到你的工程和模块zip中[*]src – 模块源代码目录
- example – 模块例子工程
Eclipse集成
TItanium 会创建导入为Eclipse项目所需要的文件, 在Eclipse 执行如下操作导入calc项目:
- 在顶部菜单中单击 “File > Import…”
- 打开General文件夹后,双击“Existing Project into Workspace”
- 点击“Select root directory”之后的“Browse…”
- 选择模块项目目录
- 在 Projects 列表中可以看到你的模块了:
- 按下“Finish”后,就应该能够在Eclipse的”Package Explorer “下看到你的模块工程了.
构建模块zip
dist目录下的zip包是模块的可分发形式, 它通常遵循的命名模式为$MODULE_ID-android-$MODULE_VERSION.zip
其中包含:
- 编译的包含类,生成的绑定,以及资源文件的JAR包
- lib目录中的第三方JAR包
- 模块清单, 包括作者,版本,许可,版权等部署需要的元数据
- 模块的timodule.xml文件
通过Ant从命令行构建
如果ant已经在PATH中, 你可以简单地在模块顶层目录执行, 你会看到如下输出:
引用
$ ant
Buildfile: /Users/marshall/Code/test/test_modules/calc/build.xml
init:
[mkdir] Created dir: /Users/marshall/Code/test/test_modules/calc/build/classes
[mkdir] Created dir: /Users/marshall/Code/test/test_modules/calc/dist
process.annotations:
[javac] Compiling 2 source files to /Users/marshall/Code/test/test_modules/calc/build/classes
[javac] Note: [KrollBindingGen] Running Kroll binding generator.
[javac] Note: [KrollBindingGen] No binding data found, creating new data file.
[javac] Note: [KrollBindingGen] Found binding for module Calc
[javac] Note: [KrollBindingGen] Found binding for proxy Example
compile:
[javac] Compiling 2 source files to /Users/marshall/Code/test/test_modules/calc/build/classes
[copy] Copying 1 file to /Users/marshall/Code/test/test_modules/calc/build/classes
dist:
[jar] Building jar: /Users/marshall/Code/test/test_modules/calc/dist/calc.jar
[zip] Building zip: /Users/marshall/Code/test/test_modules/calc/dist/org.appcelerator.calc-android-0.1.zip
BUILD SUCCESSFUL
Total time: 1 second
Buildfile: /Users/marshall/Code/test/test_modules/calc/build.xml
init:
[mkdir] Created dir: /Users/marshall/Code/test/test_modules/calc/build/classes
[mkdir] Created dir: /Users/marshall/Code/test/test_modules/calc/dist
process.annotations:
[javac] Compiling 2 source files to /Users/marshall/Code/test/test_modules/calc/build/classes
[javac] Note: [KrollBindingGen] Running Kroll binding generator.
[javac] Note: [KrollBindingGen] No binding data found, creating new data file.
[javac] Note: [KrollBindingGen] Found binding for module Calc
[javac] Note: [KrollBindingGen] Found binding for proxy Example
compile:
[javac] Compiling 2 source files to /Users/marshall/Code/test/test_modules/calc/build/classes
[copy] Copying 1 file to /Users/marshall/Code/test/test_modules/calc/build/classes
dist:
[jar] Building jar: /Users/marshall/Code/test/test_modules/calc/dist/calc.jar
[zip] Building zip: /Users/marshall/Code/test/test_modules/calc/dist/org.appcelerator.calc-android-0.1.zip
BUILD SUCCESSFUL
Total time: 1 second
从Eclipse构建
如果你米有安装Ant,或者你更愿意使用Eclipse, 参照下面的步骤:
- 在模块目录中右击build.xml文件
- 点击 Run As > Ant Build
- 你将看到类似的输出
模块分发
要再Titanium Mobile应用程序中使用模块, 参照下面的步骤:
[list]
<!-- $MODULE_VERSION should be the same as "version" in the module manifest --> [*]<modules> [*] <module version="$MODULE_VERSION">$MODULE_ID</module> [*] <!-- For example, if we were adding the calc module: --> [*] <module version="0.1">org.appcelerator.calc</module> [*]</modules>
var Module = require('$MODULE_ID'); [*]// For example, to load the calc module: [*]var Calc = require('org.appcelerator.calc');
用嵌入的Example项目进行测试
使你的模块能够工作,最简单的方法是在example/app.js文件中编写代码,并使用ant运行和测试模块代码. example目录等同于应用程序的Resources目录.
运行示例项目的过程非常简单:
- 运行android模拟器
- 模拟器启动后便可运行你的模块代码了.
运行Android模拟器
从命令行在模块项目木下运行:
引用
ant run.emulator
你应该会在控制台中看到模拟器的输出!
在Eclipse中配置调用信息:
- 右击build.xml, 点击Run As > Ant Build… (第二个选项)
- 为了一个新的启动配置将会打开一个配置设置的窗口
- 然后选择execute对象,去掉**dist对象,选择run.emulator对象
- 重命名启动配置,然他跟明显的看的出来含义,比如“run emulator”
- 窗口长啥样的一个例子,calc module:
- 点击Apply然后运行
- 这样你就可以通过外部工具菜单(或者工具栏)的run运行这个启动配置
- 你应该能看到在Eclipse的控制台窗口,emulator有输出信息
运行Example项目
Once the emulator is up and running, you just need to wait for the unlock screen to appear, and you can start running your project. Make sure to unlock the screen so you’ll see the example project when it launches.
From command line, run this inside your module project:
引用
ant run
在Eclipse中设置启动配置:
Follow the same steps from the Launch configuration setup above, but use the run target instead of the run.emulator target. You should also name the configuration something different, for example run calc project
疑难排除技巧:
如果你运行对象是超时,试着找到emulator,然后通过以下命令重启ADB服务:
引用
$ $ANDROID_SDK/tools/adb kill-server
$ $ANDROID_SDK/tools/adb start-server
到这里,如果你成功的运行了模块例子工程的话,你将在模拟器中看到默认的”hello world“应用:
生成模块和Example代理
作为初始创建项目的一部分,Titanium产生两个示例项目中使用的类:
- module类, 如: src/org/appcelerator/calc/CalcModule.java
- proxy类, 如: src/org/appcelerator/calc/ExampleProxy.java
产看这些代码来了解一下Modules和Proxies是怎么样跟Javascript通信的,在下一节将简要介绍了Titanium 和Kroll的API。
Android Titanium API
模块和代理(Kroll part 1)
- 一个模块是一个静态的、可选的顶级接口点,总是可以通过相同的名字访问.Titanium.UI 和 Titanium.App 就是两个在顶级API TItanium对象下的两个Module例子.
- 代理是能够被用于通过一个模块或其他代理创建和查询的动态对象.当你使用“Titanium.UI.createView”:http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.createView-method.html 创建一个原生视图时, 视图对象本身就是一个代理
- 模块和代理都能够向Javascript API导出方法,属性,常量以及getters/setters方法.
模块
- 必须使用 @Kroll.module 符号标注,并继承 KrollModule 类
- 模块可以有父模块, 比如 “Titanium.App.Properties“http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.App.Properties-module 模块就存在于 Titanium.App 下
- 可以给定一个唯一的ID用于require()
- 可以导出为顶级对象(与Titanium同级)
代理
- 必须使用 @Kroll.proxy 符号标注, 并继承 KrollProxy 类
- 当使用 @Kroll.proxy#creatableInModule() 时, 有一个生成的 “create” 方法.
- 有内置的事件管理
导出方法和属性(Kroll part 2)
方法
代理和模块的方法通过 @Kroll.method 符号标注进行导出. 下面是一个简单的例子:
@Kroll.method public String getMessage() { return "Hello World"; }
如果你导出的方法要求当前Activity, 你可以添加 KrollInvocation 作为第一个参数:
@Kroll.method public String getMessage(KrollInvocation invocation) { Activity activity = invocation.getTiContext().getActivity(); }
方法还有许多其他的选项, 详细信息可查看 @Kroll.method Javadoc
属性
属性可以以两种不同的形式导出:
1,getter/setter方法通过 @Kroll.getProperty 和 @Kroll.setProperty 符号导出, Getter/setter方法还可以被导出为Kroll方法(这是在Titanium中常用的模式)
2,使用 Kroll.property 符号导出为一个对象字段(使用反射,速度稍慢)
该示例为message属性导出了一个getter和setter, 以及同名的方法:
@Kroll.getProperty @Kroll.method public String getMessage() { return "Hello World"; } @Kroll.setProperty @Kroll.method public void setMessage(String message) { Log.d(TAG, "Tried setting message to: " + message); }
在Javascript中可以这样使用:
var object = //.. object.message = "hi"; // or object.setMessage("hi");
常量
常量是 @Kroll.module 中的以及静态属性, 该字段以 “@Kroll.constant” 符号标注, 必须是static和final, 这儿有一个例子:
@Kroll.module public class MyModule extends KrollModule { @Kroll.constant public static final int CONSTANT = 100; }
常量可以直接使用: Ti.My.CONSTANT == 100
视图
在Titanium中视图必须要有2个class::
视图代理: TiViewProxy的子类
- 负责视图属性和方法暴露给JavaScript(和一般代理做的一样).
- 实现TiUIView的createView(Activity activity)方法来返回一个TiUIView的实例
- 很多时候,你想在UI线程中调用你的UIView,参考 @Kroll.method#runOnUiThread
视图实现: TiUIView的子类
- 必须用视图的一个实例来调用setNativeView,无论是在构造函数中,或在processProperties
- 视图实现负责从视图代理的获取数据,并直接应用到本地View
- 这个类可以选择性的实现propertyChanged 和 processProperties,当用户在proxy中设置了属性的话会的得到通知。
重量级和轻量级窗口
当用户使用Titanium.UI.createWindow API 创建一个窗口时, 运行一些检查来告知是否创建应该是 heavy weight:
- 如果一个窗口被设置了以下任何一个属性的话,他就是”heavyweight“: fullscreen, navBarHidden, modal, windowSoftInputMode, 或者tabOpen:true
- 相反的话, 他就是”lightweight“
- Heavyweight窗口会在栈中生成一个新的Activity,而且也一直为窗口创建新的Javascript Context
- Lightweight窗口创建的时候一个全屏的View(调用代码是相同的Activity) ,如果设置了url属性的话,也会为每个窗口创建新的Javascript Context
线程安全
从Javascript的Context(潜在的任何Activity或Thread)调用一个方法或者属性的话,在设计你的API的时候,很重要的一点是保证线程安全。
为了确保一个方法是在UI线程上执行, 可以参考 @Kroll.method#runOnUiThread(). 以下是例子:
@Kroll.proxy public class MyProxy extends KrollProxy { @Kroll.method(runOnUiThread=true) public int doSomething() { return 100; } }
评论
2 楼
RomKK
2012-04-11
generate.bindings:
pre.compile:
ndk.build:
[mkdir] Created dir: /Users/romkk/Workspace/Titanium/ti-adview/build/generated/jni
[copy] Copying 1 file to /Users/romkk/Workspace/Titanium/ti-adview/build/generated
[copy] Copying 1 file to /Users/romkk/Workspace/Titanium/ti-adview/build/generated/jni
[echo] /Applications/Java/Dev/android-ndk-r4b/ndk-build
[echo] "TI_MOBILE_SDK=/Users/romkk/Library/Application Support/Titanium/mobilesdk/osx/1.8.1"
[echo] "NDK_PROJECT_PATH=/Users/romkk/Workspace/Titanium/ti-adview/build/generated"
[echo] "NDK_APPLICATION_MK=/Users/romkk/Workspace/Titanium/ti-adview/build/generated/Application.mk"
[echo] "PYTHON=python"
[echo] "V=0"
[exec] jni/Android.mk:24: warning: overriding commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/KrollGeneratedBindings.cpp'
[exec] jni/Android.mk:24: warning: ignoring old commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/KrollGeneratedBindings.cpp'
[exec] jni/Android.mk:27: warning: overriding commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/BootstrapJS.cpp'
[exec] jni/Android.mk:27: warning: ignoring old commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/BootstrapJS.cpp'
[exec] make: *** No rule to make target `Support/Titanium/mobilesdk/osx/1.8.1'. Stop.
BUILD FAILED
/Users/romkk/Library/Application Support/Titanium/mobilesdk/osx/1.8.1/module/android/build.xml:233: exec returned: 2
pre.compile:
ndk.build:
[mkdir] Created dir: /Users/romkk/Workspace/Titanium/ti-adview/build/generated/jni
[copy] Copying 1 file to /Users/romkk/Workspace/Titanium/ti-adview/build/generated
[copy] Copying 1 file to /Users/romkk/Workspace/Titanium/ti-adview/build/generated/jni
[echo] /Applications/Java/Dev/android-ndk-r4b/ndk-build
[echo] "TI_MOBILE_SDK=/Users/romkk/Library/Application Support/Titanium/mobilesdk/osx/1.8.1"
[echo] "NDK_PROJECT_PATH=/Users/romkk/Workspace/Titanium/ti-adview/build/generated"
[echo] "NDK_APPLICATION_MK=/Users/romkk/Workspace/Titanium/ti-adview/build/generated/Application.mk"
[echo] "PYTHON=python"
[echo] "V=0"
[exec] jni/Android.mk:24: warning: overriding commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/KrollGeneratedBindings.cpp'
[exec] jni/Android.mk:24: warning: ignoring old commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/KrollGeneratedBindings.cpp'
[exec] jni/Android.mk:27: warning: overriding commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/BootstrapJS.cpp'
[exec] jni/Android.mk:27: warning: ignoring old commands for target `/Users/romkk/Workspace/Titanium/ti-adview/build/generated/BootstrapJS.cpp'
[exec] make: *** No rule to make target `Support/Titanium/mobilesdk/osx/1.8.1'. Stop.
BUILD FAILED
/Users/romkk/Library/Application Support/Titanium/mobilesdk/osx/1.8.1/module/android/build.xml:233: exec returned: 2
1 楼
RomKK
2012-03-07
楼主太棒了,终于找到一个titanium专业的博客了, 楼主能翻译一下iphone模块开发吗?现在正在这一块遇到一些问题。
发表评论
-
VisualUI for Titanium Studio
2014-01-13 09:02 1546VisualUI for Titanium Studio is ... -
Google Auth (OAuth 2.0) for Titanium
2013-03-19 11:49 2055Google OAuth 2.0 for Titanium i ... -
Appcelerator Titanium: Up and Running
2013-03-19 08:40 46Appcelerator Titanium: Up and R ... -
Titanium SDK/Studio 3.0.0 Beta版发布
2012-11-07 09:36 463Titanium SDK/Studio 3.0.0 Beta版 ... -
Titanium SDK 3.0.0 Developer Preview
2012-10-29 16:15 303Titanium SDK 3.0.0 Developer Pr ... -
Appcelerator Partners With Largest Chinese Software Developer Network
2012-10-29 12:01 225(Marketwire - Oct 19, 2012) -Ap ... -
Titanium 3.0 预定10月份发布
2012-09-27 09:12 733Appcelerator CEO Jeff Haynie和 C ... -
Titanium SDK 2.1.3 RC is released – Support for iOS 6
2012-09-21 13:51 241---以下官方原文--- We understand the ... -
国内Ti开发者Winson的CBMVC框架
2012-08-06 15:55 1206目前关注Titanium的开发 ... -
Titanium的MVC框架"Alloy"的介绍
2012-07-18 14:37 4262Alloy(合金)是Appcelerator公司为Titani ... -
TCAD免费考试延长至7月末
2012-07-17 16:09 327Appcelerator延长这次TCAD免费考试的时间到7月末 ... -
TCAD认证考试
2012-07-13 11:31 2572Appcelerator从7/7开始免费开放TCAD(Tita ... -
【转】Appcelerator Cloud Push Notification in iPhone
2012-07-12 08:49 2765Push Notification in iOS Using ... -
【转】Appcelerator Cloud Push Notification in Android
2012-07-12 08:38 2487What is Push Notification? Push ... -
Appcelerator Titanium: Patterns and Best Practices
2012-07-10 10:58 373Appcelerator Titanium: Patterns ... -
Appceleator Cloud Services使用指南(3) - API Reference V1 (chm版本)
2012-05-28 15:22 1869Appceleator Cloud Services API ... -
Appceleator Cloud Services使用指南(2) - 创建第一个应用
2012-05-24 21:57 1784一步一步的创建一个最简单的,使用了ACS服务的应用。 1、新 ... -
Appceleator Cloud Services使用指南(1) - ACS介绍
2012-05-24 10:19 3267Appceleator Cloud Services( ... -
Titanium Mobile基础教程视频
2012-05-23 10:38 639dotinstall.com提供的一套在线Titanium M ... -
Jeff Haynie在GMIC2012表示应用开发者应注意本土化问题
2012-05-22 16:56 3355月10日-11日,2012全球移 ...
相关推荐
钛模块开发人员指南 这是《钛合金模块开发人员指南》。 本机模块开发人员可以使用它来了解为Titanium构建自己的本机模块的基本和高级概念。功能性此示例模块在iOS和Android上提供以下组件: 模块/应用生命周期 查看/...
- **安装指南**:提供了如何安装和配置开发环境的步骤。 - **API 参考**:详细列出了所有可用的模块、对象和方法,以及它们的参数和返回值。 - **示例代码**:提供了实际应用场景中的代码示例。 - **最佳实践**:...
书中可能还会涵盖 Titanium 的核心概念,如模块化开发、事件处理和 UI 组件的使用。 接下来,书中的重点会转向 AR 技术。读者将学习如何集成 AR 库,例如 ARKit(iOS)和 ARCore(Android),以及如何使用 Titanium...
- **Titanium Mobile**:虽然标签中出现了“iPhone”,但本书实际上并未涉及iPhone开发,而是介绍了如何使用Titanium Mobile框架跨平台开发Android应用。 ##### 4. 实战案例分析 - **游戏开发**:通过具体案例介绍...
在使用此模块时,开发者应确保遵守AdMob的政策和Google Play的开发指南,以避免应用被拒绝或暂停。 总之,Admobrewarded模块为Appcelerator Titanium开发者提供了一种简便的方式,可以在他们的应用中集成AdMob奖励...
Appcelerator Titanium是一款开源的移动应用开发平台,它允许开发者使用JavaScript、TypeScript或者CoffeeScript等语言来构建原生的iOS、Android以及Windows应用。通过Titanium,开发者可以利用JavaScript的便利性,...
总结,Jafar 是一个针对 Titanium 应用的创新性单元测试模块,它将测试过程融入到应用运行之中,极大地提升了开发效率和代码质量。对于任何使用 Titanium 开发移动应用的团队,Jafar 都是一个值得考虑的优秀工具。
在移动应用开发领域,Appcelerator Titanium 是一个备受开发者欢迎的框架,它允许使用 JavaScript 进行原生应用的开发,同时支持 iOS、Android 和其他平台。"learning-titanium" 提供了一个学习和实践 Titanium 的...
1. **安装TiNav**:开发者需要将TiNav添加到他们的项目依赖中,这通常通过Titanium的模块导入机制完成。 2. **初始化导航器**:在应用的入口点或适当的位置,创建一个TiNav实例。 3. **创建视图控制器**:为每个...
Titanium是一款开源的移动开发平台,它允许开发者使用JavaScript编写原生iOS、Android和Windows应用。通过Titanium,开发者可以利用单一代码库实现多平台开发,提高效率并减少维护成本。 接下来,我们将探讨AdMob...
"新增"可能涉及新功能的添加或新模块的开发。这包括理解软件开发生命周期,从需求分析、设计、编码到测试和部署。敏捷开发方法如Scrum和Kanban在现代开发流程中很常见,能够帮助团队高效地应对变化和快速迭代。 ...
这个项目的核心是利用Java编程语言开发的,因此,它深入展示了Java在Android开发中的应用。 在Android应用开发中,Java是一种常用的编程语言,它具有面向对象、稳定性和跨平台兼容性的特点。HealthCare-Android...
【标题】"MyAppPortfolio:我的第一个Udacity Android Nanodegree应用" 是一个学习者在Udacity的Android开发课程中完成的第一个项目。这个应用展示了开发者基础的Android编程技能和对Java语言的理解。 【描述】提到...
【标签】"Kotlin"是Google支持的主要Android开发语言,它是一种现代、静态类型的编程语言,以其简洁、安全和交互性而受到开发者欢迎。Kotlin具有许多特性,如空安全、类型安全、协程支持、函数式编程元素等,这些...
uni-app是一个跨端的开发框架,它允许开发者用一套代码编写应用,然后编译到iOS、Android、微信小程序等多个平台。然而,当在非HBuilderX环境中使用uni-app时,可能会遇到诸如代码提示、自动完成、错误检查等不便。 ...