GOAGENT又一个基于GAE的穿越利器

by sundy 8/16/2011 7:26:00 AM

GoAgent是 一个使用Python和Google Appengine SDK编写的代理软件。部署和使用方法非常简单,不需要安装Python或者Google Appenginge SDK ,几分钟即可搞定。

具体步骤如下:

GoAgent『申请与创建』

首先申请 注册一个Google App Engine账号(点此注册)。没有Gmail账号先注册一个, 用你的Gmaill账号登录。

过程详解如下:下图:

登录之后,自动转向Application注册页面,如下图

接下来的页面,输入你的手机号码如下图:

需要注意的是,手机号码前面要+86 格式如:+86 13888888888。然后等待收取手机短信,收到短信后(一串数字号码)填入下图表单,点send提交.

提交完成之后,GAE账号即被激活,然后就可以创建新的应用程序了。转入“My Applications”页面,点击“Create an Application”新建应用,如下图

一个Gmail账户最多可以创建十个GAE应用。这里我们只创建一个应用就可以了。进入下一步,填写新应用的必要信息,如下图

在上图中第一处添加一个应用名称,如abc555验证一下是否可用,如果通过那么abc555就是你的Appid(记住这个id),而abc555 .appspoft.com就是你的应用服务器地址了。第二个空可随便填,点击提交按钮,如果能看到下图这个页面,就说明你成功创建了一个新的应用,你也可以点击应用名称,进入控制面板进行管理。

GoAgent『部署和使用』

1.申请Google Appengine并创建appid
2.下载GoAgent  https://github.com/phus/goagent/zipball/master (新版)
3.双击server\upload.bat,输入你的appid和你的Gmail帐号和密码,就会自动上传到服务端
4.把local\proxy.ini中的your_appid 改成你申请到的appid
5.设置浏览器代理为127.0.0.1:8087
6.运行taskbar.exe  好了,现在你可以穿墙了。

