Journey of Android for Mac
下了决心要学Java,几个同事都建议我去学Android,自己觉得能做点应用放手机上玩玩也比较有动力。
沈逸有篇文章里面写道:
搞C的看不起搞C++的. 搞C++的看不起搞java的. 搞java的看不起搞.net的. 搞.net的看不起搞js的. 搞js的看不起搞html的. 搞html的看不起美工...
虽然我用Mac可能做iphone开发比较方便点,而最快的上手方式就是先用Object-C
但是业界普遍认为C++比java要高级,C#.net不如java高级,Object-C还不如C#
现在的公司本来以为可能C++程序员比较多,进来才发现我们这个楼层java程序员最多。
学ios连个问的人都没有,公司的业务也还没做到这块来。
问java的问题,就掉师傅堆里了。
前公司有个学会了OC的同事,出去找工作就遇到很多公司都希望找用C++的高手,而不需要OC的半桶水。
自从我的iphone5被偷以后,就不打算再用iphone了,就今天睡觉都做梦莫名其妙又丢了一部iphone,还是我们家那口子用的4s,这个有阴影的说。
先去oracle装新的jdk,Mac本身自带了旧的6,我用oracle在线监测没有通过,所以就装了新的7
虽然air的空间不大,还是决定正儿八经装个eclipse for Mac
毕竟我们公司的html5 studio也是模仿这个ide的,熟悉熟悉文件结构什么的都有好处。
选了stable 的 4.5M1:
http://download.eclipse.org/eclipse/downloads/
下载后,在终端中用md5 指令后跟文件路径来验证md5值
Last login: Fri Aug 29 21:45:45 on console
PsAir:~ narumi$ md5 /.../eclipse-SDK-4.5M1-macosx-cocoa-x86_64.tar.gz
//回车
MD5 (/Users/narumi/Downloads/eclipse-SDK-4.5M1-macosx-cocoa-x86_64.tar.gz) = 3427d9452e5496104358b615665a9340
解压后拖到Applications即可。
环境变量的配置,根据eclipse的官方文档提到了jdk的path:
-vm value: Mac OS X Example On a Mac OS X system, you can find eclipse.ini by right-clicking (or Ctrl+click) on the Eclipse executable in Finder, choose Show Package Contents, and then locate eclipse.ini in the MacOS folder under Contents. To specify Java for OS X: -vm
/System/Library/Frameworks/JavaVM.framework/Versions/1.6./Home/bin/java
For versions of Mac OS X 10.7+ the location has changed to /Library/Java/JavaVirtualMachines/<''jdk_name_ver''>/Contents/Home/...
To be safer, determine the location for the JDK you intend to use via the utility /usr/libexec/java_home and put this value with .../bin/java appended into the Eclipse.ini file.
这里要却别一下虚拟机的路径和插件的路径:
System Preferences里面的Java Control Panel/View and manage Java Runtime versions and settings for Java applications and applets./View 显然如上文所述我的OSX 10.9.3 的path已经改为:
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
如果要在终端中进入这个路径,空格用\ 转义,即反斜杠加空格。但是带空格的路径还是不能作为虚拟机路径的,幸好这不是虚拟机路径。
这个是applet plugin的路径,不是虚拟机的路径。
1.7.0_67虚拟机的路径在
/library/java/javavirtualmachines
1.6.0虚拟机的路径在
/system/library/java/javavirtualmachines
1.6.0是系统自带的,就不把它写进 ~/.profile 里面去了。
不过mac推荐设定的路径是
/usr/libexec/java_home
这是一个可执行文件,它会自动选择jre的版本作为$JAVA_HOME
写法是
export
JAVA_HOME = "/usr/libexec/java_home"
这里用vim的几个简单指令在终端里操作:
mac下设置PATH
首先查看PATH 命令:$PATH 如何设置PATH 命令:echo "export PATH=xxxxxx:$PATH" >> ~/.bash_profile 解释:把"export PATH=xxxxxx:$PATH"输出打印到~/.bash_profile中去。 Unix知识补充:~/.bash_profile介绍 mac和linux终端一般用bash来进行解析。当bash在读完了整体环境变量的/etc/profile并借此调用其他配置文件后,接下来则是会读取用户自定义的个人配置文件。bash读取的文件总共有三种: ~/.bash_profile ~/.bash_login ~/.profile 其实bash再启动是只读上面文件的一个,而读取的顺序则是依照上面的顺序。也就是说读到bash_profile就不读后面的了,如果bash_profile不存在,后面的才能有机会。 1./etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。 2./etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
我在这里加入mysqlstart、mysql和mysqladmin命令的别名,保证每一个用户都可以使用这3个命令。 3.~/.bash_profile (一般在这个文件中添加用户级环境变量)
(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)
若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
我在这里:设置终端配色、
我在这里:设置命令别名alias ll='ls -la'
我在这里:设置环境变量:export PATH=/opt/local/bin:/opt/local/sbin:$PATH
cat 用于显示文件内容,改之前查看,改之后检查。
vi ~/.profile 或者~可以用$HOME也是一样的
进入vi后,用 i 在当前位置插入
:w 保存
:q 退出vi
这样首先jdk的环境变量配置好,eclipse也装好了。
然后是安卓的SDK,苦逼的不墙都下不到谷歌家的东西。。。http://developer.android.com/sdk/index.html#download
只能找国内的各大软件站了。
搞到SDK之后,运行 tools/Android,在弹出的Android SDK Manager对话框中选择左边的Installed packages,右边就会列出当前已经安装了的SDK,点击下面的“Update All”然后一步一步进行安装,刚开始很慢,其实还是没被墙的,慢慢会来速度。
然后安装ADT。打开eclipse,可以在线安装:
点击菜单中的 Help/Install New Software/在弹出的对话框中有个“Work with”,在右边的输入栏中输入:
然后下面就会pending出来一个“Developer Tools”,勾选上,然后一路的Next下去就可以安装完成。
在线不成,上ADT离线包 http://dl.google.com/android/ADT-23.0.2.zip 这个直连地址意外的可以下。
离线安装法的官方文档:(其中最新的版本为ADT-23.0.3,不过鉴于我的SDKS 23.0.2,就没下最新的)
Installing the Eclipse Plugin Android offers a custom plugin for the Eclipse IDE, called Android Development Tools (ADT). This plugin provides a powerful, integrated environment in which to develop Android apps. It extends the capabilities of Eclipse to let you quickly set up new Android projects, build an app UI, debug your app, and export signed (or unsigned) app packages (APKs) for distribution. Note: You should install the ADT plugin only if you already have an Eclipse installation that you want to continue using. If you do not have Eclipse installed, you should instead install the complete Android SDK, which includes the latest IDE for Android developers. Your existing Eclipse installation must meet these requirements: Eclipse 3.7. (Indigo) or greater
Note: Eclipse 3.6 (Helios) is no longer supported with the latest version of ADT.
Eclipse JDT plugin (included in most Eclipse IDE packages)
JDK (JRE alone is not sufficient)
Not compatible with GNU Compiler for Java (gcj)
Download the ADT Plugin
To add the ADT plugin to Eclipse: Start Eclipse, then select Help > Install New Software.
Click Add, in the top-right corner.
In the Add Repository dialog that appears, enter "ADT Plugin" for the Name and the following URL for the Location:
https://dl-ssl.google.com/android/eclipse/
Note: The Android Developer Tools update site requires a secure connection. Make sure the update site URL you enter starts with HTTPS.
Click OK.
In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
In the next window, you'll see a list of the tools to be downloaded. Click Next.
Read and accept the license agreements, then click Finish.
If you get a security warning saying that the authenticity or validity of the software can't be established, click OK.
When the installation completes, restart Eclipse.
Configure the ADT Plugin
Once Eclipse restarts, you must specify the location of your Android SDK directory: In the "Welcome to Android Development" window that appears, select Use existing SDKs.
Browse and select the location of the Android SDK directory you recently downloaded and unpacked.
Click Next.
Your Eclipse IDE is now set up to develop Android apps, but you need to add the latest SDK platform tools and an Android platform to your environment. To get these packages for your SDK, continue to Adding Platforms and Packages. Troubleshooting ADT Installation
If you are having trouble downloading the ADT plugin after following the steps above and you are behind a firewall (such as a corporate firewall), make sure that you have properly configured your proxy settings in Eclipse. In Eclipse, you can configure proxy information from the main Eclipse menu in Window (on Mac OS X, Eclipse) > Preferences > General > Network Connections. If you are still unable to use Eclipse to download the ADT plugin as a remote update site, you can download the ADT zip file to your local machine and manually install it: Download the ADT Plugin zip file (do not unpack it):
Package Size MD5 Checksum
ADT-23.0..zip bytes ab2f5e2fbbdddeeb7dfd02cd4046538a
Start Eclipse, then select Help > Install New Software.
Click Add, in the top-right corner.
In the Add Repository dialog, click Archive.
Select the downloaded ADT-23.0..zip file and click OK.
Enter "ADT Plugin" for the name and click OK.
In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
In the next window, you'll see a list of the tools to be downloaded. Click Next.
Read and accept the license agreements, then click Finish.
If you get a security warning saying that the authenticity or validity of the software can't be established, click OK.
When the installation completes, restart Eclipse.
To update your plugin once you've installed using the zip file, you will have to follow these steps again instead of the default update instructions. Other install errors Note that there are features of ADT that require some optional Eclipse packages (for example, WST). If you encounter an error when installing ADT, your Eclipse installion might not include these packages. For information about how to quickly add the necessary packages to your Eclipse installation, see the troubleshooting topic ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui". For Linux users If you encounter this error when installing the ADT Plugin for Eclipse: An error occurred during provisioning.
Cannot connect to keystore.
JKS
...then your development machine lacks a suitable Java VM. Installing Sun Java will resolve this issue and you can then reinstall the ADT Plugin.
上文好不容易打开的,为了避免下次需要墙,抄下来果然没错,转眼又进不去了。
就是在刚才在线安装的步骤中,不要填url了,点archive,选中下载的zip文件,就能成功看到“Developer Tools”,勾选上,然后一路Next同上,刚开始也很慢,要有信心。。
装好ADT后在菜单栏Eclipse/Preferences/Android/在SDK Loaction中填入刚下载的SDK的路径。
在 ~/.bashrc (我选择了这一级的path配置文件)里面添加Android SDK下的 tools 目录路径和Android SDK下的 platform-tools 目录路径<使用pwd可以直接显示路径全称>
在终端使用source命令:source .bashrc 不报错则成功。
测试adb的环境变量有没有配置好:终端敲 adb 回车
测试java虚拟机的path有没有设置成功,终端敲 android 回车
adb
Android Debug Bridge version 1.0. -a - directs adb to listen on all interfaces for a connection
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s <specific device> - directs command to the device or emulator with the given
serial number or qualifier. Overrides ANDROID_SERIAL
environment variable.
-p <product name or path> - simple product name like 'sooner', or
a relative/absolute path to a product
out directory like 'out/target/product/sooner'.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
-H - Name of adb server host (default: localhost)
-P - Port of adb server (default: )
devices [-l] - list all connected devices
('-l' will also list device qualifiers)
connect <host>[:<port>] - connect to a device via TCP/IP
Port is used by default if no port number is specified.
disconnect [<host>[:<port>]] - disconnect from a TCP/IP device.
Port is used by default if no port number is specified.
Using this command with no additional arguments
will disconnect from all connected TCP/IP devices. device commands:
adb push [-p] <local> <remote>
- copy file/dir to device
('-p' to display the transfer progress)
adb pull [-p] [-a] <remote> [<local>]
- copy file/dir from device
('-p' to display the transfer progress)
('-a' means copy timestamp and mode)
adb sync [ <directory> ] - copy host->device only if changed
(-l means list but don't copy)
(see 'adb help all')
adb shell - run remote shell interactively
adb shell <command> - run remote shell command
adb emu <command> - run emulator console command
adb logcat [ <filter-spec> ] - View device log
adb forward --list - list all forward socket connections.
the format is a list of lines with the following format:
<serial> " " <local> " " <remote> "\n"
adb forward <local> <remote> - forward socket connections
forward specs are one of:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
adb forward --no-rebind <local> <remote>
- same as 'adb forward <local> <remote>' but fails
if <local> is already forwarded
adb forward --remove <local> - remove a specific forward socket connection
adb forward --remove-all - remove all forward socket connections
adb jdwp - list PIDs of processes hosting a JDWP transport
adb install [-l] [-r] [-d] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file>
- push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
('-d' means allow version code downgrade)
('-s' means install on SD card instead of internal storage)
('--algo', '--key', and '--iv' mean the file is encrypted already)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
adb bugreport - return all information from the device
that should be included in a bug report. adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]
- write an archive of the device's data to <file>.
If no -f option is supplied then the data is written
to "backup.ab" in the current directory.
(-apk|-noapk enable/disable backup of the .apks themselves
in the archive; the default is noapk.)
(-obb|-noobb enable/disable backup of any installed apk expansion
(aka .obb) files associated with each application; the default
is noobb.)
(-shared|-noshared enable/disable backup of the device's
shared storage / SD card contents; the default is noshared.)
(-all means to back up all installed applications)
(-system|-nosystem toggles whether -all automatically includes
system applications; the default is to include system apps)
(<packages...> is the list of applications to be backed up. If
the -all or -shared flags are passed, then the package
list is optional. Applications explicitly given on the
command line will be included even if -nosystem would
ordinarily cause them to be omitted.) adb restore <file> - restore device contents from the <file> backup archive adb help - show this help message
adb version - show version num scripting:
adb wait-for-device - block until device is online
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
adb get-state - prints: offline | bootloader | device
adb get-serialno - prints: <serial-number>
adb get-devpath - prints: <device-path>
adb status-window - continuously print device status for a specified device
adb remount - remounts the /system partition on the device read-write
adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
adb reboot-bootloader - reboots the device into the bootloader
adb root - restarts the adbd daemon with root permissions
adb usb - restarts the adbd daemon listening on USB
adb tcpip <port> - restarts the adbd daemon listening on TCP on the specified port
networking:
adb ppp <tty> [parameters] - Run PPP over USB.
Note: you should not automatically start a PPP connection.
<tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns adb sync notes: adb sync [ <directory> ]
<localdir> can be interpreted in several ways: - If <directory> is not specified, both /system and /data partitions will be updated. - If it is "system" or "data", only the corresponding partition
is updated. environmental variables:
ADB_TRACE - Print debug information. A comma separated list of the following values
or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given.
ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.
adb
这样就ok了!
如果用eclipse创建新的Android项目还出现compile with 后面没有选项,就是API没有装,我就因为网速问题一直没装上,卡在这里很久。。
phython 总是那么环保方便。
星期一组里安卓哥给了我一个软件,貌似他没在用eclipse做Android
https://dl.google.com/android/studio/install/0.8.6/android-studio-bundle-135.1339820-mac.dmg
原因就是eclipse配环境比较麻烦。
比如jre的版本,eclipse每次创建新的java project的时候,可以配置使用的jre,记得在new的时候找到蓝色的config jre 链接。
如果project所用版本的jre没有安装,project不能run通过。
创建android新项目的时候javalang出错又是为什么呢,
查了很久,看了stackoverflow,有很多人遇到过这个问题,也有很多人解决了这个问题。
我的一波三折:
1.删除出错的eclipse
2.解压新的eclipse
3.启动eclipse
4.选择一个新的workspace,如果有旧的,并且有可能是不同版本的eclipse的workspace,要么不要选,要么删掉重新让新的eclipse创建一个。
5.自动检查更新说没有更新以后,在Help里面点 install new software,然后从可用站点里面复制出
https://dl-ssl.google.com/android/eclipse/
放到地址栏,然后点Add,会搜索出来一个developer tools,
安装这个android的developer tools
6.设置adt路径,如果以前设置过,点安卓图标就自动启动,安装其中检测到的更新
7.这时候创建有activity的Android Application project仍然会出错,
于是我创建了一个没有activity的Application project(其实之前我也试过单独附加activity,根本没有finish可以点)
8.new 。。other。。activity,成功附加到那个没有activity的project上
9.再重新创建一个有activity的project,奇迹发生了!
后由于time machine备份的不完整导致我遗失了一部分adt文件,
装了以上更新还是不行!
为了避免占用过大的硬盘空间只装最高版本的sdk,装了21全套,20和19都删掉,
又先创建无activity的project再附加上去,
终于可以正常创建安卓项目了。
好多次我都想放弃去装google官方的Android studio,但考虑到还要学java语言基础,考虑到教程,考虑到公司的ide和eclipse界面相仿才坚持下来了,庆幸坚持下来了。
Journey of Android for Mac的更多相关文章
- android获取Mac地址和IP地址
获取Mac地址实际项目中测试了如下几种方法:(1)设备开通Wifi连接,获取到网卡的MAC地址(但是不开通wifi,这种方法获取不到Mac地址,这种方法也是网络上使用的最多的方法) //根据Wifi信 ...
- (转载) Android开发mac /dev/kvm is not found
Android开发mac /dev/kvm is not found 标签: KVMAndroid开发KVM is not found芒果Android芒果iOS 2016-10-29 16:31 2 ...
- IPv6升级测试指南(Android/iOS/Mac)
目录 我们升级到IPv6的原因 测试的时候的注意要点 Android/IOS/MAC测试总结 Android测试IPv6的方法 IOS端测试IPv6的方法 MAC浏览器端测试IPv6的方法 升级IPV ...
- Android开发-mac上使用三星S3做真机调试
之前一直未使用真机进行Android开发,为准备明天的培训,拿出淘汰下来的s3准备环境,竟然发现无法连接mac,度娘一番找到答案,如下:mac 系统开发android,真机调试解决方案(无数的坑之后吐 ...
- 【Android】Mac安装EasyTether导致无法识别设备的问题
正文 想让手机走PC网络,然后抓包,于是搜索一番后安装了一个叫EasyTether的软件.还没来得及测试,就忙着写代码去了,重启MAC以后就发现连不上手机了,一开始并没有怀疑是 EasyTether的 ...
- Android studio mac版本快捷键
Mac下快捷键的符号所对应的按键 ⌥—> option|alt ⇧—>shift ⌃—>control ⌘—>command ⎋—>esc 注: 与F6/F7/F12等F ...
- weex 启动 android 模拟器(mac环境)
一.android studio和android sdk下载 1.android studio下载并安装https://developer.android.com/studio/index.html ...
- 【Android应用开发】Android Studio - MAC 版 - 快捷键详解
博客地址 : http://blog.csdn.net/shulianghan/article/details/47321177 作者 : 韩曙亮 要点总结 : -- 熟练使用快捷键 : 在任何编程环 ...
- android 取mac若干问题
问题一:Error:Error: The WIFI_SERVICE must be looked up on the Application context or memory will leak o ...
随机推荐
- C#-Mdi多文档窗体及其子窗体的排列 ---ShinePans
MdiLayout枚举成员及说明 Casecade s全部Mdi层叠在父窗体 TileHorizontal 水平平铺 TitleVertical 垂直平铺 Form1.cs (mdi) using S ...
- All About JAVA Maven的安装
一转眼几个月过去了..真是忙碌的几个月,最近在弄CAS 身份认证系统,新版本的CAS需要使用Maven进行构建,所以还要研究下Maven相关的资料.第一步就是下载安装Maven.根据官方网站的文档很容 ...
- 小猪的Android入门之路 Day 3 - part 3
小猪的Android入门之路 Day 3 - part 3 各种UI组件的学习 Part 3 本节引言: 在前面两个部分中我们对Android中一些比較经常使用的基本组件进行了一个了解, part 1 ...
- IOS-CGAffineTransformMake 矩阵变换 的运算原理
1.矩阵的基本知识: struct CGAffineTransform { CGFloat a, b, c, d; CGFloat tx, ty; }; CGAffineTransform C ...
- [转] 函数编程之闭包漫谈(Closure)
在函数编程中经常用到闭包.闭包是什么,它是怎么产生的及用来解决什么问题呢.给出字面的定义 先:闭包是由函数及其相关的引用环境组合而成的实体(即:闭包=函数+引用环境).这个从字面上很难理解,特别对于一 ...
- Microsoft Windows Server 2008 R2 IIS7.5安装指南
一.IIS安装步骤: 1.安装Windows Server 2008 R2(见 附录一) 2.配置计算机名称和IP地址(见 附录一) 3.配置成员服务器(见 附录一) 4.点击任务栏上的“服务器管理器 ...
- PL/SQL 触发器简介
与公司同事交流了一下,得知触发器很少用.性能是一方面,主要是如果用太多触发器,可能到时你都不知道会有什么操作自动发生. 有些操作可以在程序中控制.例如在插入某个表时,写个log表的记录.这可以用触发器 ...
- oracle 导出导入数据
在window的运行中输出cmd,然后执行下面的一行代码, imp blmp/blmp@orcl full=y file=D:\blmp.dmp OK,问题解决.如果报找不到该blmp.dmp文件,就 ...
- 关于ios8斯坦福公开课第二课
在这个课程中,我们遇到了这样的代码 @IBAction func oprate(sender: UIButton) { let opration = sender.currentTitle! if u ...
- 使用charles proxy for Mac来抓取手机App的网络包
之前做Web项目的时候,经常会使用Fiddler(Windows下).Charles Proxy(Mac下)来抓包,调试一些东西:现在搞Android App开发,有时候也需要分析手机App的网络请求 ...