01.1-开发环境

写Java程序,IDE和模拟器都是很吃资源的家伙,5G的硬盘空间、1G的内存总是需要的。软件环境我的是WindowXP SP2,开发工具就是jdk1.6.0_16+BlackBerry JDE 4.5.0,替代的工具是eclipse+bb-ant-tools-1.2.4。BlackBerry JDE 4.7.0支持的触摸屏的BB,但大多数人还有冲着Q键盘去的吧,还是以BlackBerry JDE 4.5.0为主要的环境。

01.2-阅读对象

所有对BB程序开发有兴趣的TX,由于不是从程序开发的最基本概念说起,需要一些程序开发的基础知识:了解OOP编程、知道Java的基本语法规则、熟悉IDE软件的使用。如果需要补充Java的知识,可以看看《Java2参考大全(第四版)》、《Effective Java中文版》等 ,这些图书google一下都可以找到电子版。这只是自己学习BB开发的一个记录,不涉及高级的应用,定位就是一个入门读物吧。

01.3-学习资源

BlackBerry Developer Forums - http://supportforums.blackberry.com/rim/?category.id=BlackBerryDevelopment
BlackBerry Developer Zone - http://na.blackberry.com/eng/developers/
BlackBerryForums Developer Forum - http://www.blackberryforums.com/developer-forum/    
官网的知识库 http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/customview.html?func=ll&objId=348583
电子图书下载 - http://www.ebookpdf.net   
Inblackberry(中文) - http://www.inblackberry.com/

02-开发环境搭建

摘要:黑莓开发环境的搭建,说简单也简单,说复杂也复杂。简单就是安装了JDE基本就可以了,复杂就是安装过程会遇到种种奇怪的问题--不信可以google一下,迷惘的TX有很多。这一章图文并茂展示了开发环境的搭建,照猫画虎实施下来,基本可以一次成功。

02.1-思维导图

02.2-需要的软件

jdk1.6.0_16
BlackBerry JDE 4.5.0

02.3-搭建步骤

02.3.1-下载JDK SE和BlackBerry JDE 4.5.0。

先安装JDK后安装JDE,注意是Java的开发环境JDK不是运行环境JRE,这个下载的时候要注意。

02.3.2-设置系统参数

安装JDK,默认安装在C:/Program Files/Java/jdk1.6.0_16。
我的电脑右键----属性,高级页---环境变量
PATH 路径后添加“C:/Program Files/Java/jdk1.6.0_16/bin” (按照JDK的安装路径相应调整路径和文件名)
新建两个系统变量:
CLASS_PATH 取值为“.;C:/Program Files/Java/jdk1.6.0_16/lib/tools.jar;C:/Program Files/Java/jdk1.6.0_16/lib;C:/Program Files/Java/jdk1.6.0_16/lib/dt.jar;d:/Program Files/Java/jre6/lib;d:/Program Files/Java/jre6/lib/rt.jar”
JAVA_HOME 取值为“C:/Program Files/Java/jdk1.6.0_16”。
这里设置不正确的话,后续用JDE编译程序是会提示找不到javac.exe,无法编译。

02.3.3-设置JDE

开始菜单--程序--Research In Motion--BlackBerry JDE 4.5.0--JDE,运行JDE。
JDE菜单:Edit-- Preferences
选择默认的模拟器
设置JDE界面的字体,代码编辑器的默认字体实在不好看。

02.3.4-设置模拟器

打开JDE安装目录,比如“C:/Program Files/Research In Motion/BlackBerry JDE 4.5.0”,定位到simulator目录,可以看到各种型号模拟器的配置文件。
打开JDE中默认模拟器对应的配置文件,如8820.xml,在</SimulatorConfiguration>前添加两行:
<Application>net.rim.blackberry.lang.zh_CN_Pinyin</Application>
<Application>net.rim.blackberry.lang.zh_CN.renderingSupport</Application>
这样模拟器系统就有了中文显示支持中文输入支持
可以将8820.xml文件中开发时不需要加载的应用程序删除掉,这样可以提高模拟器的启动速度。如:
<Application>net.rim.java.tasks</Application>
<Application>net.rim.java.memopad</Application>
<Application>net.rim.java.docViewer</Application>
<Application>net.rim.java.passwordkeeper</Application>
<Application>net.rim.java.browser</Application>
<Application>net.rim.java.browser.javascript</Application>
<Application>net.rim.java.help</Application>
<Application>net.rim.java.maps</Application>
<Application>net.rim.java.blackberrymessenger</Application>
点击运行simulator目录下的fledgelauncher.exe,选择默认模拟器对应的配置文件,启动模拟器。
在模拟器中打开Options--Language,或根据设置向导设置,将语言设置成“中文(简体)”。

