android程序代码
A. 如何查看Android源码
当我们在eclipse中开发android程序的时候,往往需要看源代码(可能是出于好奇,可能是读源码习惯),那么如何查看Android源代码呢?
比如下面这种情况
假设我们想参看Activity类的源代码,按着Ctrl键,左击它,现实的结果却看不到代码的,提示的信息便是“找不到Activity.class文件”。
此时点击下面的按钮,“Change Attached Source…”,选择android源代码所在位置,便弹出图三的对话框。
第一种是选择工作目录,即已经存在的android应用程序源代码。
第二种分两种方式
(1)选择External File…按钮,添加Jar格式文件或者zip格式文件路径;
(2)选择External Floder…按钮,添加文件夹所在路径。
下面问题就来了,源代码在哪里?不能凭空产生阿。
可以通过Android SDK Manager进行源代码下载;(推荐该种方法),如图四
勾选Source for Android SDK,进行下载即可。
此外也可通过其他途径下载,网上有很多共享的资源。
这里选择第二种方式的(2)方法,选择源码所在目录(即图四下载源代码目录所在路径),如图五
点击“OK”按钮,此时,Activity文件便能够查看源代码了,如图六。
这样就大功告成了!!!
B. 求一段Android代码,只求能够能够接受输入并输出即可
1.创建一个Android工程
2.在onCreate 方法中setContentView(R.layout.main);后面
加这段代码,当然要记得import控件类.
final EditText et = new EditText(this);//输入框
Button bt = new Button(this);//确认按钮
final TextView tv = new TextView(this);//显示输入内容的TextView
LinearLayout ll = (LinearLayout) findViewById(R.id.main);//main.xml文件中的ViewGroup控件,可以添加其它控件,R.id.main需要在main.xml中定义:android:id="@+id/main"
//将创建的控件添加到Layout中,控件布局是宽度站满屏幕,高度默认
ll.addView(et, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
ll.addView(bt, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
ll.addView(tv, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
//让输入框获得光标
et.requestFocus();
//Button点击事件处理
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//将输入框内容显示在TextView中
tv.setText(et.getText().toString());
}
});
C. android程序报错代码如下
找不到类 你是不是在清单文件里忘记注册类了?
不是的话 你看看你src文件下的包名和gen下的包名一样么?
一般就是这种情况...
D. android系统源码有多少行
大概有10G的源代码,一Byte一个字符,也就是说有超过100亿个字符,每行按标准80字符来算的话,超过1亿行。开放的WinXP系统有2亿行,从数量级上来看的话,应该差不多。Android 4.4,是由Google公司制作和研发的代号为KitKat的手机操作系统,于北京时间2013年9月4日凌晨对外公布了该Android新版本的名称,为Android 4.4(代号 KitKat 奇巧)。据悉,该代号来自雀巢的KitKat巧克力。"Kit Kat"原本是雀巢公司的一款巧克力名称。谷歌表示,他们非常感谢雀巢授权使用该名称,但使用的时候会将中间的空格去掉。Android 4.4 KitKat针对RAM占用进行了优化,甚至可以在一些仅有512MB RAM的老款手机上流畅运行。它也进一步优化了系统在低配硬件上的运行效果, 支持内核同页合并 KSM,zRAM 交换,似乎是为了更好地在众多智能穿戴设备上运行。
是指sdk的源码,还是android操作系统的源码,不过都有10G左右,另外sdk的源码是用git管理的,一次下载后,用git check就可以切换到各个版本。Android SDK是用于开发Android上java应用程序的,另外发布Android NDK,可以添加一些C语言写的链接库,至于Linux代码,可以在Android源代码中找到(SDK程序中只有编译好的测试映像)。应用程序开发用不到Linux代码(搞嵌入式开发才会用到,而SDK不负责底层开发)。
E. 如何获取android源代码
当前的Android代码托管在两个方:https://github.com/android 和https://android.googlesource.com之前在 android.git.kernel.org上也有托管,不过现在重定向到了https://android.googlesource.com好在都支持git访问。
google提供的repo工具实际上是一个内部操作git工具来简化操作Android源码的Python脚本。经过尝试,直接使用git工具在ubuntu下可以实现cloneAndroid源码。下面介绍一下方法:
1.获取当前的在github上托管的Androidgitrepositories:
github页面为:https://github.com/android/following。不过这个页面不支持通过wget"https://github.com/android/following"或者curl"https://github.com/android/following"的方式访问,错误信息如下:
这个时候需能做的只能是"tryagain"了。
需要说明的是"不要试图同时并发执行多个gitclone命令",这样会导致大量出现上面贴图中的错误,另外,整个clone过程中耗时最多的gitrepository如下:
kernel_common.gitkernel_msm.gitplatform_frameworks_base.gitplatform_prebuilt.git其中platform_prebuilt.git是google提供的预编译好的二进制文件,包含:各种库文件,jar包,可执行程序等等,如果只是阅读Android源代码,这个gitrepository可以不用clone.
F. 如何查看安卓apk程序的源代码
将apk文件拷贝至sdcard上。
命令顺序如下:
进入Android sdk文件夹/tools目录下
输入adb shell
输入su
输入cd data
输入cd app
这时就可以看到你安装的所有的apk文件。输入cp 空格 对应的apk 空格 /sdcard/
这样就将apk文件拷贝出来了。
将apk文件后缀直接变成rar格式,可以看到熟悉的目录结构了,
其中xml文件打开后都是二进制的,无法查看。
这时就用到了一个android4me的AXMLPrinter2工具。(请自行网络搜索)
输入以下命令,将xml文件解析出来
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
将showtimes_list.xml生成xml文件,则输入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前进行到这一步,只能看到xml文件的内容,其工程中的java源文件还是看不到,看目录结构下有一个classes.dex文件,我们需要将dex文件变为jar文件。
这里用到了另一个工具dex2jar。(自行搜索下载)
在Windows下解压之后的目录如下图所示:
在命令行中,进入到此目录下:
在Windows下,输入以下命令:
dex2jar.bat c:\classes.dex
运行完之后,在C盘会多一个classes.dex.dex2jar.jar文件,此文件就是我们需要的jar文件。
利用jd-gui,将jar文件反向工程为java代码。(请自行搜索下载)
它分为Windows、Linux、和max三个版本,这里我下载的是Windows版本的。
解压之后,双击运行exe文件,选择classes.dex.dex2jar.jar文件,相应的jar文件中的Java文件就被反向工程显示出来了!
G. android程序代码问题
这个OnCheckedChangeListener
一般是监听RadioGroup的
而RadioGroup一般是多选一的关系。
所以
public
void
onCheckedChanged(RadioGroup
group,
int
checkedId)
{
}
里面一般是放选项的处理方法
例如
public
void
onCheckedChanged(RadioGroup
group,
int
checkedId)
{
if(checkedId
==
Radio1.getId())
{
TextView1.setText(Radio1.getText());
}
else
if
(checkedId
==
Radio2.getId())
{
TextView1.setText(Radio2.getText());
}
}
//
Compiled
from
RadioGroup.java
(version
1.5
:
49.0,
no
super
bit)
public
abstract
static
interface
android.widget.RadioGroup$OnCheckedChangeListener
{
//
Method
descriptor
#4
(Landroid/widget/RadioGroup;I)V
public
abstract
void
onCheckedChanged(android.widget.RadioGroup
arg0,
int
arg1);
Inner
classes:
[inner
class
info:
#1
android/widget/RadioGroup$OnCheckedChangeListener,
outer
class
info:
#7
android/widget/RadioGroup
inner
name:
#9
OnCheckedChangeListener,
accessflags:
1545
public
abstract
static]
}
这是android
API文档里面的。OnCheckedChangeListener是一个抽象类
只能被实例化以后才能使用。而且必须实现public
void
onCheckedChanged方法。
H. 谁知道简单的聊天程序源代码(Android的)
代码如下:
package com.neusoft.e.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服务器端代码
* 获取客户端发送的信息,显示并且返回对应的回复
* 1、创建ServerSocket对象
* 2、调用accept方法获取客户端连接
* 3、使用输入流读取客户端发送的数据
* 4、使用输出流向客户端写入数据
* 5、关闭对应的对象
* @author L
*
*/
public class ChatServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
//1、创建ServerSocket对象,8875为自定义端口号
ServerSocket server = new ServerSocket(8857);
//简单提示
System.out.println("等待客户端连接……");
//2、获取客户端连接
Socket client = server.accept();
//获取客户端的相关信息
System.out.println(client.getInetAddress().getHostAddress() + "连接上来了……");
//3.1、定义输入流和输出流对象
BufferedReader in = new BufferedReader(
new InputStreamReader(
client.getInputStream()));
//用来获取从控制台输入的数据,将该数据发送给客户端
BufferedReader inByServer = new BufferedReader(
new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(client.getOutputStream(), true);
//读取到的数据
String data = null;
String answer = null;
//循环和客户端进行通信
do
{
//3.2、读取客户端发送的数据
data = in.readLine();
//在服务器端显示读取到的数据
System.out.println("客户端发送信息:" + data);
//获取服务器端要发送给客户端的信息
System.out.print("服务器端回复客户端:");
answer = inByServer.readLine();
//3.3、将数据写入到客户端
out.println(answer);
out.flush();
}while(!"bye".equals(data));
//4、关闭相关资源
out.flush();
in.close();
inByServer.close();
out.close();
//关闭Socket对象
client.close();
server.close();
System.out.println("服务器端关闭……");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}