linuxandroid程序
㈠ linux和安卓具体是存在什么关系
Android一种基于Linux的自由及开放源代码的操作系统。Linux操作系统的内核,安卓则是基于Linux内核开发的操作系统,安卓在Linux的基础上提供了驱动以及用户编程接口。
操作系统管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
Android以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。
Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。
(1)linuxandroid程序扩展阅读
APK安卓应用的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非java ME的字节码而是Dalvik字节码。
Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别;
这样做对于程序的保密性和可靠性不是很高,通过dexmp命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。
在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。
最终平时安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。
㈡ linux下可以安装安卓应用吗
您好
一般是不可以的,安卓应用程序只能在安卓系统的设备上安装使用,在其他系统上是不能安装的。
㈢ linux下的应用程序移植到android系统,求思路!
如果是JAVA之类的代码,可能移植难度要低些。移植程序是个苦活,与其没完没了的调试,还不如按照原来的设计思路和功能重新写代码呢。
㈣ 如何流畅得在所有linux发行版上跑android的apk程序
Android的底层是Linux内核,因此在shell环境下可以运行Linux命令,尤其是经过root处理的android系统,基本上可以通过调用Linux命令完全控制手机,下面的RootCmd.java代码可以实现运行Linux外部命令。
packagemy.android.code;importandroid.os.Environment;importdalvik.annotation.Signature;importjava.io.BufferedReader;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileReader;importjava.io.InputStream;importjava.io.OutputStream;importjava.util.Vector;publicfinalclassRootCmd{//执行linux命令并且输出结果(StringparamString){VectorlocalVector=newVector();
try{ProcesslocalProcess=Runtime.getRuntime()。
exec(“su”);
//经过Root处理的android系统即有su命令OutputStreamlocalOutputStream=localProcess.getOutputStream();
=newDataOutputStream(localOutputStream);
InputStreamlocalInputStream=localProcess.getInputStream();
=newDataInputStream(localInputStream);
Stringstr1=String.valueOf(paramString);
Stringstr2=str1+“\n”;localDataOutputStream.writeBytes(str2);
localDataOutputStream.flush();
Stringstr3=localDataInputStream.readLine();
localVector.add(str3);
localDataOutputStream.writeBytes(“exit\n”);
localDataOutputStream.flush();
localProcess.waitFor();
returnlocalVector;}catch(ExceptionlocalException){localException.printStackTrace();
}}//执行linux命令但不关注结果输出(StringparamString){try{ProcesslocalProcess=Runtime.getRuntime()。
exec(“su”);
ObjectlocalObject=localProcess.getOutputStream();
=newDataOutputStream((OutputStream)localObject);
Stringstr=String.valueOf(paramString);
localObject=str+“\n”;localDataOutputStream.writeBytes((String)localObject);
localDataOutputStream.flush();
localDataOutputStream.writeBytes(“exit\n”);
localDataOutputStream.flush();
localProcess.waitFor();
localObject=localProcess.exitValue();
returnlocalObject;}catch(ExceptionlocalException){localException.printStackTrace();
}}//判断机器Android是否已经root,即是否获取root权限(){inti=execRootCmdSilent(“echotest”);
//通过执行测试命令来检测if(i!=-1)returntrue;retrunfalse;}}
㈤ linux怎么搭建android开发环境
一、安装jdk,具体步骤如下:
1,将jdk-7u4-linux-i586.tar拷贝到linux下得/home/yan/download目录,新建一个目录/home/yan/android.所以和android相关的都安装到/home/yan/android这个目录,所有的源安装文件都放到download下。切换到root,在download目录下输入命令:tar -zxvf jdk-7u4-linux-i586.tar -C ../android, 将其解压到android目录。
2,配置环境变量,Linux下需要修改/etc/profile文件,使用 gedit /etc/profile
在这个文件的最后,输入:
export JAVA_HOME=/home/yan/android/jdk1.7.0_04
export PATH=$PATH:$JAVA_HOME/bin
点击保存后,输入:source /etc/profile使生效。输入:java -version
验证java环境是否配置好。
二、安装AndroidSDK
1,将android-sdk_r18-linux复制到download文件夹下,进入download然后: tar -zxvf android-sdk_r18-linux.tgz -C 。。/android/ 进行解压。
接下来 cd /home/yan/android/android-sdk-linux/tools, 然后运行:。/android,这个是用来启动android sdk manager的,也就是说这个东西是用来下载真正的android开发包。运行的时候,会出现:
(java:2925): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”,
(java:2925): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”,
(java:2925): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”,
(java:2925): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“pixmap”,
这种警告,这是gtk版本太低所导致的。
先关闭android sdk manager,终端输入:sudo apt-get install gtk2-engines-pixbuf 升级一下gtk。
2,升级完毕后,再次打开android sdk manager,这个是在线安装,一定确保联网。里面的api8 对应android2.2版本,api13对应android3.2版本,api10对应android2.3.3版本。这几个都是经典的android版本。最上面的事api15对应android4.0.3版本,这个是最新的。默认已经给我们选择了。这里我们选择前四个。最上面的四个打勾,然后确定。就会自动下载了。下载完成后,会提示重启这个android sdk manager
三、安装eclipse
1,将eclipse-jee-indigo-SR2-linux-gtk.tar复制到download,然后解压到android下。不再重复。
解压命令:tar -zxvf eclipse-jee-indigo-SR2-linux-gtk.tar.gz -C 。。/android/
2,进到android/eclipse目录下,输入命令。/eclipse查看 装成功了没有。
四、安装ADT 和 (NDK)
1,在google里的android sdk下载地址里,找到ADT-18.0.0,这个是和android sdk4.0.3相对应的版本,是个zip文件。拷贝到download文件夹下。
2,打开eclipse,点help--install new software,点add--archive,这里用的是离线安装的方法,也可以在线安装。离线安装会比较快吧。点select all,然后点next就进行安装了。点好后,会出现一个Installing software的提示框,显示进度。安装完成后,会提示重启。
注:adt是android develop tool的意思,实现沟通 eclipse和 android sdk的桥梁,所以必须得安装好。
3,设置android sdk location,即告诉eclipse android的sdk在什么地方。重启后,会提示:Welcome to android development,选第二个;use eixsting SDKs,设置路径。
原来adt18.0.0这个版本过时了,这是2012年4月份时的版本,需要安装最新的7月发布的那个。
在workwith里输入:https://dl-ssl.google.com/android/eclipse/,他会自动检测,列出的有DevelopTools,里面有ddms、adt等共四个,另外一个是NDK-plugins 反正要用到,索性一块安了。NDK是本地化的一个工具,说白了是一个交叉编译器,编译本地的c/c++代码成一个动态链接库,供android下得java程序调用。当然程序要满足JNI接口。
提示不能安装ndk,ndk安装前 需要安装cdt插件!这个步骤里只能升级下 adt了。从adt18.0.0 升级到20.0.0.
重启,后打开eclipse,点window-preferrence,点android,制定android sdk文件夹路径。点new project看能否找到android application。。,如能,则这一步安装成功。
五、安装CDT插件
google 一下cdt,进入下载链接,下载cdt8.0.0版本,按照上面安装adt的方法 进行安装。安装成功的标志是,可以新建c/c++工程。
六、NDK插件的安装
google NDK的下载地址,下载后拷到download文件夹下,然后直接解压缩就可以了。export PATH=$PATH:/home/yan/android/android-ndk-r8,然后 source。
上面就是Linux/Ubuntu 11.10搭建Android4.0.3开发环境的方法介绍了,在安装AndroidSDK前,需先安装jdk,然后再进行相关软件的安装及配置。
㈥ 如何在Linux平台下编译android工程
我是在windows下做开发的,但是编译环境还是在linux上。。大体的步骤如下:
1.首先在windows环境下编写工程(eclipse下编写android工程)
2.打开linux开发环境(tcl平台:\\10.120.90.207\longc\workspace\code\project\kernel\android\JB)
3.将运行环境的脚本文件运行./evnsetup:配置android运行环境
/JB/build/
找到envsetup.sh
运行.envsetup.sh(source envsetup.h或./envsetup)
所有操作都在终端完成
4.将工程文件拷贝到指定目录下(TCL平台下的自带程序在package\TCL_Apps目录下)
5.删除一些文件
保留/res,/src,AndroidManifest.xml三个文件
创建Android.mk(makefile文件,linux下用makefile文件来集成一些命令,运行程序的指令和设置都在此处)Android.mk的编写
6.编译
进入工程文件目录
输入mm命令进行编译。
7.生成apk文件,编译完成
㈦ 怎么在Android程序里加载linux内核模块
工具/原料
Android程序里加载linux内核模块
方法/步骤
java层。 java.lang.Runtime's exec() methods:native层就是jni了。
可以用popen() 。
但指令知否支持就得看bionic了。
也可以尝试system() and pipe。
普通apk不可能有root权限,除非机器被root了,使用Runtime.exec之类的执行su -c insmod xx.kosu为root的象征,配合superuser使用 。
在终端下使用su进入root用户,然后insmod xx.ko这个肯定可以成功的,因为insmod在root用户下执行的。但是Java的Runtime.exec()也好,Native层execl()也好,只能用su -c命令临时在root用户下执行一条指令。adb shell进入终端,普通用户下执行su -c insmod xx.ko,会发现命令执行失败,失败原因就是需要注意的地方,su的-c参数只把下一个变量作为可执行的指令,因此其执行的命令是insmod而参数并没有传递过去,xx.ko作为了su的参数,因此如果想执行成功我们需要使用su -c "insmod xx.ko",将传递给insmod的参数和命令组合成一个参数。这样的话在Java层和Native层执行失败的问题也可以解决了,在Runtime.exec()中将命令格式进行格式化,比如Runtime.exec(“su -c ” + "\"insmod xx.ko\"" ),或者在Native中执行execl("/sytem/bin/su","/sytem/bin/su","-c","insmod xx.ko", NULL),这样最终传递给shell的命令就是su -c "insmod xx.ko"了。
㈧ Linux内核怎样启动Android
那么Linux内核和Android什么关系?Linux内核是怎样引导起Android呢?本文进行简单的描述。 Android虽然建立在Linux内核之上,但是他对内核进行了一些扩展,增加了一些驱动。比如Binder,loger等等驱动。可以拿Android内核代码和其Baseline版本进行对比。可以看到Android对Linux内核的所有扩展。 熟悉Linux启动的朋友知道,首先Linux引导完成之后,会启动用户态的init进程(pid为0),这个进程在整个系统运行过程中起着非常重要的作用,如果你对init进程不了解请查相关资料。init完成系统的初始化工作,然后进入shell,接收用户的输入。 Android启动也没有什么神秘的,就是用自己的init进程替换了Linux内核的init进程,完成自己初始化工作(设备,文件系统等等初始化)。然后启动自己的虚拟机,程序等等的东西。Android的init进程的代码位于system/core/init/init.c下面,可以去查看其源码,来了解Android启动详细流程。Android启动流程的资料网上已经比较多,这里就不赘述了。 可以看到移植Android过程中,调试init非常重要。因为所有和硬件平台相关的东西都这里初始化,所以init进程有可能需要移植或者配置。其他的进程都是和硬件无关的,理论上不需要修改就应该能够运行起来。 经过上面的描述可以看出,Android的init进程起着一个承上启下的作用。
㈨ 在linux下怎么给android手机预安装一个软件
用Linux系统连接手机后,在手机里面打开"USB调试",打开终端:输入:
安装:
adb install xxx.apk
卸载:
adb uinstall com.xxx.xxx
注意卸载的时候要指定包名.
㈩ 有没有在Linux上运行安卓应用的工具
我用的卓懿应用商城,这个商城里的安卓应用比较多,兼容性好,程序运行也比较流畅,之前也用过anbox,但应用经常出现闪退、提示错误,这些问题挺折磨人的,还有很多应用还不支持,卓懿应用商城用来日常办公娱乐基本没遇到过啥问题,一直在用这个。网络谢邀