02.4-其他开发环境的搭建

eclipse+bb-ant
eclipse是个IDE编辑器,bb-ant是个Ant的blackberry插件,使用这两个组合可以不要看JDE丑陋的界面了。
具体的设置方法参见: http://sco.0fees.net/?cat=1 或  http://blog.csdn.net/wilesilly/archive/2009/07/12/4341932.aspx
经过实践,上述方法是可行可用的。

03-经典的HelloWorld程序

摘要:学习每一个语言,都离不开这个HelloWord。JDE中的HelloWord虽然是简单的,但至少有几个作用:一是可以判断调试开发环境是否正常;二是展现了BB程序的基本框架,后续的编程不过是不断的扩展而已。
既然是经典的东西,我也就随俗了。通过这个简单的程序,可以了解学习BB程序的基本框架,无论多么复杂的软件也难逃此厩了。

03.1-思维导图

03.2-建立工作区

在BlackBerry IDE中,项目都归属在工作区(workspace)下,这样便于项目的管理和项目间依存关系的建立。工作区(workspace)的配置信息保存在.jdw文件中,一个项目文件可以归宿与不同的工作区(workspace)。
点击JDE的菜单:File->New workspace,点击“Browse”按钮选择工作区的存放路径和文件名。
由于JDE对中文的支持不是太好,建议所有的文件名和文件存放目录都用英文命名,否则有可能在编译时提示找不到路径。

03.3-建立项目文件

在BlackBerry IDE中,项目是一个应用程序或应用库的所有代码文件、资源文件、图像等的集合,项目的配置信息保存在.jdp文件中。
为了更有条理地组织项目文件,在工作区存放目录下建立一个FirstDemo子目录,并在FirstDemo目录下分别在建立三个子目录src、img、res,分别用来存放源代码、图片、其他资源。
处理完成后的目录结构如下图:

在JDE的工作区点击MyApp.jdw,右键->Create new Project in MyApp.jdw....。点击“Browse”按钮选择项目文件的存放路径和文件名。默认情况下,项目名就是最后生成程序的名字。

03.4-建立程序文件

在JDE的工作区点击FirstDemo,右键->Create new File in Project....。点击“Browse”按钮选择程序文件(.java)的存放路径和文件名。
JDE将自动生成一个程序框架

删除自动生成的程序代码,将如下代码复制拷贝进去:

/*
作者:小叶 xiaoye.org
发布:http://hi.baidu.com/netis
可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息
*/
package src;
//导入库
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
public class HelloWorld extends UiApplication {   
  //程序的构造函数       
    public HelloWorld() {   
         HelloWorldScreen screen = new HelloWorldScreen();   
         pushScreen(screen);   
     }   
     //程序的入口函数 java程序运行都需要这个 否则会提示找不到main的提示
    public static void main(String[] args) {   
         HelloWorld app = new HelloWorld();   
         app.enterEventDispatcher();   
     }
    //窗口类    
    public class HelloWorldScreen extends MainScreen {            
            public HelloWorldScreen() {
                     add(new LabelField("Hello World!"));   
         }   
     }
   
}

03.5-编译

点击JDE的菜单:Build->Build...,或直接快捷键F7进行编译。若JDE下方的输出窗口最后显示"Build complete.",恭喜你--第一个BlackBerry程序已成功生成了。

03.6-运行

