android am介绍

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=/system
export CLASSPATH=$base/framework/am.jar
exec 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

你可能感兴趣的:(android am介绍)