上图为第3 步截图。(输入AppID按回车,再输入gmail帐号按回车,输入密码后再按回车键(注:输入密码时不会显示)就开始自动上传了,多等一会,上传完毕后黑窗口会自动关.

上图为第4步的截图。local\proxy.ini中的your_appid 改成你申请到的appid (用windows的记事本也可以)

你也可登录你的GAE账户,在后台管理查看(上图)

笔者建议用Firefox浏览器,再安装一个Autoproxy 插件,可以在是否使用代理选择上非常方便地切换。安装插件https://addons.mozilla.org/zh-CN/firefox/addon/autoproxy/ 安装后,因autoproxy插件里没有goagent代理选项,须自建一个,步骤如下:
重启浏览器后,点击浏览器上方的/工具/autoproxy/代理服务器/编辑代理服务器/添加代理/然后新建一个“名称goagent  主机127.0.0.1  端口8087/确定”,然后选择代理服务器/goagent/确定。(下图)

运行taskbar.exe (下图)

启动Firefox浏览器,(autoproxy插件安装后,在浏览器的右上角或右下角有一个“福”字,点击这个字,绿色为全局代理,红色为自动判别模式)。点击http://www.ip,全局模式下看到下图,穿越成功。

GoAgent 现在越来越简单了,太容易搭建了,且速度飞快。(不建议用IE浏览器,在Chrome和Firefox下没有任何问题,但用IE时常常翻不出去。)Goagent 打开SSL连接的网站,如果浏览器弹出证书无效警告,可以用这样的方法解决:导入证书:在local文件夹下的ssl文件夹有一个ca.crt证书文件;# Firefox依次操作:“首选项->高级->加密->查看证书->证书机构->导入->选择 local->sll->ca.crt 文件–>确定”,即可导入成功。(Chrome下直接双击ca.crt安装证书)

Currently rated 2.7 by 427 people

  • Currently 2.711989/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Internet Communion | Mobile & Wireless

台湾IT业Android工程师紧俏 年薪50万大陆抢人

by sundy 6/5/2011 2:20:05 PM

面对传统PC向移动互联网的转变,台湾IT行业的人才资源也面临一次由“硬”到“软”的转型。

不仅在岛内争夺升温,大量的台湾硬件厂商还把目光瞄向了内地——这里聚集着大量的软件研发工程师,尤其是正当潮流的Android系统平台,相比台湾,大陆研发人才储备更为丰富。

这与过去台湾仅把大陆当作代工基地和销售市场的时代,相去甚远。

“由于近年内地山寨产业的发展,事实上在基于Android平台的研发上,内地研发人员走在了台湾公司的前面。”深圳一家平板电脑厂商负责人告诉记者,台湾硬件厂商倾注太多精力在wintel架构(指windows系统和intel架构),在基于ARM和Android架构上的资源投入严重不足——尽管台湾有宏达电,但不过凤毛麟角。

台湾硬件厂商们难以回避的现实是,面对移动互联网时代的大趋势,ARM加Android的架构无疑更具优势——更快的运算速度和更低的功耗,但这需要极强的软硬件整合能力。

而这恰恰是台湾传统硬件厂商的软肋。

由“硬”到“软”转型

中层软硬整合正是台湾硬件厂商的软肋

今年上半年,台湾的IT制造企业集体“加码”软件研发。

仁宝总经理陈瑞聪在今年一季度法人会上表示,软件将是公司今年重点发展项目:“规模要从当前的100人,扩充到600人。”

宏碁和宏达电也纷纷表示,今年年底要招募超过1000名软件工程师。

“台湾IT业过去的优势在硬件代工,软件研发实力稍显薄弱。”半导体行业分析人士王艳辉认为,面对向移动互联网转型的大趋势,台湾IT企业需要加强软件研发领域的投入,尤其是基于Android平台的应用开发。

在过去PC时代,软件设计部分基于微软英特尔架构,相对成熟。而在功能性手机产品上,联发科的turn key模式,让下游集成商在软件研发上不需要耗费太大的精力,即可“一站式”解决。

相比之下,Android系统平台分为上层应用程式端、中层软硬整合平台和下层硬件驱动。其中,中层软硬整合正是台湾硬件厂商的软肋。

“让公司从硬件制造转向软件和服务时,对于传统的代工厂商,是个不小的挑战。”在王艳辉看来,相比之下,大陆IT业界在软件研发上,尤其是基于ARM和Android架构的研发上,近年积累迅速。

在此背景下,台湾传统硬件制造商针对软件研发人才的“争夺战”,悄然打响。本报记者了解到,6月初,仁宝在昆山基地、富士康在深圳基地,近期都展开大规模软件研发人员的招聘工作。

来大陆挖人

台湾硬件厂商还通过猎头公司四处挖角

“刚和BENQ(明基)朋友聊天,台湾大厂确实在到处挖软件人才,非常缺。”6月3日下午,身在台北电脑展的深圳创智成科技有限公司总经理徐建平给记者发来短信。

据本报记者了解,除了常规招聘外,台湾硬件厂商还通过猎头公司四处挖角,其中大陆山寨厂商的Android研发工程师,也成为台湾硬件厂商觊觎的对象。

“事实上,深圳的山寨厂商,是国内最早从事Android研发的一个群体。”一位深圳原山寨厂商负责人告诉记者,早在2009年初,受山寨机市场利润持续下滑的影响,部分山寨机厂商开始基于Android的研发,以期望尽早抢占市场,拉低价格。

一个可供参考的事实是,早在2009年7月,深圳手机设计公司创扬通信就号称推出了首款基于Android平台的手机。(见本报2009年7月24日报道《深圳草莽竞跑Android:阻击Gphone入华》)

 

“由于Android系统的不稳定性,加之成本过高。事实上,绝大部分山寨厂商推出的Android手机,都没有成功。”上述山寨厂商人士认为,但这次经历为Android的研发积累了经验。

不止于此,相比较台湾硬件厂商在wintel架构倾入太多资源,而在arm和Android架构面临“船大难掉头”的困境,大陆电子企业则显得“轻装上阵”。

例如,福州瑞芯微电子是大陆最早由MP3转型Android平台研发的芯片设计公司,今年1月,瑞芯微电子推

出首个基于Android系统的智能设备提供全套解决方案RK29XX,其涵盖了包括智能手机、MID、平板电脑、电子书、网络电视、MP4等多种电子设备。

在此背景下,仁宝、联发科、Mstar纷纷在内地兴建研发机构,招募大量的本地化软件研发人才,其中Android工程师成为“抢手货”。

紧俏的Android工程师

Android开发工程师呈现紧缺态势,多方争夺之下,其工资薪酬水涨船高

“直到今天,Android研发工程师仍很抢手。”徐建平在电话中感慨。

创智成一度是深圳当地最大的主板生产商,在昙花一现的上网本时代,创智成一度占据深圳上网本市场出货量的50%以上。其后,其快速转入Android系统平板电脑的研发,是深圳当地最早一批进入Android平台研发的厂商之一。

“公司有上百人的研发团队,但Android研发人才仍旧紧俏。”徐建平告诉本报记者。

据徐分析,目前Android研发工程师呈现稀缺局面,主要有两个方面原因。其一,是Android系统上市时间不长,相关技术人才储备尚处在积累阶段;其二,是Android系统自身的不稳定性,这提高了相关的技术人员的研发难度。

事实上,内地的Android研发相比较台湾,仍走在前列。“内地Android平台开发商很多是由MP3、手机平台转型而来的,他们在移动便携式电子设备上较有优势。”徐建平分析,在开发过程中,这些平台商更擅长处理低功耗和便携方面的平衡。

相比之下,台湾大量的硬件企业,以传统PC代工起家,在基于移动互联网应用的研发方面能力不足。

“从去年开始,就有不少台湾硬件厂商,在深圳招募Android工程师。”徐建平告诉记者,Android开发工程师呈现紧缺态势,多方争夺之下,其工资薪酬水涨船高。

据本报记者了解,目前一个资深Android工程师年薪可以拿到50万左右,而一个入行两年的Android工程师,月薪可接近2万。

Currently rated 2.4 by 40 people

  • Currently 2.375/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless | Newscaster

诺基亚CEO内部备忘录曝光:承认失败承诺改变

by sundy 2/12/2011 3:54:00 AM

 

以下为史蒂芬·埃洛普致员工内部备忘录的内容:

你们好:

有一个经久流传的故事,是关于在北海石油开采平台工作的一个人。有一天晚上,他被巨大的爆炸声惊醒,突然间整个石油平台都被熊熊烈火笼罩。几秒钟的时间里,他也被火光包围在中间。他努力穿过浓烟与烈火,来到了平台边缘,往下只能看到黑暗、冰冷和咆哮的大西洋海水。

随着烈火的靠近,他只有几秒钟时间做出反应。他要么站在平台上,被烈火无情地吞没,要么从30米高的石油平台跳进冰冷的海水中。这个人站立在“燃烧的平台”,他需要作出选择。

他决定跳下去。这有点出乎意料。在通常情况下,他绝不会考虑跳入冰冷的海水中。但他面对的不是通常情况,他所站立的平台已经着火。他成功跳入海中并存活下来。在被救出来之后,他说,“燃烧的平台”使得他采取了极端的行为。

我们也站在一个“燃烧的平台”,我们必须决定如何改变自己的行为。

过去几个月里,我与你们共享了我从股东、运营商、开发商、供应商以及你们那里听到的话。今天,我要共享我所学到的,以及我所坚信的。

我认识到,我们站在一个燃烧的平台。

另外,我们的爆炸不只一次,我们面对着多个炽热的高温点,使得周围的火焰越烧越旺。

例如,我们的竞争对手点燃了炽热的火焰,而且比我们预想的速度更快。苹果重新定义了智能手机,将开发人员吸引到一个封闭,但是强大的生态系统,进而摧毁了整个市场。

2008年,苹果在300美元以上手机市场的占有率为25%;到2010年市场占有率上升至61%。2010年第四季度,苹果营收额同比实现了78%的增长。苹果的成功说明,只要设计优秀,消费者愿意购买拥有出色体验的高价手机,开发人员也愿意为其开发应用。他们改变了游戏格局,而今天苹果拥有了高端市场。

其次,还有Android。在大约两年时间里,Android已经成为一个能够吸引应用开发人员、服务提供商和硬件生产商的平台。Android从高端市场着手,现在已经开始赢得中端市场,很快他们将进入100欧元以下手机的低端市场。谷歌就像地心引力一样,吸纳了行业内大量的创新。

我们不要忘记低端价格区间。2008年,联发科开始提供手机芯片组,使得中国深圳地区的生产商能够以难以想象的速度生产手机。有数据显示,这些生产商的手机占全球手机出货量的三分之一以上,在新兴市场吞食我们的市场份额。

就在竞争对手向我们的市场份额投下火焰的时候,诺基亚呢?我们落后了,我们错失了重要趋势,我们失去了时间。那个时候,我们认为可以做出正确的决定,但实际上,事后发现我们已经落后了几年。

第一款iPhone在2007年进入市场,而我们直到现在都没有一款能够接近iPhone体验的产品。Android进入我们的视野仅仅两年时间,而本周Android已经夺去了我们在智能手机出货量方面的领先地位。难以想象。

在诺基亚内部,我们有一些出色的创新源泉,但我们未能及时将其引入市场。我们认为MeeGo可以成为赢得高端智能手机市场的平台,但以目前的速度,到2011年底,我们也只能向市场推出一款MeeGo产品。

在中端市场,我们还有Symbian,它被证明在北美等成熟市场是不具有竞争力的。另外,Symbian被证明是一个开发人员越来越难以满足用户不断增长的需求的平台,这导致产品开发速度变慢,给我们在探索新硬件平台优势的过程中带来了不利因素。如果我们像过去一样继续下去,那我们必将会进一步落后,而竞争对手则进一步扩大领先优势。

在低端市场,中国的手机生产商正以远远超过我们的速度推出新产品,正如一位诺基亚员工半开玩笑地所说,“就在我们完善PowerPoint介绍的时间里”,他们就可以推出新手机。他们速度非常快,价格非常低,因此对我们构成了挑战。

真正令我们困惑的是我们甚至没有合适的武器来发起反击。我们仍然试图将每部设备的价格达到价格区间。

现在手机之间的竞争已经转变成整个生态系统的争夺,而生态系统不仅仅包括产品的硬件和软件,还包括开发人员、应用程序、电子商务、广告、搜索、社交应用、地理位置服务、统一通信等。我们的竞争对手们并不是依靠设备来夺取我们的市场份额,而是依靠整个生态系统。这意味着,我们必须决定如何打造和开发生态系统,或者加入某个生态系统。

这是我们要做出的决定之一。我们在失去市场份额的同时,还失去了思维,失去了时间。

周二,标准普尔表示有可能把诺基亚信用评级下调至“负面”。这与穆迪上周给予诺基亚的评级类似。这意味着,在接下来几周时间里,他们将对诺基亚进行分析,并决定是否下调诺基亚评级。这何信贷机构考虑做出这种改变?因为他们对我们的竞争力感到担忧。

消费者对诺基亚的青睐也在全球范围内下滑。在英国,我们的品牌喜爱程度下降至20%,比去年下降了8%。也就是说,在英国只有五分之一的消费者对诺基亚的喜爱程度超过其它品牌。而在其它一些诺基亚传统优势市场,诺基亚品牌的喜爱程度也有所下滑,例如俄罗斯、德国、印度尼西亚、阿联酋等等。

我们为何会沦落到这种地步?我们为何会在世界发展过程中落后?

这是我一直希望理解的。我认为,至少其中一部分原因要归结于诺基亚内部。我们自己将石油洒到了燃烧的平台。我认为在目前变革时代下,我们缺乏足够的可信度和领导能力来调整和指导公司。我们有一系列的失误,未能迅速做出创新,内部合作也不够理想。

诺基亚,我们的平台正在燃烧。

我们正在探索前方的道路,一条重新建立市场领先的道路。我们会在2月11日公布新的战略,这将是公司转型的一次重大努力。但我坚信,只要齐心协力,我们可以对领先者发起挑战。只要齐心协力,我们可以将未来掌握在自己手中。

燃烧的平台迫使一个人改变自己的行为,面对不确定的未来走出大胆、勇敢的一步。这样他才能够讲出自己的故事。而现在,我们遇到了同样的机遇。

史蒂芬

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless

Native Android Applications Including

by sundy 2/6/2011 5:15:00 AM

Android phones will normally come with a suite ofpreinstalled applications including, but not limited to:

·        An e-mail client compatible with Gmail but notlimited to it  

·        An SMS management application 

·        A full PIM (personal information management)suite including a calendar and contacts list, both   

o  tightly integrated with Google’s onlineservices5

o  A fully featured mobile Google Maps applicationincluding StreetView, business fi  nder,driving   

o  directions, satellite view, and traffi  c conditions

o  A WebKit-based web browser  

o  An Instant Messaging Client  

o  A music player and picture viewer  

o  The Android Marketplace client for downloadingthied-party Android applications.   

o  The Amazon MP3 store client for purchasing DRMfree music.  

o  All the native applications are written in Javausing the Android SDK and are run on Dalvik.

o  The data stored and used by the nativeapplications — like contact details — are also available to third-

o  party applications. Similarly, your applicationscan handle events such as an incoming call or a new

o  SMS message.

o  The exact makeup of the applications availableon new Android phones is likely to vary based on the

o  hardware manufacturer and/or the phone carrieror distributor. This is especially true in the United

o  States, where carriers have signifi  cant infl uence on the software included on shipped devices.

Currently rated 1.5 by 18 people

  • Currently 1.5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless

Android source download for linux

by sundy 10/29/2010 4:15:00 AM
To build the Android source under Linux, you will need Ubuntu. The Android build is routinely tested on recent versions of Ubuntu (6.06 and later), but reports of successes or failures on other distributions are welcome. 

To set up your Linux development environment, make sure you have the following:
  • Git 1.5.4 or newer. Instructions for how to install and configure Git are below. 
  • Python 2.4, which you can download from python.org 
  • JDK 5.0, update 12 or higher, which you can download from java.sun.com 
  • The following packages: flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential. To make sure you have all these packages, run
       $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential
  • You might also want Valgrind, a tool that will help you find memory leaks, stack corruption, array bounds overflows, etc. To install it, run
       $ sudo apt-get install valgrind

Mac OS

Requirements:

  • To build the Android files in a Mac OS environment, you need an Intel/x86 machine. The Android build system and tools do not support the obsolete PowerPC architecture.
  • We recommend that you build Android on a partition that has been formatted with the "Case-sensitive Journaled HFS+" file system:
    • A case-sensitive file system is required because the sources contain files that differ only in case.
    • Journaled systems are more robust. (This is optional, but recommended.)
    • HFS+ is required to successfully build Mac OS applications such as the Android Emulator for OS X.
     
To set up your Mac OS development environment, follow these steps:
  1. Install the XCode version 2.4 or later from http://developer.apple.com . We recommend version 3.0 or newer.
  2. Install MacPorts. To do this:
    1. Download the tar file from http://www.macports.org/  and untar the files.
    2. Run the following: 
        $ ./configure
        
      make
        
      sudo make install
        
      sudo port selfupdate
    3. View your path:
        echo $PATH
      Make sure that /opt/local/bin is in your path before /usr/bin. If not, edit $HOME/.bash_profileand add the line "export PATH=/opt/local/bin:$PATH" (or the equivalent for other shells) after any other PATH-related lines. To verify that your path is now correct, open a new terminal and run echo $PATH again.
  3. Upgrade GNU make to 3.81 or later by running
      $ sudo port install gmake
      $ sudo ln -s gmake /opt/local/bin/make
  4. Install libsdl by running
      $ sudo port install libsdl
  5. Set an appropriate per-process file descriptor limit. To do this, add the following lines to your .bash_profile file: 
       # set the number of open files to be 1024
       ulimit -S -n 1024
  6. Install these optional packages, if you want to:
       $ sudo port install xemacs +sumo
       $ sudo port install gimp
Note: If you get errors from port install, prefix your commands with POSIXLY_CORRECT=1, for example:
  $ POSIXLY_CORRECT=1 sudo port install package-name


Installing Git

To work with the Android source files, you will need to use the Git open-source version control system and several complementary tools: 

  • Repo is a wrapper script that makes it easier to work with Git in the context of Android.
  • Gerrit is a visual interface for tracking, commenting on, and approving changes to the code.
Repo and Gerrit currently require Git 1.5.4 or newer. To check which version of Git (if any) is in your path, run  git --version

To install Git and set up your files for the installation of Repo, follow these steps:

  1. Make sure you have a ~/bin directory in your home directory, and check to be sure that this bin directory is in your path:
      $ cd ~
      $ mkdir bin
      $ echo $PATH
  2. Install Git and the GNU Privacy Guard: 
     - For Linux, run 
    sudo apt-get install git-core gnupg
     - For Mac OS:
    1. Run sudo port install gnupg
    2. Download the latest Git from http://git.or.cz/ 
    3. Untar the file, then cd into the Git directory. 
    4. Run make install
For more about installing and configuring Git, see the Git Community Book 

Installing Repo

To install, initialize, and configure Repo, follow these steps:
  1. Download the repo script and make sure it is executable:
    $ curl http://android.kernel.org/repo >~/bin/repo
    $ chmod a+x ~/bin/repo
  2. Create an empty directory to hold your working files: 
    $ mkdir mydroid
    $ cd mydroid
  3. Run repo init to bring down the latest version of Repo with all its most recent bug fixes. You must specify a URL for the manifest:
    $ repo init -u git://android.kernel.org/platform/manifest.git
  4. When prompted, configure Repo with your real name and email address. If you plan to submit code, use an email address that is associated with a Google account. 

 What is a manifest file?

The Android source files are divided among a number of different repositories. A manifest file contains a mapping of where the files from these repositories will be placed within your working directory when you synchronize your files. 


A successful initialization will end with a message such as
   repo initialized in /mydroid


Your client directory should now contain a .repo directory where files such as the manifest will be kept. 


What will my name and email be used for?  

To use the Gerrit code-review tool, 
you will need an email address that is connected with a registered Google account (which does not have to be a Gmail address). Make sure this is a live address at which you can receive messages. The real name that you provide here will show up in attributions for your code submissions.

Getting the files

To pull down files to your working directory from the repositories as specified in the default manifest, run 

   $ repo sync  

For more about repo sync and other Repo commands, see Using Repo.

The Android source files will be located in your working directory under their project names. 


Building the code

To build the files, run make from within your working directory:
    $ cd ~/mydroid  
    $ make

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless

实现Android系统的HAL(硬件适配层)

by sundy 10/14/2010 9:20:51 AM

Android系统作为一个开放的平台,为了适配千变万化的硬件平台,定义了一个硬件适配层(HAL)框架。如果你实现自己硬件平台的硬件适配层,那么Android系统将会调用你的硬件适配层来为系统加速。如果你未定义自己平台硬件适配层(HAL),那么Android系统将调用软实现,这样的话不会发挥出你的硬件平台的最大效能。本文简略介绍一下Android系统的HAL层,进而介绍怎样实现HAL层,以起到抛砖引玉的作用。

More...

Currently rated 2.0 by 13 people

  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless | C/C++/Embedded

话说Activity的四种加载模式

by sundy 9/29/2010 10:23:24 AM

转自:http://marshal.easymorse.com/archives/2950

在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。

这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。

加载模式分类及在哪里配置

Activity有四种加载模式:

  • standard
  • singleTop
  • singleTask
  • singleInstance

设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性:

<activity android:name="ActB" android:launchMode="singleTask"></activity>

也可以在Eclipse ADT中图形界面中编辑:

image

区分Activity的加载模式,通过示例一目了然。这里编写了一个Activity A(ActA)和Activity B(ActB)循环跳转的例子。对加载模式修改和代码做稍微改动,就可以说明四种模式的区别。

More...

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless

Android通过共享用户ID来实现多Activity进程共享

by sundy 9/29/2010 6:04:41 AM

有朋友问到如何在Android不同应用程序之间共享内存,遂引发了这个文章,转成都一位程序员,实验做的很好

1.同一Apk中的同一包中的Activity调用时进程状况验证
[1]创建Project:
   project name: FirstProject
   package:com.demo
   默认Activity:MainActivity
[2]添加一个新的Activity:
   name:SecondActivity
[3]修改布局。在MainActivity布局中添加一个Button,当点击此Button时启动SecondActivity。在SecondActivity的布局中放置一个Textview,以证明SecondActivity已启动。
[4]运行程序,查看此Ap进程情况:
   USER:app_36  PID:8360  NAME:com.demo
   点击按钮,启动SecondActivity,再次查看进程情况:
   USER:app_36  PID:8360  NAME:com.demo
进程列表没有变化,两个Activity运行在同一进程中。
2.同一Apk中的不同包的Activity调用时进程状况验证
[1]将SecondActivity挪到包com.demo.second中去,相应修改AndroidManifest.xml中的name为:com.demo.second.SecondActivity
[2]运行程序,查看此时进程情况:
   USER:app_36  PID:10593  NAME:com.demo
[3]点击按钮启动SecondActivity,查看此时进程情况:
   USER:app_36  PID:10593  NAME:com.demo
进程列表没有变化,两个Activity运行在同一进程中。即进程name只受AndroidManifest.xml中manifset结点的package属性影响。
3.同一Apk中Activity process属性修改后进程状况验证
[1]为SecondActivity添加process属性,其值为":abc",也可以随便是其他的":"开头的字符串,常见的是":remote":

Xml代码

  1. <activity android:name="com.demo.second.SecondActivity" android:process=":abc"></activity>

[2]运行程序,查看进程情况:
   USER:app_36  PID:12137  NAME:com.demo
[3]点击按钮,启动SecondActivity,查看进程情况:
   USER:app_36  PID:12137  NAME:com.demo
   USER:app_36  PID:12303  NAME:com.demo:abc
进程表多了一项。两个Activity各自有一个进程,SecondActivity的进程名称为 包名+后缀
4.不同Apk中不同包名的Activity进程状况验证
[1]运行FirstProject:
   USER:app_36  PID:12137  NAME:com.demo
[2]创建SecondProject:
   project name: SecondProject
   package:com.demo2
   默认Activity:MainActivity
[3]运行SecondProject:
   USER:app_37  PID:14191  NAME:com.demo2
进程表多了一项。两个Activity各自有一个进程,同时其进程用户名、包名也不同,互不影响。
5.不同Apk,签名相同、包名相同的Activity进程状况验证
[1]修改SecondProject的包也为com.demo,相应要修改AndroidManifest.xml内容。
[2]运行SecondProject,查看进程情况:
   USER:app_36  PID:14944  NAME:com.demo
进程表只有一项,但是实际上FirstProject此时已经被覆盖了,系统中只存在SecondProject了,因为模拟器调试时apk使用的签名key都是一样的,系统看到key一样,包名一样认为这个包就是FirstProject所以覆盖掉了。
可以通过DDMS复制/data/system/packages.xml查看一下内容。

Xml代码

  1. <package name="com.demo" codePath="/data/app/com.demo.apk" system="false" ts="1279955425000" version="1" userId="10036">

   这个文件里面,package name都是唯一的,同时可以看到用户名是通过userId来决定的。
6.不同Apk,签名不相同,包名相同的Activity进程状况验证
[1]在Eclipse的Package Explorer导航树中选中FirstProject,点右键。
[2]Android tools-->Export Signed Application Package,按照向导创建一个用指定key签名的apk包。
[3]同样导出Second Project。
[4]切换窗口到模拟器,按Home键-->按Menu键-->设置-->应用程序-->管理应用程序-->SecondProject-->卸载。这是为了用命令行安装做准备。
[5]启动一个命令行窗口,执行adb install firstproject.apk,会提示成功安装。
[6]执行adb install secondproject.apk,提示安装失败。
默认的Apk其安装时会分配新的UserId,即此时FirstProject以及SecondProject的UserId可以认为是不同的。
   包名不同,则签名key是否相同无所谓,两个apk都可以安装。【第4个实验】
   包名相同时,签名key相同则会覆盖【第5个实验】;签名不同则第二个apk安装会失败。【第6个实验】

7.不同Apk,Share User Id相同,包名不同时进程情况分析
[1]修改firstproject、secondproject的AndroidManifest.xml的manifset结点,增加属性

Xml代码

  1. android:sharedUserId="com.demouser"

[2]修改secondproject的包为com.demo2,不然其会覆盖firsetproject。
[3]运行firsetproject、secondproject,查看进程列表:
   USER:app_35  PID:19993  NAME:com.demo2
   USER:app_35  PID:20045  NAME:com.demo2
   仍然存在两个进程。进程的用户名一样,说明shareUserId确实有效了,但是进程名字一个不一样。
   再次导出/data/system/packages.xml,查看其内容:

Xml代码

  1. <package name="com.demo" codePath="/data/app/com.demo.apk" system="false" ts="1279957484000" version="1" sharedUserId="10035">

Xml代码

  1. <package name="com.demo2" codePath="/data/app/com.demo2.apk" system="false" ts="1279957473000" version="1" sharedUserId="10035">

   可以看到两个项目的UserId都是10035,确实是一样的。
8.不同Apk,Share User Id相同,包名不同、指定Activity的process属性进程情况分析
[1]修改SecondProject的MainActivity的process属性,指定绑定到进程名为com.demo的进程上:

Xml代码

  1. <activity android:name=".MainActivity"
  2. android:label="@string/app_name" android:process="com.demo">

[2]运行firstProject、SecondProject,查看进程情况:
    USER:app_35  PID:21387  NAME:com.demo
    两个Activity运行于同一个进程。
9.不同Apk,Share User Id相同,包名不同、签名key不同
经实验,安装第二个apk时会提示INSTALL_FAILED_UPDATE_INCOMPATIBLE错误,安装失败。

总结:
UserId不同时:
      包名不同:未设定process属性时,各自的Activity在各自的进程。
                即使process指定了包名,也不会和另一个用户的同名包共享进程。
      包名相同:
                签名相同:覆盖旧的同包名apk。
                签名不同:新的apk会安装失败。【签名key一般都是不同的】
UserId相同时:
      包名不同:未设定process属性时,各自的Activity在各自的进程。
                process属性指定,则可以共享进程。
      包名相同:
                签名相同:覆盖旧的同包名apk。
                签名不同:新的apk会安装失败。【签名key一般都是不同的】

Currently rated 3.0 by 2 people

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless

Andrid开发中为何Widget组件的id名称会用@+id/Button1这样的字符

by sundy 9/10/2010 6:05:28 PM

发现网上无人解答这个问题,也没有地方说明为何,包括Google Developer官网 。

QQ截图未命名

其实道理比较简单 , 这是因为用“+”是要让Layout xml 监听器识别需要向R类中添加资源id 。如果R类已经有相关id了,就不用+了 , 直接用@id或者@:id即可 。

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Mobile & Wireless

讲讲在Android模拟器上安装apk软件 - ADB的应用

by sundy 9/9/2010 9:43:51 AM

我们先来认识一下ADB:

提到adb.exe,无论取得Root权限或者刷机的时候我们都通过adb直接操作管理Android手机,但是可能大多数对于adb仅仅局限于刷机的一个步骤,并没有对它有着深入和全面的了解。现在笔者就为各位Android手机迷们详解一下adb的功能和用法。

Android软件 APK安装方法很简单,下面我就和大家分享 一下如何安装APK文件 到Android模拟器的图文教程 。
1) 首先启动Android模拟器,在Android SDK的Tools文件夹中找到Emulator文件,双击emulator.exe即可启动模拟器