点击JDE的菜单:Debug->Go...,或直接快捷键F5进行程序运行调试。JDE会自动调用“02.3.4-设置模拟器”中设置的模拟器进行运行调试。
首次运行会出现如下提示:
点击“Don't ask this again”,继续。待模拟器启动成功,就可以在应用程序界面中看到FirstDemo程序(和项目名一致)了。
在模拟器中用鼠标中键(或PC机的回车键)点击运行FirstDemo程序,就可以看到经典的“Hello World”了。

03.7-程序发布

首先设置待发布程序的一些信息,否则生成的ALX文件不符合要求。
在JDE的工作区点击FirstDemo,右键->properties....。在属性设置窗口的General输入有关的版权信息,最好都是英文。
点击JDE的菜单:Project -->Generate ALX file...,生成BB程序安装必须的.alx文件。
运行后在项目所在目录就可以看到.cod文件和.alx文件了,通过BB“桌面管理器”就可以安装FirstDemo到BB上了。

04-标准界面的HelloWorld程序

摘要:看到Hello World显示在BB屏幕,是不是有些激动?但这个程序最多只能算是测试开发环境是否正常可用的实验代码,没有友好的界面,没有良好的交互。一个像样的程序只要要有个彩色的窗口、有用户输入、有按钮、有菜单吧?完善一下标准的HelloWorld程序。
标准的HelloWorld程序也太简陋了,有了太多的想法要实现:
▲能否设置一个漂亮的程序图标,而不是黑乎乎的命令行窗口?
▲能否设置一个程序标题?
▲能否放一个按钮点击后提示欢迎信息?
▲能否自定义一个菜单?

04.1-思维导图

04.1-为程序添加图标

在JDE的工作区点击FirstDemo,右键->properties....。在属性设置窗口点击Add添加一个图像文件,支持.png、.gif、.jpg。
图像文件名必须是英文名,否则编译的时候会提示“I/O Error: invalid UTF-8 encoding”
程序编译运行后图标就会显示成一个笑脸:

04.2-设置程序标题

通过如下代码即可实现:
//设置程序的标题
LabelField title = new LabelField("Hello World",Field.FIELD_HCENTER);
this.setTitle(title);

04.3-设置程序主界面的背景

要实现这个功能需要分两步,

第一步:从容器控件VerticalFieldManager基础一个新布局控件BackgroundManager,增加一个背景颜色的属性,并通过重载VerticalFieldManager的paintBackground来实现自定义设置的显示。

//定义一个窗口布局控件   主要是为了能改变窗口背景颜色
public static class BackgroundManager extends VerticalFieldManager
{
    private int bgColor = Color.NAVY;
    public BackgroundManager()
     {
        super( USE_ALL_HEIGHT | NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR    );
         bgColor = Color.NAVY;
     }
    
    public BackgroundManager(int bgcolor)
     {
        super( USE_ALL_HEIGHT | NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR    );
         bgColor = bgcolor;            
     }
   //重新设置程序背景色彩
    protected void paintBackground(Graphics g)
     {                   
         g.setBackgroundColor(bgColor);
         g.clear();
        super.paint(g);
     }
}
第二步:创建一个背景容器BackgroundManager命名为mgr,并将其他控件放置在这个背景容器上,最后将背景容器放置到程序主窗口HelloWorldScreen上。
//背景容器实例
BackgroundManager mgr = new BackgroundManager(Color.MEDIUMAQUAMARINE);
//添加一个输入域
edtName = new BasicEditField("输入您的姓名: ","小叶", 20,Field.FIELD_LEFT );
mgr.add(edtName);
//添加一个按钮 点击后根据输入的内容提示
btnShow = new ButtonField("显示欢迎信息",Field.FIELD_HCENTER | ButtonField.CONSUME_CLICK );
btnShow.setChangeListener(this);
mgr.add(btnShow);    
this.add(mgr);
下图为实施上两步后的效果:

04.4-增加一个用户输入域

通过如下代码即可实现:
为了后续点击按钮可以取得录入的内容,在构造函数前定义一个输入域控件。
//定义类的元素
private BasicEditField edtName = null;  //姓名输入域
创建和添加数据域。
//添加一个输入域
edtName = new BasicEditField("输入您的姓名: ","小叶", 20,Field.FIELD_LEFT );
mgr.add(edtName);
效果见上图。

04.5-添加一个按钮

