android2048源代碼
⑴ 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不負責底層開發)。
⑵ 怎樣查看 Android APP 源代碼
用壓縮軟體打開apk文件,解壓出根目錄中的classes.dex文件
使用cmd ,dex2jar.bat classes.dex命令將classes.dex轉換為jar
再用jd-gui打開該jar就可以查看源碼了,如果apk安全性好的話,有些代碼是看不到的
⑶ 如何查看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文件便能夠查看源代碼了,如圖六。
這樣就大功告成了!!!
⑷ 有沒有Android版的 2048(俄羅斯方塊版本、消消樂版本) 游戲的源代碼
你到CSDN上邊查一下,一大把,都是源碼。
⑸ 求2048朝代版的源代碼
import javax.swing.*;
import java.awt.*;
@SuppressWarnings("serial")
public class Game_block extends JLabel {
private int value;
public Game_block() {
super("go!");
value = 0;
setFont(new Font("font", Font.PLAIN, 40));
setBackground(Color.black);
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
String Text = String.valueOf(value);
if (value != 0){
if(value == 2)
setText("夏");
}
if (value != 0){
if(value == 4)
setText("商");
}
if (value != 0){
if(value == 8)
setText("周");
}
if (value != 0){
if(value == 16)
setText("秦");
}
if (value != 0){
if(value == 32)
setText("漢");
}
if (value != 0){
if(value == 64)
setText("三國");
}
if (value != 0){
if(value == 128)
setText("南北朝");
}
if (value != 0){
if(value == 256)
setText("隋");
}
if (value != 0){
if(value == 1024)
setText("五代十國");
}
if (value != 0){
if(value == 2048)
setText("宋遼");
}
if (value != 0){
if(value == 4096)
setText("宋金");
}
if (value != 0){
if(value == 8192)
setText("元");
}
if (value != 0){
if(value == 16384)
setText("明");
}
if (value != 0){
if(value == 32768)
setText("清");
}
if (value != 0){
if(value == 65536)
setText("現代");
}
else
setText("2048");
setColor();
}
public void setColor() {
if (this.value == 0)
setBackground(Color.black);
else if (this.value == 2)
setBackground(new Color(238, 228, 218));
else if (this.value == 4)
setBackground(new Color(248, 232, 248));
else if (this.value == 8)
setBackground(new Color(243, 177, 116));
else if (this.value == 16)
setBackground(new Color(243, 177, 126));
else if (this.value == 32)
setBackground(new Color(248, 149, 90));
else if (this.value == 64)
setBackground(new Color(249, 94, 50));
else if (this.value == 128)
setBackground(new Color(239, 207, 108));
else if (this.value == 256)
setBackground(new Color(239, 207, 99));
else if (this.value == 512)
setBackground(new Color(239, 203, 82));
else if (this.value == 1024)
setBackground(new Color(239, 199, 57));
else if (this.value == 2048)
setBackground(new Color(239, 195, 41));
else if (this.value == 4096)
setBackground(new Color(255, 60, 57));
else if (this.value == 8192)
setBackground(new Color(258, 60, 59));
else if (this.value == 16384)
setBackground(new Color(262, 62, 59));
else if (this.value == 32768)
setBackground(new Color(262, 64, 62));
else if (this.value == 65536)
setBackground(new Color(264, 64, 66));
}
}
______________________________________________________
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.*;
@SuppressWarnings("serial")
public class Game_my2048 extends JFrame implements KeyListener {
Game_block[] block;
JPanel panel;
boolean numFlag;
int moveFlag;
int a ;//a 的引入是為了防止連加的情況出現
public Game_my2048() {
numFlag = true;
moveFlag = 0;
block = new Game_block[16];
setTitle("2048朝代版");
setSize(400, 400);
setLocation(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = (JPanel) getContentPane();
panel.setLayout(new GridLayout(4, 4, 5, 5));
addBlock();
for (int i = 0; i < 2; i++)
appearBlock();
this.addKeyListener(this);
this.setVisible(true);
}
public void addBlock() {
for (int i = 0; i < 16; i++) {
block[i] = new Game_block();
block[i].setHorizontalAlignment(JLabel.CENTER);
// 不透明
block[i].setOpaque(true);
panel.add(block[i]);
}
}
public void appearBlock() {
while(numFlag) {
int index = (int) (Math.random() * 16);
if (block[index].getValue() == 0) {
if (Math.random() < 0.5)
block[index].setValue(2);
else
block[index].setValue(4);
break;
}
}
}
public void judgeAppear() {
int sum = 0;
for (int i = 0; i < 16; i++) {
if (block[i].getValue() != 0)
sum++;
}
if (sum == 16)
numFlag = false;
}
public void upBlock() {
for (int i = 12; i < 16; i++) {
int index = i;
for (int j = i - 4; j >= i - 12; j -= 4) {
int valueI = block[index].getValue(), valueJ = block[j]
.getValue();
if (valueJ == 0) {
block[index].setValue(0);
block[j].setValue(valueI);
} else {
if (valueI == valueJ) {
block[index].setValue(0);
block[j].setValue(valueI + valueJ);
if (valueI + valueJ == 4096)
win();
numFlag = true;
moveFlag = 0;
} else if (numFlag == false)
moveFlag += 1;
}
index = j;
}
}
}
public void downBlock() {
for (int i = 0; i < 4; i++) {
a = 5;
int index = i;
for (int j = i + 4; j <= i + 12; j += 4) {
int valueI = block[index].getValue(), valueJ = block[j]
.getValue();
if (valueJ == 0) {
block[index].setValue(0);
block[j].setValue(valueI);
} else {
if (valueI == valueJ) {
block[index].setValue(0);
block[j].setValue(valueI + valueJ);
if (valueI + valueJ == 4096)
win();
numFlag = true;
moveFlag = 0;
} else if (numFlag == false)
moveFlag += 1;
}
index = j;
}
}
}
public void rightBlock() {
for (int i = 0; i <= 12; i += 4) {
int index = i;
for (int j = i + 1; j <= i + 3; j++) {
int valueI = block[index].getValue(), valueJ = block[j]
.getValue();
if (valueJ == 0) {
block[index].setValue(0);
block[j].setValue(valueI);
} else {
if (valueI == valueJ) {
block[index].setValue(0);
block[j].setValue(valueI + valueJ);
if (valueI + valueJ == 4096)
win();
numFlag = true;
moveFlag = 0;
} else if (numFlag == false)
moveFlag += 1;
}
index = j;
}
}
}
public void leftBlock() {
for (int i = 3; i <= 15; i += 4) {
int index = i;
for (int j = i - 1; j >= i - 3; j--) {
int valueI = block[index].getValue(), valueJ = block[j]
.getValue();
if (valueJ == 0) {
block[index].setValue(0);
block[j].setValue(valueI);
} else {
if (valueI == valueJ) {
block[index].setValue(0);
block[j].setValue(valueI + valueJ);
if (valueI + valueJ == 4096)
win();
numFlag = true;
moveFlag = 0;
} else if (numFlag == false)
moveFlag += 1;
}
index = j;
}
}
}
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
upBlock();
judgeAppear();
appearBlock();
over();
break;
case KeyEvent.VK_DOWN:
downBlock();
judgeAppear();
appearBlock();
over();
break;
case KeyEvent.VK_LEFT:
leftBlock();
judgeAppear();
appearBlock();
over();
break;
case KeyEvent.VK_RIGHT:
rightBlock();
judgeAppear();
appearBlock();
over();
break;
}
}
public void over() {
if (!numFlag && moveFlag >= 36) {
block[4].setText("G");
block[5].setText("A");
block[6].setText("M");
block[7].setText("E");
block[8].setText("O");
block[9].setText("V");
block[10].setText("E");
block[11].setText("R");
block[11].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
reStart();
}
});
}
}
public void win() {
block[0].setText("Y");
block[1].setText("O");
block[2].setText("U");
block[13].setText("W");
block[14].setText("I");
block[15].setText("N");
block[15].addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
reStart();
}
});
}
public void reStart(){
numFlag=true;
moveFlag=0;
for(int i=0;i< 16;i++)
block[i].setValue(0);
for (int i = 0; i < 2; i++)
appearBlock();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
public static void main(String args[]) {
JFrame.(true);
new Game_my2048();
}
}
__________________________________________________________________________
這個代碼卻少很多功能的
⑹ 如何獲取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.
⑺ android源碼下 怎麼修改內存閥值
android源碼下 修改內存閥值的方法為:
第一步:首先建立一個XXX.txt文件,輸入以下代碼:
#!/system/bin/sh
echo "1536,2048,4096,6144,8192,12288" > /sys/mole/lowmemorykiller/parameters/minfree ;
這個代碼是基於MFM配置3對應的數值,用了幾天這個數值了沒發現問題,所以暫時以這個數值為例。
然後保存,將保存好的XXX.txt文件修改為67-Jasonfix
將這個67-Jasonfix文件用RE管理器放入system/etc/init.d下(這個文件夾裡面都是開機腳本設定。
然後將許可權改為:全部打鉤。
第二步:修改install-recovery.sh(在system/etc目錄下)
(1).找到這些腳本所在行
sh /system/etc/init.d/XXXXX
對應加入
sh /system/etc/init.d/67-Jason
(2).然後找到
echo A,B,C,D,E,F /sys/mole/lowmemorykiller/parameters/minfree
刪除這行並保存即可。
⑻ 怎樣查看 Android APP 源代碼
需要把反編譯的apk存放到apktools同級文件夾目錄下,然後運行要查看的安裝包,具體操作如下:
1、首先把反編譯的apk存放到apktools同級文件夾目錄下,如下圖所示。
⑼ 怎樣查看 Android APP源代碼
將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文件就被反向工程顯示出來了!