android am介紹

來源:互聯網
上載者:User
Android在shell中提供了am命令來發送Intent,它的源碼為位於frameworks/base/cmds/am.它本身是用JAVA代碼來實現的。執行am命令其實是通過運行shell指令碼frameworks/base/cmds/am/am,然後在該指令碼中運行app_process命令來啟動am這個java程式的。frameworks/base/cmds/am/am指令檔如下:
# Script to start "am" on the device, which has a very rudimentary# shell.#base=/systemexport CLASSPATH=$base/framework/am.jarexec app_process $base/bin com.android.commands.am.Am "$@"
android 運行java main
 

平常都是用java寫activity之類的東西,都看不到程式的入口main,android 系統是dalvik虛擬機器,只是把java class 合成了一個檔案,把位元組碼轉成了dalvik啟動並執行東西,所以dalvik可以運行沒有四個組件的代碼吧,今天 試了一個 可以

下面來說下:

1.先來個java main

Java代碼  
  1. package com.aspire.test.dex;  
  2.   
  3. import android.os.Build;  
  4. import android.os.Process;  
  5. import android.util.Log;  
  6.   
  7. public class Main {  
  8.   
  9.     private static final String TAG = "Main";  
  10.   
  11.     /** 
  12.      * @param args 
  13.      */  
  14.     public static void main(String[] args) {  
  15.   
  16.         do {  
  17.             Log.d(TAG, "start main");  
  18.             final String version = Build.VERSION.SDK;  
  19.             Log.d(TAG, "the product sdk version:" + version);  
  20.             Log.d(TAG, "time:" + System.currentTimeMillis());  
  21.             Log.d(TAG, "pid:" + Process.myPid());  
  22.             try {  
  23.                 Thread.sleep(500);  
  24.             } catch (InterruptedException e) {  
  25.                 e.printStackTrace();  
  26.             }  
  27.         } while (true);  
  28.   
  29.     }  
  30. }  

 建立的是java工程哦 ,把sdk下的android.jar 引入進來

 

2.編譯java到class

 

在eclipse bin 下面有編譯好的class

 

3.把class 轉成dex

    用cmd 切換到bin目錄下

    工具是$sdk\platform-tools\dx.bat

    這裡輸入命令de --dex --output={輸出dex到哪個檔案} class 所在編譯的目錄 這是bin。

轉化完成就有一個classes.dex檔案

把dex檔案像jar一樣打包

 

4.寫linux shell 指令碼


export LD_LIBRARY_PATH=/data/local/tmp/:$LD_LIBRARY_PATH
export CLASSPATH=/data/local/tmp/testdex.jar

exec app_process . com.aspire.test.dex.Main

 

 

5.把testdex.jar 指令檔push 到手機的/data/local/tmp目錄裡

 最後執行 ./指令碼名 沒錯誤 就運行成功了

 

下面資源我用ant build的

 

 

  • TestDex.zip (83 KB)
  • 下載次數: 4

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.