//添加一个按钮 点击后根据输入的内容提示
btnShow = new ButtonField("显示欢迎信息",Field.FIELD_HCENTER | ButtonField.CONSUME_CLICK );
btnShow.setChangeListener(this);
mgr.add(btnShow);    
this.add(mgr);
对按钮事件接口也需要继承后定义下接口处理
//处理按钮事件
public void fieldChanged(Field field, int ctx)
{
    if (field == btnShow) {        
         Dialog.alert("欢迎您-"+edtName.getText());
     }
};
程序运行后,点击按钮,按钮就会根据录入的内容显示欢迎信息,如下图。

04.6-自定义菜单

首先,创建需要显示的子菜单,为区分与系统默认菜单项,菜单显示名称以*开始。
//定义显示信息菜单项目
public MenuItem showItem= new MenuItem("*显示欢迎信息", 160, 10 )
{
    public void run()
     {
         Dialog.alert("欢迎您-"+edtName.getText());
     }
};
//定义显示关闭菜单项目
public MenuItem closeItem= new MenuItem("*退出", 170, 10 )
{
    public void run()
     {
         onClose();
     }
};
其次,重载菜单生成函数,使得自定义菜单添加到系统默认菜单中。
//重载makeMenu 添加自定义的菜单
protected void makeMenu(Menu menu, int instance)
{       
   menu.add(showItem);
   menu.add(closeItem);
}
菜单显示效果如下:
点击菜单后显示对话框:

04.7-完整代码

为了代码的维护和可读性,将定义窗口类的代码单独成一个文件HelloWorldScreen.java。创建新程序文件的方法见第三部分的“03.4-建立程序文件”。

主程序HelloWorld.java

/*
HelloWorld.java
主程序
作者:小叶 xiaoye.org
发布:http://hi.baidu.com/netis
可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息
*/
package src;
//导入库
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;
public class HelloWorld extends UiApplication {   
    //程序的构造函数       
    public HelloWorld() {   
         HelloWorldScreen screen = new HelloWorldScreen();   
         pushScreen(screen);   
     }   
     //程序的入口函数 java程序运行都需要这个 否则会提示找不到main的提示
    public static void main(String[] args) {   
         HelloWorld app = new HelloWorld();   
         app.enterEventDispatcher();   
     }
}

窗口类HelloWorldScreen.java

/*
HelloWorldScreen.java
窗口类 实现了程序的用户界面
作者:小叶 xiaoye.org
发布:http://hi.baidu.com/netis
可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息
*/
package src;
//导入库
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.system.Display;
//窗口类    
final class HelloWorldScreen extends MainScreen implements FieldChangeListener {
    //定义类的元素
    private BasicEditField edtName = null;  //姓名输入域
    private ButtonField btnShow = null;      //显示按钮
    //构造函数
    public HelloWorldScreen() {
        //父类的事件 显示默认的上下文菜单
        super(DEFAULT_MENU | DEFAULT_CLOSE);
        //设置程序的标题
         LabelField title = new LabelField("Hello World",Field.FIELD_HCENTER);
        this.setTitle(title);
        //背景容器实例
         BackgroundManager mgr = new BackgroundManager(Color.MEDIUMAQUAMARINE);
        //添加一个输入域
         edtName = new BasicEditField("输入您的姓名: ","小叶", 20,Field.FIELD_LEFT );
         mgr.add(edtName);
        //添加一个按钮 点击后根据输入的内容提示
         btnShow = new ButtonField("显示欢迎信息",Field.FIELD_HCENTER | ButtonField.CONSUME_CLICK );
         btnShow.setChangeListener(this);
         mgr.add(btnShow);    
        this.add(mgr);
     }
    
    //定义显示信息菜单项目
    public MenuItem showItem= new MenuItem("*显示欢迎信息", 160, 10 )
     {
        public void run()
         {
             Dialog.alert("欢迎您-"+edtName.getText());
         }
     };
    //定义显示关闭菜单项目
    public MenuItem closeItem= new MenuItem("*退出", 170, 10 )
     {
        public void run()
         {
             onClose();
         }
     };
    