20081222_202603_836

2) 复制需要安装的APK文件到Android SDK的Tools文件夹中(APK和emulator.exe同文件夹),这里我们演示安装的为OperaMini.apk文件

20081222_202605_377

3) 执行 Windows 开始菜单 => 所有程序 => 附件 => 命令提示符 或通过 Win+R 组合键调出 运行 对话框输入cmd 单击确定即可。
4) (由于我们的Android SDK安装路径为d盘,所以需要定位模拟器tools目录) 在cmd命令提示符中输入d: 回车,如图2第一行,接下来输入cd android-sdk-windows-1.0_r2后回车,由于我在解压时采用的是解压到android-sdk-windows-1.0_r2中, 因此需要再一次输入cd android-sdk-windows-1.0_r2(如果在解压时采用解压到当前文件夹,则这步可以省略),接下来输入cd tools进入模拟器文件夹,最后执行adb install android123.apk命令即可执行安装,

20081222_202606_171

5) 最后在Android模拟器点击下图中的按键,在展开的界面中就可以看到我们安装好的OperaMini.apk程序

 

20081222_202609_228

到此我们就完成了对 OperaMini.apk程序的安装。
下面我让我们来体验一下在Gphone模拟器上运行OperaMini的效果吧!
启动界面:在这里较之在手机 要慢上一些。

