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();
}
}
}