     //重载makeMenu 添加自定义的菜单
     protected void makeMenu(Menu menu, int instance)
      {       
         menu.add(showItem);
         menu.add(closeItem);
     }
    
    //处理按钮事件
    public void fieldChanged(Field field, int ctx)
     {
        if (field == btnShow) {        
             Dialog.alert("欢迎您-"+edtName.getText());
         }
     };  
    
    //重载onClose, 退出时提示
    public boolean onClose()
     {
        if ( Dialog.ask(Dialog.D_YES_NO, "确定退出吗?") == Dialog.YES )
         {
             System.exit(0);
            return true;
         }
        return false;
     }  
    
    //定义一个窗口布局控件   主要是为了能改变窗口背景颜色
    public static class BackgroundManager extends VerticalFieldManager
     {
        private int bgColor = Color.NAVY;
        public BackgroundManager()
         {
            super( USE_ALL_HEIGHT | NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR    );
             bgColor = Color.NAVY;
         }
        
        public BackgroundManager(int bgcolor)
         {
            super( USE_ALL_HEIGHT | NO_VERTICAL_SCROLL | NO_VERTICAL_SCROLLBAR    );
             bgColor = bgcolor;            
         }
       //重新设置程序背景色彩
        protected void paintBackground(Graphics g)
         {                   
             g.setBackgroundColor(bgColor);
             g.clear();
            super.paint(g);
         }
     }
       
}

05-再说开发环境和入门阶段的一些问题

摘要:按照教程按图索骥,应该是可以写一个像样的HelloWorld程序了。但学习编程不是就此止步,需要解决实际的问题。开发一个构思中的软件需要一个好的开发环境、入门过程中也遇到了一些问题、如何快速提高编写代码的水平......等等诸如此类的问题也浮上水面。

05.1-调试一个顺手的开发环境

第二章“02-开发环境搭建”提到了两种方法:使用BlackBerry JDE 4.5.0或eclipse+bb-ant,前者不利于代码效率,后者配置太复杂了,变更一个Wordspace需要重头来一遍。使用下来还是eclipse+BlackBerry_JDE_plug-in_for_Eclipse比较实用和易用。

BlackBerry_JDE_plug-in_for_Eclipse可以从BlackBerry的官方网站上下载,JDE限制中国大陆的IP地址下载,但是这个插件在填写一些简单的资料后可以下载。下载地址:http://na.blackberry.com/eng/developers/javaappdev/javaeclipseplug.jsp   。
下图为下载前需要填写资料的表单:

BlackBerry_JDE_plug-in_for_Eclipse支持的eclipse是3.4版本的,eclipse官方网站上现在提供的版本是3.5的,插件安装是提示版本过低,需要下载eclipse 3.4然后再安装插件。
一般使用Eclipse IDE for Java Developers 这个版本就可以了。

将eclipse3.4解压到一个目录,然后运行“BlackBerry_JDE_PluginFull_1.0.0.67.exe”安装BlackBerry_JDE_plug-in_for_Eclipse,在安装的过程中选择eclipse3.4目录。

安装完毕,设置JDE Version,eclipse菜单“Window->Preferences->BlackBerry”,配置BlackBerry JDE的参数。

中文化设置参见:“02-开发环境搭建-02.3.4-设置模拟器”,其中模拟器的目录改到eclipse下,如:
D:/eclipse3.4/plugins/net.rim.eide.componentpack4.5.0_4.5.0.16/components/simulator

05.2-使用eclipse写黑莓程序

05.2.01-Eclipse 菜单 File->New->Project

点击“Next”建立一个HelloWorld的项目,项目文件结构清单如下:

05.2.02-建立程序文件

eclipse菜单“File->New->Class”,建立一个新的Java Class文件“HelloWorld”作为主程序。

在建立一个新的Java Class文件“HelloWorldScreen”作为主窗口类。

HelloWorld.javaHelloWorldScreen.java

