在不使用Node JS的情况下添加Google Glass的cordova插件

时间:2014-01-29 05:18:07

标签: android node.js cordova phonegap-plugins google-gdk

我正致力于使用Google Glass研究应用开发的内容。人们非常清楚,在Native环境中 - 应用程序开发是直截了当的。 (使用GDK - 玻璃开发套件) 使用Cordova进行开发,有用于Glass的cordova插件并托管在Github上 - 请查看此处的链接 -

  1. Glass core Link
  2. Glass Touch Link
  3. Glass Gesture Link
  4. 嗯,我现在理解的是,可以使用Node JS命令行将这些插件添加到我的应用程序中。限制很少,我无法在我的环境中安装Node JS。有没有办法在不使用Node的情况下将这些插件添加到我的应用程序?我的Cordova版本是2.7.0。

    如何手动添加.java文件?我应该在哪里添加它们?

1 个答案:

答案 0 :(得分:1)

是的 - 它非常繁琐,但你可以做到。

要遵循的步骤是:

  1. 克隆存储库 - git clone https://github.com/aphex/cordova-glass-core.git
  2. 将JavaScript文件复制到www文件夹中(通常包含在名为'js'的目录中,或者在'www'中)。
  3. 确保您的HTML文件在HTML文件中被引用,以便调用本机代码。
  4. 将Java文件添加到映射包(在本例中为com.rossgerbasi.cordova.glass)
  5. 更改config.xml以调用它们(查看plugin.xml - 您可以解码它以确定您需要哪些设置。
  6. Plugman(它是Cordova插件处理程序)询问plugin.xml以自动执行将config.xml / AndroidManifest.xml设置和文件复制并粘贴到正确位置的过程,无需人工干预 - 因此没有理由它无法手动完成。它只是有点繁琐。

    解码plugin.xml文件如下(使用:http://cordova.apache.org/docs/en/3.3.0/plugin_ref_spec.md.html#Plugin%20Specification作为参考):     

    <plugin xmlns="http://cordova.apache.org/ns/plugins/1.0"
            id="com.rossgerbasi.cordova.glass.core"
            version="0.0.2">
    
        <name>GlassCore</name>
    
        <keywords>cordova,google glass,glass,android</keywords>
    
        <description>
            Plugin to add Google Glass Support to your Cordova Application. Additional JS plugin allows developer to get voice prompt speech to text results.
        </description>
    
        <license>MIT</license>
    
        <author>Ross Gerbasi</author>
    
        <engines>
            <engine name="cordova" version=">=3.0"/>
        </engines>
    
        <js-module src="www/cordova-glass-core.js" name="GlassCore">
            <clobbers target="com.rossgerbasi.cordova.glass.core"/>
        </js-module>
    
        <!-- android -->
        <platform name="android">
            <config-file target="res/xml/config.xml" parent="/widget">
                <preference name="fullscreen" value="true"/>
                <feature name="GlassCore">
                    <param name="android-package" value="com.rossgerbasi.cordova.glass.GlassCorePlugin"/>
                    <param name="onload" value="true"/>
                </feature>
            </config-file>
    
            <config-file target="AndroidManifest.xml" parent="/manifest/application">
                <activity
                        android:name="com.rossgerbasi.cordova.glass.GoogleGlassActivity"
                        android:finishOnTaskLaunch="true"
                        android:launchMode="singleInstance"
                        android:noHistory="true"
                        android:theme="@style/GlassTheme">
                    <intent-filter>
                        <action android:name="com.google.android.glass.action.VOICE_TRIGGER"/>
                    </intent-filter>
                    <meta-data
                            android:name="com.google.android.glass.VoiceTrigger"
                            android:resource="@xml/app_launch_voice_trigger"/>
                </activity>
            </config-file>
    
            <config-file target="AndroidManifest.xml" parent="/manifest">
                <uses-permission android:name="android.permission.INTERNET"/>
                <uses-library android:name="com.google.android.glass" android:required="true"/>
            </config-file>
    
            <source-file
                    src="res/xml/app_launch_voice_trigger.xml" target-dir="res/xml"/>
    
            <source-file
                    src="res/values/styles.xml" target-dir="res/values"/>
    
            <source-file
                    src="res/values/glass.xml" target-dir="res/values"/>                
    
            <source-file src="src/com/rossgerbasi/cordova/glass/GoogleGlassActivity.java"
                         target-dir="src/com/rossgerbasi/cordova/glass"/>
            <source-file src="src/com/rossgerbasi/cordova/glass/GlassCorePlugin.java"
                         target-dir="src/com/rossgerbasi/cordova/glass"/>
        </platform>
    </plugin>
    

    主要标签是plugin - 这很好。 namekeywordsdescription等只是plugins.cordova.io使用的元数据,如果您在那里托管它(我个人不会跳过这些)。

    engines详细说明了该插件的最低cordova要求。这告诉我们至少Cordova 3.x但是它应该没问题。

    Cordova引擎使用

    js-module在com.rossgerbasi.cordova.glass.core.GlassCore下设置自动JavaScript引用 - 然后您可以在JavaScript中访问它。

    platform name="android"是Cordova用于为Android环境设置插件的plugin.xml的一部分 - 在Cordova 3.x中,您将平台添加到一个集中式项目中,因此需要如果Android平台“已安装”(即添加到您的Cordova 3.x项目中),CLI将知道该怎么做。在您的实例中,您使用的是Cordova 2.x for Android - 所以这仍然适用于我们。注:当您转移到Cordova 3.x时,您可以使用此标记定义所有平台,例如platform name="ios"来处理iOS Xcode设置。

    侧面看platform标记: config-file用于包含要粘贴到config.xml中的文本 - 因为config.xml包含JavaScript和本机代码之间的映射,所以必须匹配。我可以单独写一个关于这个标签的完整段落,但我建议你看一下其他的插件来了解它们是如何工作的。 target属性告诉CLI要将其复制到哪个文件 - 它指向Android的config.xml文件所在的res/xml/config.xml - 所以打开它并研究它以理解它。您可以将标记(preferencefeature从plugin.xml复制到此处。)

    还有第二个config-file,这次指向AndroidManifest.xml,其中target是AndroidManifest.xml(即Eclipse项目根目录中的那个)。您还会看到有一个/manifest/application标记指向AndroidManifest.xml中的树结构 - 因此您会在其中找到manifest标记和application标记 - 您可以复制所有activity标记都放在这里。

    有一个第三个​​ config-file标记 - 它的parent属性为"/manifest",因此,您可以想象,此处包含的文字将会显示在AndroidManifest.xml的manifest标记中 - 并驻留在此处。第三个config-file标记详细说明了类包需要从Android系统获得的权限,以便执行。

    接下来有五个source-file标签。 src告诉您在哪里可以找到相对于plugin.xml的本地目录中的源文件,因此您可以在res / xml /中找到app_launch_voice_trigger.xml的第一个实例,它应该是粘贴到Eclipse项目目录中的/ res / xml /(即项目的project.xml文件来自上面的config-file标记)。

    然后是两个详细说明包结构的Java文件。在src中,应该有一个com/文件夹,在rossgerbasi/文件夹中,然后是cordova,然后是glass,GlassCorePlugin.java将驻留在此处。

    一旦你添加了所有这些,然后打开Eclipse(如果它还没有打开),右键单击你的项目并“刷新”然后去!您应该希望能够与插件进行交互。