----------------------------------------
apk 学习入门。
----------------------------------------
1. 生成一个apk 文件
甲。 下载jdk 建立java 环境
乙。 下载elcipse 建立开发环境
丙。 下载android adt 插件ADTPlugin, 安装到eclipse 中
help->install software->from local(给定目录)-next ....
完成时会在plugin, feature 目录多出android 的一些东西
丁。 下载android-sdk , 配置eclipse
windows->preference->android->sdk location. 点ok 后会弹出sdk manager 窗口
要你选择要下载和更新的东西
漫长等待, 所以网络环境要好, 有1G 文件要下载, 下载的文件在sdk 目录中(copy 一下也需要很长时间,太多的小文件)
注意, 你可能遇到 adt 与 sdk 版本不匹配问题! 要有耐心, 用相同的版本。
戊。 编译一个helloworld.apk
环境建起来了, 好像刘姥姥进了大观园, 摸索着走,最后找本书瞧瞧。 不行还是用自己熟悉的工具。 (source insight 等...)
建立一个BlankActivity 框架, java 代码不多, 很多xml 文件。
setContentView(R.layout.activity_main);
activity_main=0x7f030000
传递的参数是一个ID。 R.java 类中定义了很多这样的ID, 这个ID 到底是什么意思呢 ?
Activity_main.xml 中,<TextView> 标签 定义: android:text="@string/hello_world"
在R.java 中 定义 hello_world=0x7f050002
在string.xml 中, 有一个string 叫hello_world, 它的值 我把它改成"hello world 2!"
老外就喜欢把问题搞复杂, 搞得分很多层。
这句话的意思具体的解释是:
setContentView(int layoutResID), 传入一个layout ID, 这个layout, 是由Activity_main.xml 定义的
这个ID 为什么可以和由Activity_main.xml 对应上? 这是由 R.java 决定的
问题:android.jar has no source attachment,
解答:点击attatch -> external folders-> android source folder 即可。
1. java 打印字符串: System.out.println("hello");
2. java 打印整数值。int i=5; System.out.println(i);
3. System.out.println("k is "+k); // java 见 + 号, 自动连接成字符串
问题: system.out 打印到哪了?
解答: System.out 用adb logcat 来看 , 太惊喜和意外了。这样我就熟悉了。
看来, java 的 System.out, 最后调用了anddroid 的 __android_log_write 函数
如果你想在一个单独的窗口看到system.out.print()的输出的话,
Window-->show view-->other-->找到Android,选择Logcat。
可以在logcat界面点那个绿色的“+”号,在Filter name 和 By log tag里面均填入System.out,
问题:
ActivityManager: Warning: Activity not started, its current task has been brought to the front
解答: 警告:该程序还未开始运行,当前任务正在进行中
意思是说,这个进程正在运行,你不能再下载运行这个程序。
解决办法:
快捷办法: 用adb shell, kill 或pkill 掉该进程。 则可以重新下载调试了。
苯办法: 重启avd(速度太慢了)