Android非APK程序开发流程

来源:互联网 发布:网络教育统考好不好考 编辑:程序博客网 时间:2024/06/03 08:13

         本文所说的非APK程序,是区别于一般的Android应用程序。这里说的非APK程序是指一个Android库项目,生成的Jar包包含一个有main入口的Java类,能够独立运行。许多Android平台上用Java语言实现的命令即是属于此种类型。

    1. 创建一个Android库项目

         执行如下命令,创建一个工程:

         create lib-project -n demo_test -t 1 -k com.fyj.test -p ./demo

 

         2. 编写程序

         作为一个简单的例子,下面是一个简单的带main函数的Java类:

 

package com.fyj.test;

 

public class Demo {

 

         public static void main(String args[]) {

                   System.out.println("This is a Demo");

         }

}

 

    3. 编译代码

         在工程根目录下,执行antdebug(或release)

   

    4. 将生成的jar包转换成dex字节码

    在bin目录下产生了classes.jar文件,这个还不能直接放到Android平台上去执行,需要转换为Dalvik能够识别的字节码,进入bin目录下依次执行如下命令:

         4.1 通过dx工具将jar包中所有的类打包编译为一个名为classes.dex的文件

    dx --dex --output=classes.dexclasses.jar

         4.2 通过aapt工具将classes.dex文件重新添加到jar包中

         aapt add classes.jar classes.dex

    5. 运行程序

         要想上述编译生成的jar文件,能够运行,需要启动dalvik虚拟机,加载主类,并调用入口函数main,可以借助如下脚本:

   

# Script to start "demo" on the device, which has a very rudimentary

# shell.

#

base=/system

export CLASSPATH=$base/framework/demo.jar

exec app_process $base/bin com.fyj.test.Demo "$@"

 

  将上述的Jar包重命名为demo.jar,然后push到测试平台上的/system/framework/目录下,将上述脚本保存为demo文件,然后push到测试平台的/system/bin/目录下,并加上可执行权限。这样就可以在Android平台上运行上述脚本了,最终会调用到我们定义的主类。

输出结果如下:

$ adb shell demo

This is a Demo

 

附录:

android相关命令:

查看机器上已经安装的AVD:

android list avd

查看机器上已经安装的Android版本:

android list target

创建AVD设备

android create avd -n <avd名称> -t <Android版本> -b <CPU架构> -p <AVD设备保存位置> -s <选择AVD皮肤>

Sample: androidcreate avd -n test_avd -t 4

升级AVD设置

android update avd -n <AVD 名称>

Sample:androidupdate avd -n test_avd

创建一个新的Android项目

android create project<options>

Options:

  -n--name    : 项目名字<Projectname>,当你去build该项目的时候,这个选项将会用来做你的apk的文件名<即是:name.apk>

  -t--target  : 项目针对的Android版本,同时在编译的时候也会使用该Android版本.这个可以使用android list target查询到. [required]

  -p--path    : 项目将要建立的路径.[required]

  -k--package : 项目应用的包名. [required]

  -a--activity: 默认的Activity的名字. [required]

Sample:androidcreate project -n xiaoxuetu -t 4 -p ./xiaoxuetu -k com.xiaoxuetu -a MainActivity

更新一个Android项目

android update project<options>

Options:

  -l--library    : Directory of an Androidlibrary to add, relative to this project's directory.

  -p--path       : The project's directory.[required]

  -n--name       : Project name.

  -t--target     : Target ID to set for theproject.

  -s--subprojects: Also updates any projects in sub-folders, such as test projects.

Sample:androidupdate project -p ./xiaoxuetu -n xiaoxuetu -t 4

创建Android库项目

android create lib-project<options>

Options:

  -n--name    : Project name.

  -t--target  : Target ID of the new project.[required]

  -k--package : Android package name for the library. [required]

  -p--path    : The new project's directory.[required]

Sample:androidcreate lib-project -n xiaoxuetu_lib -t 4 -k com.xiaoxuetu.lib -p./xiaoxuetu_lib

 

更新Android库项目

android update lib-project<options>

Options:

  -p--path    : The project's directory.[required]

  -t--target  : Target ID to set for theproject.

库项目的引入

android update project \

--target <target_ID> \

--path path/to/your/project

--library path/to/library_projectA

当引入成功后,我们就会发现在project.properties文件中多了这么一行:

android.library.reference.1=path/to/library_projectA

如果你引入的是多个库项目,那么将会使用.n来决定各个库项目的优先权(数字代码优先级,1为最高):

android.library.reference.1=path/to/library_projectA

android.library.reference.2=path/to/library_projectB

android.library.reference.3=path/to/library_projectC

当然我们也可以给library_projectC较高的优先权:

android.library.reference.2=path/to/library_projectA

android.library.reference.3=path/to/library_projectB

android.library.reference.1=path/to/library_projectC

 

创建测试项目

android create test-project<options>

Options:

  -p--path    : The new project's directory.[required]

  -n--name    : Project name.

  -m--main    : Path to directory of the appunder test, relative to the test project directory. [required]

Sample: androidcreate test-project -p ./xiaoxuetu_test -n xiaoxuetu_test -m ../xiaoxuetu

更新测试项目

android update test-project <options>

Options:

  -m--main    : Directory of the app undertest, relative to the test project directory. [required]

  -p--path    : The project's directory.[required]

0 0
原创粉丝点击