Android驱动入门-在Android系统上运行JAVA程序
在linux上运行java程序,直接用javac编译,再用java运行就行了。但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的。
如果想在Android上运行Hello world!。则需要一下步骤。
/* File Name: Hello.java */
public class Hello
{
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
首先在pc上编译: javac Hello.java
生成 Hello.class 文件。
然后执行下面的指令(Hello.class保存在/work目录下):
dx --dex --output=Hello.jar Hello.class
(如果提示找不到dx指令,则需要设置一下环境变量。 . setenv)
生成Hello.jar文件。
在Android系统的控制台上,运行下面指令中的一个即可运行java程序。
dalvikvm -cp /mnt/Hello.jar Hello
CLASSPATH=/mnt/Hello.jar app_process ./ Hello
当涉及到多个文件时:
/* File Name: Pack.java */
package a.b.c.d; public class Pack
{
public static void main(String[] args) {
System.out.println("Pack Java!");
}
}
运行指令:
javac Pack.java -d . //在当前目录下生成 a/b/c/d/Pack.class
java a.b.c.d.Pack //在pc上运行
dx --dex --output=pack.jar ./
dalvikvm -cp /mnt/pack.jar a.b.c.d.Pack
CLASSPATH=/mnt/pack.jar app_process ./ a.b.c.d.Pack
如果涉及到多个文件,则可以借助Android.mk来实现。
/*
File Name:Android.mk
参考: frameworks/base/cmds/am/Android.mk
*/
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_MODULE := pack
include $(BUILD_JAVA_LIBRARY)
把代码放到 framework/testing目录下。,然后执行 mmm . 命令。 会生成一个 pack.jar
用 dalvikvm 或 app_process 两种启动方式来运行。
启动方式的差别:
app_proces会创建两个Binder线程: Binder_1, Binder_2
Android驱动入门-在Android系统上运行JAVA程序的更多相关文章
- 原生态在Hadoop上运行Java程序
第一种:原生态运行jar包1,利用eclipse编写Map-Reduce方法,一般引入Hadoop-core-1.1.2.jar.注意这里eclipse里没有安装hadoop的插件,只是引入其匝包,该 ...
- 腾讯云上运行java程序过程
1: 购买服务器(腾讯云,阿里云等) 2:安装centos操作系统: 3:安装jdkhttp://www.cnblogs.com/Amos-Turing/p/7403696.html 4:安装数据库( ...
- 在Android上运行Java和C程序
在linux上运行java程序,直接用javac编译,再用java启动虚拟机运行就行了.但是在Android上,由于虚拟机和pc端的不同,所以操作方法也是不一样的.下面介绍Android上运行Hell ...
- JAVA设置环境变量和在DOS下运行java程序
在学校实训的这几天,老师带着我们开始深入的复习java.这是第一天的内容哦 对于“JAVA设置环境变量和在DOS下运行java程序”,许多初学者是陌生的,但了解这个却对后期的学习很重要. http:/ ...
- [译]:Xamarin.Android开发入门——Hello,Android深入理解
返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...
- [译]:Xamarin.Android开发入门——Hello,Android Multiscreen深入理解
原文链接:Hello, Android Multiscreen_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android Multiscreen深入理解. 本 ...
- [译]:Xamarin.Android开发入门——Hello,Android快速上手
返回索引目录 原文链接:Hello, Android_Quickstart. 译文链接:Xamarin.Android开发入门--Hello,Android快速上手 本部分介绍利用Xamarin开发A ...
- [转]C#程序无法在64位系统上运行之.NET编译的目标平台
今天将编译的C#的exe拷贝到测试机上(Win7_64bit),一运行就挂了,提示“stop working”,一开始怀疑测试机上没有安装.net framework框架,追究半天原来是编译的目标平台 ...
- 【Android学习入门】Android studio基本设置
1.背景设置 依次选择File->Settings-->Appearance & Behaviour->Apprearance,然后勾选 show line number. ...
随机推荐
- python删除list中的空list
list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText'] 如何删除空列表,以便我得到: list2 = ['text', 'text2 ...
- [oBIX包使用教程] 使用 Python 通过 oBIX 协议访问 Niagara 数据
oBIX 全称是 Open Building Information Exchange,它是基于 RESTful Web Service 的接口的标准,用于构建控制系统.oBIX是在专为楼宇自动化设计 ...
- drf的权限扩充
drf框架为我们提供了基本的权限验证.主要包括三种验证 1.AllowAny 所有用户 2.IsAuthenticated 验证过的用户 3.IsAdminUser 超级管理员 这些权限人员不一定满足 ...
- 第7.3节 Python特色的面向对象设计:协议、多态及鸭子类型
Python是一种多态语言,其表现特征是:对象方法的调用方只管方法是否可调用,不管对象是什么类型,从而屏蔽不同类型对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化. 一. P ...
- 第7章 Python类型、类、协议 第7.1节 面向对象程序设计的相关知识
Python被视为一种面向对象的语言,在介绍Python类相关的内容前,本节对面向对象程序设计相关的概念进行简单介绍. 一. 类和对象(实例) 在面向对象的程序设计(OOP)过程中有两个重要概念 ...
- 第15.34节 PyQt(Python+Qt)入门学习:containers容器类部件QStackedWidget堆叠窗口部件详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 StackedWidget堆叠窗口部件为一系列窗口部件的堆叠,对应类为QStackedWi ...
- 云服务器AWD平台搭建
开学后实验室来了几个新同学,在线上CTF方面大家一直在持续学习,但AWD模式的CTF我们练习并不多,所以准备搭建一个AWD平台用于实验室成员的线下赛攻防练习. 最开始的是防灾科技大学的线下AWD靶场: ...
- Docker 简介-基本概念(一)
1.前提知识 1.1 linux相关的基础知识 1.2 git相关的知识 2. Docker三要素 Docker主要包含3要素:镜像(image).容器(container).仓库(repositor ...
- Kubernetes-21:Apiserver等证书修改使用年限
Kubernetes证书使用年限修改方法 Kubernetes的apiservice.crt证书默认只有一年的使用期限,查看方法: cd /etc/kubernetes/pki [root@Cen ...
- Springboot集成swagger和knife
前言 knife4j是在swagger的基本上做做了一次封装,主要体现在ui表现,所有在使用前必须先搭建好swagger2,其实是swagger和knife都可以访问, 至于哪个好用全看个人! swa ...