/*
作者:小叶xiaoye.org
发布:http://hi.baidu.com/netis
可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息
*/
import net.rim.device.api.ui.UiApplication;
public class HelloWorld extends UiApplication {
    public HelloWorld() {
         HelloWorldScreen screen = new HelloWorldScreen();
         pushScreen(screen);
     }
    public static void main(String[] args) {
         HelloWorld app = new HelloWorld();
         app.enterEventDispatcher();
     }
}
/*
作者:小叶 xiaoye.org
发布:http://hi.baidu.com/netis
可以任意转载, 转载时请务必以超链接形式标明文章原始出处和作者信息
*/
import net.rim.device.api.ui.component.LabelField;   
import net.rim.device.api.ui.container.MainScreen;  
public class HelloWorldScreen extends MainScreen {   
    public HelloWorldScreen() {   
         add(new LabelField("Hello World!"));   
     }   
}  

05.2.03-编译

项目选项中选择了Build Automatically,eclipse已自动编译文件了。

修改代码后,Alt+B重新生成程序。

05.2.03-调试和运行

设置调试参数,点击调试图标打开Debug Configurations。

在设置画面中选择模拟器参数

后续开发就可以直接点击这个“BB8820”运行了。

05.3-加速程序的调试

在开发过程中发现,调试或运行程序的过程中,每次点击前述配置文件“BB8820”运行,需要相当长时间才能完成模拟器加载、程序运行。在不需要对程序设置断点跟踪的情况下,可以通过如下方式快速看到程序运行的结果。

(1)运行JDE安装目录下的“C:/Program Files/Research In Motion/BlackBerry JDE 4.5.0/simulator/fledgelauncher.exe”,启动模拟器;
(2)模拟器菜单“File->Load Java Programe......”,打开项目所在目录下的“HelloWorld.cod”,模拟器会重新加载程序,点击程序运行即可看到运行效果。节省了模拟器启动的时间。

05.4-API库的选中和签证

如果使用net.rim.blackberry开头的blackberry专用的API,大多数API需要取得BlackBerry的签证才可以使用。在程序中使用这些专用的API,模拟器可以运行但是无法运行在设备上。

05.4-学习优秀代码

开发程序,学习优秀的代码可以起到事半功倍的作用。LogicMail是一个J2ME E-Mail客户端支持IMAP和POP协议,可以运行在OS 4.2以上版本的BB中。这是一个开源的软件,可以从这里查看其源代码,可以学习到许多。

RIM公司为BlackBerry开发提供了多种开发平台,不同平台的开发人员可以选择自己熟悉的开发工具,但是个人觉得还是BlackBerry JDE Plub-In for Eclipse最好用

首先安装JDK,官方下载地址:http://java.sun.com/javase/downloads/index.jsp

Eclipse官方下载地址:http://www.eclipse.org/downloads/,Eclipse是一个硬盘程序,一般把下载的压缩文件解压就可以使用。

BlackBerry JDE Plug-In for Eclipse下载地址:http://www.blackberry.com/developers

