當前位置:首頁 » 操作系統 » android貼吧源碼

android貼吧源碼

發布時間: 2023-08-01 10:58:57

A. 怎樣查看 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文件就被反向工程顯示出來了!

B. Android 將 apk 反編譯源碼

將 apk 解壓,在解壓後的文件夾中可以找到 classes.dex 文件。(除了 classes.dex 文件,可能還會有 classes2.dex , classes3.dex 等等,本文以 classes.dex 為例,對其他幾個 dex 文件的操作是類似的)

使用 dex2jar 工具,將 dex 文件轉換為 jar 文件

使用方式:

執行命令後,生成的 classes-dex2jar.jar 就是我們需要的 jar 文件。

使用 Luyten 工具查看 jar 文件,就能看到反編譯後的源碼了。

本例中, classes.dex 文件中存儲的是 android 的一些基礎庫,實際編寫的源碼在 classes3.dex 中,對 classes3.dex 執行第二步,查看生成的 classes3-dex2jar.jar 文件,可以看到如下內容:

這就是反編譯 apk 的基本操作了。

Cmder 是一個非常好用的命令行工具。

效果如下:

只需要執行 apk2jar 命令,就可以實現把 apk 解壓到 apk_ 文件夾中,並將 apk_ 文件夾中的 classes.dex 文件轉換為 jar 。原理就是通過 Cmder 添加別名,把上述的第一步和第二步中執行的命令行組合起來了。

為 Cmder 添加別名很簡單,編輯 Cmder安裝目錄\config\user_aliases.cmd 文件,將別名添加到裡面即可。本例添加的別名如下:

其中:

C. 如何閱讀Android系統源碼

由於工作需要大量修改framework代碼, 在AOSP(Android Open Source Project)源碼上花費了不少功夫, Application端和Services端都看和改了不少.
如果只是想看看一些常用類的實現, 在Android包管理器里把源碼下載下來, 隨便一個IDE配好Source Code的path看就行.
但如果想深入的了解Android系統, 那麼可以看下我的一些簡單的總結.

知識
Java
Java是AOSP的主要語言之一. 沒得說, 必需熟練掌握.
熟練的Android App開發
Linux
Android基於Linux的, 並且AOSP的推薦編譯環境是Ubuntu 12.04. 所以熟練的使用並了解Linux這個系統是必不可少的. 如果你想了解偏底層的代碼, 那麼必需了解基本的Linux環境下的程序開發. 如果再深入到驅動層, 那麼Kernel相關的知識也要具備.
Make
AOSP使用Make系統進行編譯. 了解基本的Makefile編寫會讓你更清晰了解AOSP這個龐大的項目是如何構建起來的.
Git
AOSP使用git+repo進行源碼管理. 這應該是程序員必備技能吧.
C++
Android系統的一些性能敏感模塊及第三方庫是用C++實現的, 比如: Input系統, Chromium項目(WebView的底層實現).

硬體
流暢的國際網路
AOSP代碼下載需要你擁有一個流暢的國際網路. 如果在下載代碼這一步就失去耐心的話, 那你肯定沒有耐心去看那亂糟糟的AOSP代碼. 另外, 好程序員應該都會需要一個流暢的Google.
一台運行Ubuntu 12.04的PC.
如果只是閱讀源碼而不做太多修改的話, 其實不需要太高的配置.
一台Nexus設備
AOSP項目默認只支持Nexus系列設備. 沒有也沒關系, 你依然可以讀代碼. 但如果你想在大牛之路走的更遠, 還是改改代碼, 然後刷機調試看看吧.
高品質USB線
要刷機時線壞了, 沒有更窩心的事兒了.
軟體
Ubuntu 12.04
官方推薦, 沒得選.
Oracle Java 1.6
注意不要用OpenJDK. 這是個坑, 官方文檔雖然有寫, 但還是單獨提一下.
安裝:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java6-installer
sudo apt-get install oracle-java6-set-default

