kongkong's Blog

No Silver Bullet --- Computer Language is just a tool.

工作杂谈-编译android

| Comments

最近在做飞思卡尔的android方案,根据User Guide需要在ubuntu下编译android,根据我以往做嵌入式的经验,按照文档一步步来。在这过程中的一些坑与解决方法纪录如下:

  1. 在Mac OS X下直接编译,在为android打飞思卡尔的Patch的时候会出现错误。通过VirtualBox+Vagrant的方式在mac中ssh虚拟机的方式,在打patch的时候也会报错。解决方法:直接在另外的一台电脑上安装ubuntu 64位(文档上建议64位)。
  2. 公司新购买了一台Acer笔记本,通过liveUSB安装ubuntu,在进入ubuntu安装界面时候出现黑屏。解决方法:因为acer默认亮度为0了,通过FN+亮度来调节笔记本的亮度。:)这个问题确实很隐秘啊,我还以为是acer无法安装ubuntu来着。
  3. 编译android需要的前提条件,见http://source.android.com/source/building.html.其中需要安装JDK6,饶了一圈找到的直接通过apt-get 安装方法:
$ sudo add-apt-repository ppa:webupd8team/java

$ sudo apt-get update

$ sudo apt-get install oracle-java6-installer

一些术语

AOSP: Android Open Source Project.是纯净版的android开源代码。

AOKP: Android Open Kand Project.在Android社区中,Kang是一个术语,即用来表示这是一个被他人修改过的ROM。

CM ROM:CM 是CyanogenMod 的简称,Cyanogen团队是全球最大的第三方ROM编译团队,覆盖机型范围相当之广,几乎所有热门机型都有相对应的CM ROM可以刷机使用。国内知名ROM作品 MIUI 早期也是直接采用了CM 的源代码,才能迅速在多个机型上普及。

make clean mrproper distclean的区别

clean - Remove most generated files but keep the config and
enough build support to build external modules

mrproper - Remove all generated files + config + various backup files
distclean - mrproper + remove editor backup and patch files

make dist 将所有的程序和相关的文档打包为一个压缩文件以供发布

开启CCACHE来加快android编译

ccache is a compiler cache for C and C++ that can help make builds faster. In the root of the source tree, do the following:

$ export USE_CCACHE=1
$ export CCACHE_DIR=/<path_of_your_choice>/.ccache
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G

The suggested cache size is 50-100G.

You can watch ccache being used by doing the following:

$ watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s

On OSX, you should replace linux-x86 with darwin-x86.

When using Ice Cream Sandwich (4.0.x) or older, you should replace prebuilts/misc with prebuilt.

ADB常用命令

ADB: Android Debug Bridge.
现在说下ADB常用的几个命令
1.查看设备

adb devices
这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列出显示

2.安装软件

adb install
这个命令将指定的apk文件安装到设备上

3.卸载软件

adb uninstall <软件名>
adb uninstall -k <软件名>
如果加 -k 参数,为卸载软件但是保留配置和缓存文件.

4.登录设备shell

adb shell
adb shell
这个命令将登录设备的shell.
退出shell:ctrl+D or exit
后面加将是直接运行设备命令, 相当于执行远程命令

5.从电脑上发送文件到设备

adb push <本地路径> <远程路径>
用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

6.从设备上下载文件到电脑

adb pull <远程路径> <本地路径>
用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

7.显示帮助信息

adb help
这个命令将显示帮助信息

ubuntu 切换java版本

由于在安装android sdk过程中安装了open jdk 7,在编译android 时候需要Java SE 6,所以切换java版本

update-alternatives --config java
update-alternatives --config javac

读App Store Marketing Guidlines后的总结

| Comments

在前几天,我的第一个app-“会轻松” for ipad上线了,收到了iTunes给我发的邮件,提醒我:Before you market your app, read the App Store Marketing and Advertising Guidelines for Developers.这个文档主要是讲如何推销和宣传你的app,总结一下几个注意点。

  1. All marketing or advertising materials in print or video format, or materials with high visibility in any format, must be submitted to and approved by Apple before publication or broadcast. 就是说你用来宣传你的app的视频和图片需要让Apple来审核才能对外发布。通常一般我们不会去自己diy一些视频和图片来宣传自己的app。

  2. 最常见的是在websites上显示App Store Badges,就是如下图所示的:

    App Store Badges注意尺寸。
    • Minimum size is 10 mm for use in printed materials and 40 pixels for use onscreen.最小是40px在屏幕上显示,10mm在打印出来的东西上显示。
    • Always select a size that is clearly legible but not dominant.也不要太大,只要清晰即可。

  3. 在对你的app做一个“全景图”时候,要使用黑色的Apple product,图片上的内容必须是app中有的内容,不要显示Home Page和自己另外加上一些东西。如下图:

  4. 在用文字说明来promoting你的app时候,使用“Your app name for iPad,iPhone,iTouch”, 不要使用系统的名称"Your app name for iOS OSX".

  5. 如果你的app是做实物游戏类,如Sphero,App Store Badges应该印在实物包装的背面或者正面的旁边。Place only one badge on the side or the back of the package.

What is REST  API In Web

| Comments

参考:http://www.infoq.com/cn/articles/rest-introduction

REST stands for Representational State Transfer, and it was proposed in a doctorate dissertation. It uses the four HTTP methods GET, POST, PUT and DELETE to execute different operations. This in contrast to SOAP for example, which creates new arbitrary commands (verbs) like getAccounts() orapplyDiscount()

A REST API is a set of operations that can be invoked by means of any the four verbs, using the actual URI as parameters for your operations. For example you may have a method to query all your accounts which can be called from /accounts/all/ this invokes a HTTP GET and the 'all' parameter tells your application that it shall return all accounts

IOS Develop And Distribution 的一些概念

| Comments

参考:http://www.cnblogs.com/zilongshanren/archive/2011/08/30/2159086.html

一些概念:

UDID: unique device Idetifier,是区分物理设备的唯一标识。

Certificate :认证; Certification:证书

Code signing :如果没有code signing,你只可以在模拟器上,或者一台越狱过的机器上运行你的应用----当然,仅仅如此是不能满足我们的

与Code Signing有关的东西有:

  Provisioning Profiles,App IDs,UDIDs …

Code Signing是一个综合性的东西。

生成Certification证书的时候,从钥匙串--从证书颁发机构获取,这个过程中会加密,生成 public key与private key,然后将生成的文件上传到apple生成certification。
public key和private key是很重要的,因为要验证信息,证书是生成provision profile时候要用到的东西。

Certification证书下载后,双击自动被安装到OSX上的钥匙串keychain中的Login中,可以右键点击导出p12的文件,这个p12文件可以转移到其他电脑上使用(或者系统重装后备份使用)。

最终会生成develop和distribute对应的provision profile分别用于开发测试与发布.

在XCode的Preferences中的Accounts中可以看到appleId对应的开发者帐号信息,可以查看详情,可以刷新你的profiles列表(在你更新了profile的情况下)

一些名词:

WWDC:world wide devlelop conference