黑莓开发学习(入门教程)相关推荐

  1. 黑莓开发学习入门系列,自己动手实现一个日历软件(六)

    最近有点乱糟糟,还是继续写完剩下的: 根据 黑莓开发学习入门系列,自己动手实现一个日历软件(二)实现一个黑莓应用程序最基本的结构,我们真正的可以实现日历了: 新建一个工程 calender:作为日历的 ...

  2. jsx 调用php,JavaScript_JavaScript的React框架中的JSX语法学习入门教程,什么是JSX? 在用React写组件的 - phpStudy...

    JavaScript的React框架中的JSX语法学习入门教程 什么是JSX? 在用React写组件的时候,通常会用到JSX语法,粗看上去,像是在Javascript代码里直接写起了XML标签,实质上 ...

  3. 微信小程序云开发 初学者入门教程二

    微信小程序云开发 初学者入门教程二-前端操作数据库模块 如何操作数据库,作为一名前端,如果对数据的知识不够熟悉也没关系,从现在开始好好学习就行,数据库的操作内容差不多涉及增删改查四大模块,花一些业余的 ...

  4. HarmonyOS2.0 华为鸿蒙开发学习实战教程

    据统计,鸿蒙系统升级用户2周破1800万,1个月突破3000万.升级速度完全超出市场预期,很显然,华为严重低估了消费者的支持热情.随即,华为鸿蒙目标多次升级,从2亿到4亿,后年目标12.3亿. 而且, ...

  5. ​HealthKit开发快速入门教程大学霸内部教程

    ​HealthKit开发快速入门教程大学霸内部教程 ​ ​ 国内第一本HealthKit专向教程.本教程详细讲解iOS中,如何使用HealthKit框架开发健康应用.最后,本教程结合HealthKit ...

  6. Apple Watch开发快速入门教程

     Apple Watch开发快速入门教程  试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本A ...

  7. 游戏控制杆OUYA游戏开发快速入门教程

    游戏控制杆OUYA游戏开发快速入门教程 1.2.2  游戏控制杆 游戏控制杆各个角度的视图,如图1-4所示,它的硬件规格是本文选自OUYA游戏开发快速入门教程大学霸: 图1-4  游戏控制杆各个角度的 ...

  8. OUYA游戏开发快速入门教程1.2OUYA的硬件规格

    OUYA游戏开发快速入门教程1.2OUYA的硬件规格 从官网上购买回来的OUYA产品,包含游戏主机.游戏控制杆.说明书.电源线.HDMI线.电源线和电池,如图1-2所示.本节就来简要介绍下,游戏主机和 ...

  9. OUYA游戏开发快速入门教程第1章了解OUYA及其设备

    OUYA游戏开发快速入门教程第1章了解OUYA及其设备 OUYA是基于Andorid系统的游戏主机.围绕OUYA游戏机,已经形成一个完整的生态圈.在国外,OUYA已经成为知名的游戏平台.本章会站在玩家 ...

  10. OUYA游戏开发快速入门教程

     OUYA游戏开发快速入门教程 试读地址:http://pan.baidu.com/s/1o63a3W2 本教程是国内唯一OUYA游戏开发教程.本教程基于Unity全面讲解OUYA游戏开发方式.内容包 ...

最新文章

  1. Python切分图像小案例(1、3、2、4象限子图互换)
  2. 17委托异步调用方法
  3. semantic-ui-react图像组件不显示图像的问题
  4. 获香港证监会颁发牌照的弘量研究,正用智能投顾帮助金融机构降低成本,提升资产管理能力 By 藤子2017年10月09日 17:16 撰文 | 藤子 2015 年,雷春然和黄耀东都是在香港科技大学的
  5. 重理工c语言实验指导书答案,常熟理工学院 C语言程序设计实验实验指导书及答案...
  6. 【译】A Beginner-Friendly Introduction to Containers, VMs and Docker
  7. [原创].如何解决Nios II SBTE中出现的undefined reference to `xxx'警告
  8. 【Python基础知识-pycharm版】第十节_异常
  9. linux运维解决ddos,运维人员该如何排查并解决DDOS攻击
  10. mysql自动备份 linux_Linux下MySQL数据库自动定时备份
  11. 宁夏打造会思考更智能新型智慧城市
  12. 【3ds Max】FractureVoronoi碎裂插件生成破碎物体
  13. 响应式网页设计学习笔记
  14. 计算机专业专科可以进的国企,专科学这四个专业!考国企、事业编制会容易很多...
  15. Cookie、Session、Token与JWT解析
  16. matlab清除所有变量,但是除了某些变量
  17. 《机器学习实战》学习笔记第八章-回归
  18. java enum枚举型使用
  19. php5.3 register_globals,在PHP 5.3中PHP寄存器全局支持?(PHP register globals support in PHP 5.3?)...
  20. Oracle数据库远程连接的方法

热门文章

  1. win7 右下角显示时间日期
  2. 【AVD】FFmpeg 音频编码时 SampleFormat 的选择,报错 “Specified sample format s16 is invalid or not supported.“ 的解决
  3. 突发!AI视觉大牛陶大程被爆将离职京东探索研究院院长!
  4. WordPress REST API 主题
  5. Prometheus + Grafana 监控和告警
  6. 如何申请搜狐自媒体才能通过?
  7. BLHeli无刷电调 调参介绍 某宝八元电调
  8. LaTeX 书写 argmax and argmin 公式
  9. 组成原理|手持两把锟斤拷,口中疾呼烫烫烫
  10. 2006年最变态语录