对于OperaMini的使用,大家都很熟悉了,我就不多啰嗦了。

对于开发人员,善用ADB,好处多多 。下面列出常用命令

【操作命令】

1. 查看设备

adb devices

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

2.安装软件

adb install

adb install <apk文件路径> :这个命令将指定的apk文件安装到设备上

3. 卸载软件

adb uninstall <软件名>

adb uninstall -k <软件名>

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

4. 进入设备或模拟器的shell:

adb shell

通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux的命令,另外如果只想执行一条shell命令,可以采用以下的方式:

adb shell [command]

如:adb shell dmesg会打印出内核的调试信息。

5. 发布端口

可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:

adb forward tcp:5555 tcp:8000

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

adb push <本地路径> <远程路径>

用push命令可以把本机电脑上的文件或者文件夹复制到设备(手机)

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

adb pull <远程路径> <本地路径>

用pull命令可以把设备(手机)上的文件或者文件夹复制到本机电脑

8、查看bug报告

adb bugreport

9、记录无线通讯日志

一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

adb shell

logcat -b radio

10、获取设备的ID和序列号

adb get-product

adb get-serialno

adb shell

sqlite3

Currently rated 2.2 by 37 people

  • Currently 2.243243/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C/C++/Embedded | Mobile & Wireless

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.
© Copyright 2007 - 2008 Design by Sundy Linghua-Zhang 蜀ICP备08108648号

About the author

Name of author Author name
Something about me and what I do.

E-mail me Send mail

Calendar

<<  May 2012  >>
MoTuWeThFrSaSu
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar

Recent comments

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in