Eclipse
估計會有不少人吐槽, 為什麼要用這個老古董. 其實原因很簡單, 合適. 剛開始搞AOSP時, 為了找到效率最優的工具, 我嘗試過Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags. 最終結果還是Eclipse. 主要優點有:
有語法分析 (快速准確的類, 方法跳轉).
支持C++ (IntelliJ的C++支持做的太慢了).
嵌入了DDMS, View Hierarchy等調試工具.
為了提高效率, 花5分鍾背下常用快捷鍵非常非常值得.
調整好你的classpath, 不要導入無用的代碼. 因為AOSP項目代碼實在是太多了. 當你還不需要看C++代碼時, 不要為項目添加C++支持, 建索引過程會讓你崩潰.
Intellij IDEA
開發App必備. 當你要調試系統的某個功能是, 常常需要迅速寫出一個調試用App, 這個時候老舊的Eclipse就不好用了. Itellij IDEA的xml自動補全非常給力.
巨人的肩膀
AOSP項目官方: https://source.android.com/source/index.html
這個一定要先讀. 項目介紹, 代碼下載, 環境搭建, 刷機方法, Eclipse配置都在這里. 這是一切的基礎.
Android官方Training: https://developer.android.com/training/index.html
這個其實是給App開發者看的. 但是裡面也有不少關於系統機制的介紹, 值得細讀.
老羅的Android之旅: http://blog.csdn.net/luoshengyang
此老羅非彼老羅. 羅升陽老師的博客非常有營養, 基本可以作為指引你開始閱讀AOSP源碼的教程. 你可以按照博客的時間順序一篇篇挑需要的看.但這個系列的博客有些問題:
早期的博客是基於舊版本的Android;
大量的代碼流程追蹤. 讀文章時你一定要清楚你在看的東西在整個系統處於什麼樣的位置.
Innost的專欄: http://blog.csdn.net/innost
鄧凡平老師也是為Android大牛, 博客同樣很有營養. 但是不像羅升陽老師的那麼系統. 更多的是一些技術點的深入探討.
Android Issues: http://code.google.com/p/android/issues/list
Android官方Issue列表. 我在開發過程中發現過一些奇怪的bug, 最後發現這里基本都有記錄. 當然你可以提一些新的, 有沒有人改就是另外一回事了.
Google: https://www.google.com
一定要能流暢的使用這個工具. 大量的相關知識是沒有人系統的總結的, 你需要自己搞定.
其它
代碼組織
AOSP的編譯單元不是和git項目一一對應的, 而是和Android.mk文件一一對應的. 善用mmm命令進行模塊編譯將節省你大量的時間.
Binder
這是Android最基礎的進程間通訊. 在Application和System services之間大量使用. 你不僅要知道AIDL如何使用, 也要知道如何手寫Binder介面. 這對你理解Android的Application和System services如何交互有非常重要的作用. Binder如何實現的倒不必著急看.
HAL
除非你對硬體特別感興趣或者想去方案公司上班, 否則別花太多時間在這一層.
CyanogenMod
這是一個基於AOSP的第三方Rom. 從這個項目的wiki里你能學到很多AOSP官方沒有告訴你的東西. 比如如何支持Nexus以外的設備.
DIA
這是一個Linux下畫UML的工具, 能夠幫你梳理看過的代碼.
XDA
http://www.xda-developers.com/

D. 如何查看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文件便能夠查看源代碼了,如圖六。

這樣就大功告成了!!!

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. 求一簡單ANDROID源碼

main.xml
<?xml version="1.0" encoding="utf-8"?>讓猛
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/edit" android:layout_width="200dp" android:layout_height="wrap_content"></EditText>
<Button android:id="@+id/bt" android:text="click" android:layout_width="wrap_content" android:layout_height="wrap_content">猜滑皮<穗差/Button>
<TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

test.java:
package com.android.test;

import java.text.DecimalFormat;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class test extends Activity {
/** Called when the activity is first created. */
TextView tv;
Button bt;
EditText edit;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
bt = (Button) findViewById(R.id.bt);
edit = (EditText) findViewById(R.id.edit);

bt.setOnClickListener(new OnClickListener(){

public void onClick(View v) {
// TODO Auto-generated method stub
String strEdit = edit.getText().toString();
float input = Float.parseFloat(strEdit);
Float output = input / 3;
DecimalFormat df = new DecimalFormat("0.##");

tv.setText(df.format(output));
}});

}
}

你試試哈

G. 網上給的android源代碼怎麼用

git的工程裡面不是都有英文的readme么,File -> import先瀏覽到目錄到library,導入library,然後,瀏覽到samples目錄導入samples,結束。


我總共就花了兩分鍾下載導入,build,截圖,發帖回答。

H. 怎樣查看 Android APP 源代碼

壓縮軟體打開apk文件,解壓出根目錄中的classes.dex文件

使用cmd ,dex2jar.bat classes.dex命令將classes.dex轉換為jar

再用jd-gui打開該jar就可以查看源碼了,如果apk安全性好的話,有些代碼是看不到的

熱點內容
python發帖 發布:2025-03-13 15:08:51 瀏覽:82
cmcc路由器手機如何改密碼 發布:2025-03-13 14:58:01 瀏覽:419
linuxpostfix 發布:2025-03-13 14:58:00 瀏覽:697
蘋果手機的wifi密碼怎麼看 發布:2025-03-13 14:30:52 瀏覽:50
php直播開發教程 發布:2025-03-13 14:29:20 瀏覽:911
如何防止女朋友要手機密碼 發布:2025-03-13 14:28:46 瀏覽:891
關系資料庫的概念 發布:2025-03-13 14:20:12 瀏覽:461
linuxrpm卸載 發布:2025-03-13 14:17:45 瀏覽:652
android在線支付 發布:2025-03-13 13:50:21 瀏覽:792
瑞影無損圖片壓縮大師 發布:2025-03-13 13:27:33 瀏覽:452