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]
- Android非APK程序开发流程
- Android开发 —— apk打包流程
- Android开发中内置apk程序
- Android开发 之 逆向apk程序
- Android开发中内置apk程序
- Android开发中内置apk程序
- Android APK签名流程
- android apk打包流程
- Android Apk打包流程
- android打包apk流程
- Android APK打包流程
- Android APK打包流程
- Android APK打包流程
- Android apk卸载流程
- Android非开发机使用hierarchy viewer流程
- Android.mk——开发中内置apk程序配置
- 发布Android APK应用流程
- 发布Android APK应用流程
- android常用控件总结
- 企业信息系统安全保证计划
- 前端Nginx,后端Apache获取用户真实IP地址
- jsp的include两种使用方法
- wince 背景logo
- Android非APK程序开发流程
- 第3章:Prolog是如何回答问题的
- SolrCloud分布式检索时忽略宕机的Shard
- [Leetcode]Binary Tree Preorder Traversal
- Android万能视频播放器-移植第三方库(vitamio)
- Incomplete reply from server
- 安卓Activity的生命周期函数详解
- android平台下运行dx.bat,提示“系统找不到指定路径”
- android 标题动态变换(listview scrollview 滑动距离计算)