android代码安装apk
Android sdk安装及安装APK文件
Android sdk安装及安装APK文件我下载了Android-sdk_r06-windows.zip,解压后运行SDK Setup.exe(有些教程上说是不需要安装的,我不这么认为)在Settings下先勾选Force https://那一项回到Installed Packages下,勾选需要安装的SDK,可以全选(1.2Gb数据量)后面点Refresh,在弹出窗口中选择Accept All,如果单独安装则选中需要安装的包,再点Accept等吧,这时是连接到网上下载的,好了就关闭,OK~安装后,会多一个程序出来:SDK Manager.exe下面运行虚拟机:1,运行SDK Manager.exe=》Virtual Devices=》New=》输入虚机名称、应用的SDK版本、SD卡容量、手机屏的类型在弹出窗口中点默认就好了Create AVD !2,点击创建好的机=》Start...3,等…… 等…… 在PC上运行这东西比真手机要慢多了……安装软件:1,在CMD下进入根目录,再进入Tools目录下2,运行Adb Install 待安装文件名。
3,像这样的:C:\Documents and Settings\Administrator\My Documents\PPC\android-sdk-windows\tools>adbinstall angrybirds.apk885 KB/s (0 bytes in 14826477.016s)pkg: /data/local/tmp/angrybirds.apkSuccess4,到运行着的虚拟机中,点菜单,就会出来已经安装好的程序了。
注:一定要在虚机启动后再安装软件,否则会报错:error: device not found有些教程上说是运行Tools目录下的emulator.exe再安装,发现和我的不一样……。
什么是APK文件,如何在Android手机安装APK文件
什么是APK文件,如何在Android手机安装APK文件虽然Android手机用户可以在电子市场(Android Market)找到几乎所有你需要的应用程序下载并安装。
不过你还是有时候会在论坛和Android应用程序下载网站接触到一种后缀名为APK 的安装文件,APK是Android Package的英文缩写,和诺基亚S60系统的sis文件类似,APK 文件是Android平台移动设备的专用安装文件格式。
APK文件本质上是JAR(Java ARchive)文件的一个变种。
我们之所以要使用到APK文件在Android手机上安装应用程序有以下几种可能:Android开发者想要把自己的应用程序上传到Android电子市场必须交纳25美元的注册费并且进行开通Google Checkout以及绑定信用卡等非常复杂的操作,对国内开发者非常不友好,所以部分开发者只以APK文件方式分发自己的Android程序。
中国大陆Android用户不支持在电子市场购买付费程序,但是很多国外的用户自己购买Android付费程序后通过技术手段导出该程序的APK安装文件,并且在论坛或者相关网站分享给其他用户下载,让我们也可以在Android手机上体验功能更强大的付费应用程序。
Android智能手机和PC一样有时候也需要重新安装系统(刷机),那么在重装系统之前可以通过软件把自己安装的所有程序备份为APK文件,等到系统安装完成后再安装这些APK文件恢复之前的应用程序。
采用这种方式既方便又可以节省网络流量费用。
通过电子市场安装APK文件到Android手机使用下面的办法就可以安装下载的APK文件到手机1.打开Android手机设置菜单,进入应用程序设置,勾选“未知来源”选项,然后进入开发设置,再勾选“USB调试”选项2.拷贝APK安装文件到Android手机内存卡,不一定是内存卡根目录3.从Android电子市场下载一款APK安装软件,电子市场有很多这种类型的软件,比如这款Apk Manager。
在Android sdk安装.apk软件教程(即在电脑上玩.apk游戏)
在Android sdk安装.APK软件教程
安装Android sdk就是为了运行.APK软件,那么如何安装.APK软件呢,按照以下步骤即可:
1下载一款你喜欢的游戏:
2下载完成之后,找到下面的路径(接上篇《Android sdk安装教程》)D:\sdk\android-sdk_r18-windows\android-sdk-windows\platform-tools,把下载下来的APK软件复制到此文件来中,如下图(如果你是将android-sdk_r18-windows.zip解压到了C盘,那么其路径就为C:\sdk\android-sdk_r18-windows\android-sdk-windows\platform-tools)
3‘开始’-‘运行’,新开一个cmd命令窗口,进入D盘,之后进入sdk\android-sdk_r18-windows\android-sdk-windows\platform-tools路径,然后输入“adb install xxx.apk”,这个apk将会安装到你当前的模拟器中去,
然后就可以在主菜单中看到刚才安装的程序了。
这里以安装Cut.APK为例:
此时在打开Android sdk就可以找到安装好的APK软件了。
安装APK文件到ANDROID模拟器 及SHELL安装APK文件到ANDROID模拟器 电脑资料
安装APK文件到Android模拟器及shell安装APK文件到Android模拟器电脑资料一、安装APK文件到Android模拟器Android 使用的执行文件为APK格式,类似于Windows平台的exe 文件,一、首先在Android SDK的Tools文件夹中找到emulator.exe文件并运行,这时Android模拟器就启动了,二、将android123.apk文件复制到Android SDK的Tools目录中(点击下载Android123.apk文件),使用cmd的cd命令定位到Android 模拟器目录Tools中,执行adb install android123.apk命令,这时模拟器将会自动执行安装。
三、在Android模拟器中可以找到我们安装好的文件-Android 之家。
四、用鼠标单击这个文件就可以看到Android 之家网站的演示程序。
写在最后我们可以发现安装Android软件到模拟器很简单,只需要执行adb install命令就可以了,当然其实我们做的是复制文件到Android模拟器的/data/app文件夹,并创立了一个快捷方式。
二、adb命令的使用adb(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以设备或模拟器的状态。
还可以进行以下的操作:1、快速更新设备或模拟器中的代码,如应用或Android系统升级;2、在设备上运行shell命令;3、管理设备或模拟器上的预定端口;4、在设备或模拟器上复制或粘贴文件;以下为一些常用的操作:1、安装应用到模拟器:adb install比拟遗憾的是,Android并没有提供一个卸载应用的命令,只能自己手动删除:adb shellcd /data/apprm app.apk2、进入设备或模拟器的shell:adb shell通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,另外如果只想执行一条shell命令,可以采用以下的方式:adb shell [mand]如:adb shell dmesg会打印出内核的调试信息,3、端口:可以设置任意的端口号,做为主机向模拟器或设备的请求端口。
Android实现静默安装APK的两种方法
Android上的静默安装似乎是个很诱人的功能,好多人都问这个问题。
今天分享下实现静默安装的两种方法,但当看完这篇文章后,仍会让一些人失望滴。
Android把所有的Permission依据其潜在风险(属性名为protectionLevel )划分为四个等级,即"normal "、"dangerous "、"signature "、"signatureOrSystem "。
INSTALL_PACKAGES属于后两者。
让我们看一下官方文档对后两类的描述吧。
"signature ":A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval."signatureOrSystem ":A permission that the system grants only to applications that are in the Android system image or that are signed with the same certificates as those in the system image. Please avoid using this option, as thesignature protection level should be sufficient for most needs and works regardless of exactly where applications are installed. The "signatureOrSystem " permission is used for certain special situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together.所以,这儿介绍的两种方法各自需要的苛刻条件如下:1.内置到ROM。
Android模拟器安装APK文件
Android模拟器安装APK文件一、安装APK文件到Android模拟器Android手机使用的执行文件为APK格式,类似于Windows平台的exe文件。
在Android模拟器中安装APK文件有多种方法,如果你是开发人员,可以通过Eclipse+ADT,使用DDMS(Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等)可以传输文件。
大多数可以直接在Windows 的cmd中操作就可以了。
一、首先在Android SDK的Tools文件夹中找到emulator.exe文件并运行,这时Android模拟器就启动了,二、将android123.apk文件复制到Android SDK的Tools目录中(点击下载Android123.apk文件),使用cmd的cd命令定位到Android 模拟器目录Tools中,执行adb install android123.apk命令,这时模拟器将会自动执行安装。
三、在Android模拟器中可以找到我们安装好的文件-Android手机之家。
四、用鼠标单击这个文件就可以看到Android手机之家网站的演示程序。
写在最后我们可以发现安装Android软件到模拟器很简单,只需要执行adb install命令就可以了,当然其实我们做的是复制文件到Android模拟器的/data/app文件夹,并创建了一个快捷方式。
二、adb命令的使用adb(Android Debug Bridge)是Android 提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。
还可以进行以下的操作:1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;2、在设备上运行shell命令;3、管理设备或手机模拟器上的预定端口;4、在设备或手机模拟器上复制或粘贴文件;以下为一些常用的操作:1、安装应用到模拟器:adb install比较遗憾的是,Android并没有提供一个卸载应用的命令,只能自己手动删除:adb shellcd /data/apprm app.apk2、进入设备或模拟器的shell:adb shell通过上面的命令,就可以进入设备或模拟器的shell环境中,在这个Linux Shell中,你可以执行各种Linux 的命令,另外如果只想执行一条shell命令,可以采用以下的方式:adb shell [command]如:adb shell dmesg会打印出内核的调试信息。
在Android上安装apk软件图文教程
Android软件APK安装方法很简单,下面我就和大家分享一下如何安装APK文件到Android模拟器的图文教程。
1) 首先启动Android模拟器,在Android SDK的Tools文件夹中找到Emulator文件,双击emulator.exe 即可启动模拟器2) 复制需要安装的APK文件到Android SDK的Tools文件夹中(APK和emulator.exe同文件夹),这里我们演示安装的为MobileQQ1.0_Android_Beta2Build0246.apk文件3) 执行Windows 开始菜单=> 所有程序=> 附件=> 命令提示符或通过Win+R 组合键调出运行对话框输入cmd 单击确定即可。
4) (由于我的Android SDK安装路径为E盘,所以需要定位模拟器tools目录) 在cmd命令提示符中输入E: 回车,如图2第一行,接下来输入cd study\Android开发\android-sdk-windows\tools后回车,由于我没有配置环境变量,所以最后执行E:\study\Android开发\android-sdk-windows\tools\adb install MobileQQ1.0_Android_Beta2Build0246.apk执行安装,5) 最后在Android模拟器点击下图中的按键,在展开的界面中就可以看到我们安装好的MobileQQ1.0_Android_Beta2Build0246.apk到此我们就完成了对MobileQQ1.0_Android_Beta2Build0246.apk程序的安装。
下面我让我们来体验一下在Gphone模拟器上运行MobileQQ1.0的效果吧!启动界面:在这里较之在手机要慢上一些。
对于MobileQQ1.0的使用,大家都很熟悉了,我就不多啰嗦了。
按照此方法安装其他软件我试着访问了一下凤凰网:在这里我们能看到网站的整体效果,点击任意一处即可放大浏览希望我的劳动能够帮助一部分朋友!转载请注明网址来源。
电脑安装apk方法
电脑安装apk方法在日常使用中,我们经常会遇到需要在电脑上安装apk文件的情况,比如在进行Android开发时需要在电脑上调试应用程序,或者在使用模拟器的时候需要安装应用程序。
本文将介绍几种常见的电脑安装apk的方法,并提供相应的操作步骤。
方法一:使用Android模拟器Android模拟器是一种能够在电脑上模拟Android系统的工具。
通过它,我们可以在电脑上运行和测试Android应用程序。
下面是使用Android模拟器安装apk的步骤:1. 首先,下载并安装一个Android模拟器,比如[Android Studio](2. 启动Android模拟器,并等待其完全加载。
3. 打开模拟器内置的文件管理器应用,或者通过拖拽apk文件到模拟器窗口来安装apk。
4. 在安装完成后,你可以在模拟器的应用列表中找到并打开该应用程序。
使用Android模拟器安装apk的优点是操作简单,不需要真机设备,适合在开发和测试过程中使用。
但也存在一些缺点,比如模拟器的性能可能较低,无法完全模拟真机上的各种情况。
方法二:使用ADB命令Android Debug Bridge(ADB)是Android开发工具包(SDK)中的一项工具,它可以通过USB连接将电脑与Android设备连接起来,并进行各种调试和操作。
下面是使用ADB命令安装apk的步骤:1. 首先,确保电脑上已经安装了Android SDK,并且ADB的环境变量已经配置好。
2. 将Android设备通过USB线连接到电脑,并确保设备处于开发者模式下。
3. 在电脑上打开命令提示符或终端窗口,输入以下命令以确认设备是否成功连接:adb devices如果设备已连接,则会显示设备的序列号。
4. 将apk文件复制到电脑上的某个目录中,并在命令提示符或终端窗口中切换到该目录。
5. 使用以下命令来安装apk文件:adb install <apk文件路径>6. 在安装完成后,你可以在设备的应用列表中找到并打开该应用程序。
android 代码安装APK
process = Runtime.getRuntime().exec("su");
out = process.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(out);
} catch (Exception e) {
installApk(context, file);
}
}
2、另外一种需要root权限
pm install -r 前面的LD_LIBRARY_PATH=/vendor/lib:/system/lib,在4.0版本以上必须加上,不然会无法安装。
dataOutputStream.writeBytes("chmod பைடு நூலகம்77 " + file.getPath() + "\n");
dataOutputStream.writeBytes("LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r " +
intent.setAction(ACTION_VIEW_HIDE);
intent.setDataAndType(Uri.fromFile(file),
"application/vnd.android.package-archive");
try {
context.startActivity(intent);
1、安装APK
protected static void installApk(Context context, File file) {
Python for Android 安装手册
安装手册(Ver 1)作者:王万清 (ID:WyattWang)Email: wwq0327 at gmail dot com关于本手册关于起源本人挺爱玩手机的,现在手头只有一个Nokia 5800手机,我很喜欢,爱往手机里装着不同的自己可能用的程序,但也是自从有了这部手机后,我才发现iPhone 和 Android手机所能使用的程序比Nokia的在功能上要多,支持更好,可能只是我个人的感觉哈。
希望自己有一部Android手机,但手头这部手机才卖一年多,仍掉了可惜就只好先用着了。
有时也想体验下Android的功能。
最近几个月正在学习Python,也想着写点自己所需要的程序,虽然现在还写不出什么来,但我想我是爱上了Python,就想着将自己的这两个爱好继续下去,于是花了一个晚上的时间,来搞这么一个能运行Python的Android系统。
还算好,本人英文能力很有限,但东拼西凑的还算是把这个系统架起来了,挺高兴的,怕自己以后忘掉了呀,所以又用一个下午的时间来编写这个安装教程,希望自己体验的时候,也能为那些想体验的朋友带去一点帮助。
当然,本人能力有限,有不妥这处,还请理解。
本人是Linux使用者,台式机安装Ubuntu 10.10,本本装的Fedora 14,用得都挺正常的,感觉很好!本手册正是在Fedora上完成!双系统,还有XP和Win7,是D版的,主要满足下老婆用Xunlei看电影的需求。
适合对象使用Python作开发或是正在学习,又想在Android上运行自己想要的程序的朋友,如果你也正在使用Linux,或是正在使用Ubuntu、Fedora,那么就太巧了,我和你一样!欢迎来邮件,一起学习!--王万清2010.11.22更新日志1.2010.11.22,第一版内容目录1 Android SDK 下载 (4)2 更新SDK,并创建虚拟设备 (4)3 启动你的虚拟设备 (6)4 安装Python for Android (8)5 使用Python for Android (11)附I 资源使用记录 (14)附II 参考文章 (14)附III 教程使用工作及其它 (14)1 Android SDK 下载1.1 下载页面/sdk/1.2 根据自己所在平台选用相应平的的S D K,本人在Linux测试,所以使用的是Linux下台下的Android S D K。
Android模拟器Genymotion安装apk
Android模拟器Genymotion安装apk⼀、下载apk选择你需要安装的apk进⾏下载,下载完以后放在与adb.exe同⼀⽬录下;看我的⼆、安装apk遇到的问题开启Genymotion模拟器,然后cmd到你的platform-tools⽬录下,使⽤以下命令进⾏安装。
adb install wxwork.apk1问题⼀:apk安装不成功错误提⽰Installation failed with message INSTALL_FAILED_CPU_ABI_INCOMPATIBLE或者直接把.apk包拖进Genymotion模拟器中,也是出现同样的错误分析:这个问题我也纠结了很久,⽹上找了⼀下,原来是Android⽤Genymotion 调试的时候,如果有.so的库的话,出现Failure [INSTALL_FAILED_NO_MATCHING_ABIS] 错误,并且始终安装不上。
这是因为系统⾥缺少了 Google Play 市场等各种⾕歌服务应⽤,其实是因为版权问题,从 2.0 版本开始 Genymotion 提供的虚拟设备都已经移除了 Google Apps 以及 ARM library support ,所以如果通过软件⾥下载回来的虚拟机,在运⾏⼀些必须依靠这些组件运⾏的 App 时就会出现错误或闪退现象。
是因为模拟器是在x86的处理器上运⾏,⽽⼿机⼀般都是RAM架构的,所以得把模拟器刷成ARM的才⾏。
例如像地图或者浏览器什么的,⾥⾯会包含⼀些so动态库⽂件,这些都是在arm环境下运⾏的。
⽽genymotion现在的发布版本没有带有Genymotion-ARM-Translation.zip,需要⼿动添加!解决⽅法⼀:1、下载 Genymotion-ARM-Translation_v1.1.zip;可以到,如果嫌速度太慢也得可以到;2、.运⾏Genymotion,并start你配置好的virtual device3、将下载好的Genymotion-ARM-Translation_v1.1.zip 拖拽到Genymotion模拟器⾥⾯Genymotion-ARM-Translation_v1.1.zip 拖拽到Genymotion模拟器⾥⾯没有出现安装的情况4、如果把Genymotion-ARM-Translation这个拖进去,没有出现安装,⽽是出现下图这种情况,⽂件被复制到了 Sdcard/loadcard下⾯的话如果⽆法将zip包拖⼊Genymotion中,可下载,解压该⽂件,然后将Genymotion-Setting-ADB⾥⾯的SDK⽬录指向解压⽂件⾥⾯的android-sdk-tools⽬录,这样zip包就可以拖⼊运⾏中的模拟器(即放⼊模拟器的sdcard/Download⽂件夹)。
adb为Android设备模拟器安装app的ADB几种命令行方式以及区别
adb为Android设备模拟器安装app的ADB⼏种命令⾏⽅式以及区别前⾔在Android实际开发中,经常会使⽤adb命令,安装应⽤程序可以使⽤ adb push 或者 adb install 。
(安卓⼿机使⽤adb⼯具安装apk的⽅式最快)下⾯就来讲讲这两种安装⽅式的区别。
区别1、adb push 能够指定安装⽬录。
⽐如执⾏ adb push xxx.apk system/app 后,xxx.apk被安装到了system/app⽬录下,此⽬录下的软件为system application。
(注意,system/app是只读的,所以只有有root权限才能push apk进去,⽽且push进去的apk会把原本的apk覆盖掉。
)adb push 本⾝的意思是将⽂件复制到系统中的某个⽂件夹下;但是将apk push到system/app下并重启⼿机以后同时会成功注册应⽤程序,即该⽅式成功安装应⽤。
【注意】安卓⼿机的 /system/app ⽬录⼤多数都是⼿机中的系统apk;adb push 没有adb install保险,有失败的可能;有时候因 /system/app ⽬录是只读的原因⽽导致在执⾏adb push 命令的时候出现 failed to copy '/home/SoundRecorder.apk' to '/system/app/SoundRecorder.apk': Read-only file system 错误,解决⽅法是只能放弃adb push,采⽤ adb install -r /home/SoundRecorder.apk 强制安装apk例如: adb push xxxx.apk /system/app解释:/system/app⽬录是安卓⼿机中的系统apk应⽤。
(本实例安装到 system/app⽬录下,当然也可以安装到/data/app⽬录下,也是直接安装的。
在cmd或cygwin中看android虚拟机中的文件并把下载的apk程序安装在android机上
cmd窗口1、打开cmd窗口,进入adb.exe所在的文件夹目录,(adb是android中的一个很有用的工具,用来查看android虚拟机中内容,并进行相应操作),因为我的android-sdk-windows是放在D盘上,所以要先进入D盘,直接输入D:如图所示就可以直接进入D盘了,再输入cd android-sdk-windows\platform-tools从而进入了adb.exe所在的目录然后再输入命令:adb shell这时,就进入了虚拟机的根目录,可以用linux命令进行相应的操作了。
2、进入查看相应的文件信息如下:3、如果要退出,回到我们原来的adb所在的主机目录,用exit命令就可以了4、在adb所在的目录下,我们可以把我们主机上已经下载好的后缀名为.apk的程序,通过adb install 命令进行安装,如下图所示,名为whereami.apk的安装程序放在D盘目录下,安装时采用adb install <文件夹所在路径> 的格式就可以进行安装了,安装成功后显示success。
5、我们现在可以查看虚拟机上刚才安装好的程序,蓝色圈出来的就是我们刚才安装的程序了。
cygwin窗口2、打开cygwin窗口,输入命令顺序如下,进入目录后输入的是./adb shell(在执行命名之前都先加上./)与cmd中的输入稍有不同,因为cygwin中一直是用linux命令。
进入了虚拟机的根目录后的操作就与上面是一样的了进入目录后,如果执行一下adb.exe文件,如下图所示,则会显示adb的命令用法3、下面是安装放在d盘上的apk应用程序成功的示例。
4、将虚拟机上的文件导出到主机上面查看,下图中把文件导入到d盘根目录了,显示导出的文件大小3072 bytes,用时0.218s。
编译apk简单方法
编译apk简单方法
编译APK的简单方法有以下几种:
1. 使用Android Studio:在Android Studio中打开项目后,通过点击“Build”菜单中的“Make Project”或“Rebuild Project”选项来编译APK。
编译完成后,APK文件将会生成在项目的“app/build/outputs/apk”目录下。
2. 使用Gradle命令行:在项目根目录下,通过运行“gradlew assemble”命令来编译APK。
编译完成后,APK文件将会生成在项目的“app/build/outputs/apk”目录下。
3. 使用命令行工具(例如Ant):在项目根目录下,通过运行构建工具的命令来编译APK。
具体的命令会根据使用的构建工具而有所不同,一般会指定项目的构建文件(例如
build.xml)和输出目录。
需要注意的是,编译APK前需要先确认项目的依赖库已经正确配置,并且项目中的代码没有语法错误。
另外,编译过程中可能会出现一些错误和警告信息,需要根据具体情况进行调试和修复。
手机APK的安装与卸载方法
手机APK的安装与卸载方法
我是用eclipse结合Android虚拟机为开发工具来开发Android应用
安装apk文件方法:
1.首先启动eclipse,再启动Android虚拟机,我用的是Android4.0
2.然后打开cmd,在自己电脑中找到安装Android虚拟机的文件中的sdk\platform-tools文件,在cmd中进入这个文件
3.进入后,再在cmd中输入adb install 文件路径+文件名,按回车,这样就开始安装了,如图,完成后会提示安装成功,
例如我的apk文件路径为E:\程序\7-Android文件\app-debug.apk,(如图,完成后,按回车键等待一段时间,安装完成后,cmd会输出Success,这就表示安装成功了,接下来就可以在虚拟机中运行了。
卸载apk的方法:
1.进入Android的设置,点击“应用”
2.找到要卸载的应用,点击它
3.点击卸载
4.点击确定,然后就卸载成功了。
Android通过代码安装APK的方法详解
Android通过代码安装APK的⽅法详解在 APK 开发中,通过 Java 代码来打开系统的安装程序以安装 APK 并不是什么难事,⼀般的 Android 系统都有开放这⼀功能。
但随着 Android系统版本的迭代,其对于权限的把控越来越严格,或者说是变得越来越注重安全性。
这就导致了以前可以通过很简单的⼏⾏代码就能实现的功能,现在要复杂很多。
对于通过代码打开系统安装程序这⼀功能的限制,其分⽔岭在 Android7.0,即 Android N 上。
通常在 Android N以上的系统使⽤⼀种做法,以下则使⽤另⼀种做法。
传统的通过代码安装APK的⽅式File apk = new File(...);Uri uri = Uri.fromFile(apk);Intent intent = new Intent();intent.setClassName("com.android.packageinstaller", "com.android.packageinstaller.PackageInstallerActivity");intent.setData(uri);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);这种⽅法简单粗暴且实⽤,只要知晓要安装的 APK 的位置,并拥有访问权限即可。
但现在市⾯上主流的 Android ⼿机系统版本都已经要⾼于 7.0 了,这⼀⽅法⼏乎已经没有⽤了⾼版本系统上的通过代码安装APK的⽅式File apk = new File(...);Intent intent = new Intent(Intent.ACTION_VIEW);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);Uri uri = FileProvider.getUriForFile(this, "com.apk.demo.fileprovider", apk);intent.setDataAndType(uri, "application/vnd.android.package-archive");startActivity(intent);说到权限问题,在Android版本不断提⾼的趋势下,系统得安全性也越来越⾼,很多权限不只是在清单⽂件⾥⾯注册那么简单,内存卡得读写权限属于危险权限,需要我们使⽤代码动态添加,这⾥我使⽤了RxPermiision框架,遇到9.0或者更⾼版本的系统时获取权限的⽅法可能会不同。
AndroidAPK应用安装原理...
AndroidAPK应⽤安装原理...本⽂实例讲述了Android APK应⽤安装之AndroidManifest使⽤PackageParser.parserPackage原理。
分享给⼤家供⼤家参考,具体如下:Android 安装⼀个APK的时候⾸先会解析APK,这⾥要做很多事情,其中⼀个事情就是解析Manifest.xml⽂件,并将所有APK 的Manifest封装到各种对象中并保存在内存当中解析Manifest的类是⾮常重要的,该类就是frameworks\base\core\java\android\content\pm\PackageParserPackageManagerService会调⽤PackageParser.parserPackage⽅法来解析APK清单,下⾯开始分析PackageParser的实现:PackageParser是使⽤的XMLPullParser⼯具来对XML进⾏解析的,然后分别通过android.content.pm下各种xxxInfo类来进⾏封装:public Package parsePackage(File sourceFile, String destCodePath,DisplayMetrics metrics, int flags) {//最后要跑出的解析错误信息mParseError = PackageManager.INSTALL_SUCCEEDED;//获得要解析的⽂件的路径mArchiveSourcePath = sourceFile.getPath();//如果要解析的不是⽂件类型就跳过并且返回该⽅法if (!sourceFile.isFile()) {Log.w(TAG, "Skipping dir: " + mArchiveSourcePath);//更新错误信息mParseError = PackageManager.INSTALL_PARSE_FAILED_NOT_APK;return null;}//如果⽂件不是以.apk结尾并且flag没有确定⼀定是APK,那么也返回if (!isPackageFilename(sourceFile.getName())&& (flags&PARSE_MUST_BE_APK) != 0) {if ((flags&PARSE_IS_SYSTEM) == 0) {// We expect to have non-.apk files in the system dir,// so don't warn about them.Log.w(TAG, "Skipping non-package file: " + mArchiveSourcePath);}//更新错误信息mParseError = PackageManager.INSTALL_PARSE_FAILED_NOT_APK;return null;}if ((flags&PARSE_CHATTY) != 0 && Config.LOGD) Log.d(TAG, "Scanning package: " + mArchiveSourcePath);XmlResourceParser parser = null;AssetManager assmgr = null;boolean assetError = true;try {assmgr = new AssetManager();//将⼀个⽂件添加到AssetManager中并返回⼀个唯⼀标识int cookie = assmgr.addAssetPath(mArchiveSourcePath);if(cookie != 0) {//通过标识去AssetManager中找到标识对应资源中的Manifest清单⽂件,并返回⼀个XML的解析器parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml");//⾛到这⾥证明⼀切顺利assetError = false;} else {Log.w(TAG, "Failed adding asset path:"+mArchiveSourcePath);}} catch (Exception e) {Log.w(TAG, "Unable to read AndroidManifest.xml of "+ mArchiveSourcePath, e);}if(assetError) {if (assmgr != null) assmgr.close();mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_MANIFEST;return null;}String[] errorText = new String[1];Package pkg = null;Exception errorException = null;try {// XXXX todo: need to figure out correct configuration.Resources res = new Resources(assmgr, metrics, null);//这个是真正在解析的package的⽅法,是private methodpkg = parsePackage(res, parser, flags, errorText);} catch (Exception e) {errorException = e;mParseError = PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION; }if (pkg == null) {if (errorException != null) {Log.w(TAG, mArchiveSourcePath, errorException);} else {Log.w(TAG, mArchiveSourcePath + " (at "+ parser.getPositionDescription()+ "): " + errorText[0]);}parser.close();assmgr.close();if (mParseError == PackageManager.INSTALL_SUCCEEDED) {mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; }return null;}parserPackage调⽤了重载的另外⼀个parserPackageprivate Package parsePackage(Resources res, XmlResourceParser parser, int flags, String[] outError)throws XmlPullParserException, IOException {AttributeSet attrs = parser;//每次调⽤这个⽅法时候清空这些变量mParseInstrumentationArgs = null;mParseActivityArgs = null;mParseServiceArgs = null;mParseProviderArgs = null;//这⾥调⽤这个⽅法获得包名String pkgName = parsePackageName(parser, attrs, flags, outError);if (pkgName == null) {mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME; return null;}int type;final Package pkg = new Package(pkgName);boolean foundApp = false;//从资源⾥获得AndroidManifest的数组TypedArray sa = res.obtainAttributes(attrs,com.android.internal.R.styleable.AndroidManifest);//继续挖掘出版本号pkg.mVersionCode = sa.getInteger(com.android.internal.R.styleable.AndroidManifest_versionCode, 0);//获取版本名pkg.mVersionName = sa.getNonConfigurationString(com.android.internal.R.styleable.AndroidManifest_versionName, 0);if (pkg.mVersionName != null) {pkg.mVersionName = pkg.mVersionName.intern();}//获得sharedUserIdString str = sa.getNonConfigurationString(com.android.internal.R.styleable.AndroidManifest_sharedUserId, 0);if (str != null && str.length() > 0) {//验证包名是否符合规则String nameError = validateName(str, true);if (nameError != null && !"android".equals(pkgName)) {outError[0] = "<manifest> specifies bad sharedUserId name \""+ str + "\": " + nameError;mParseError = PackageManager.INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID; return null;}pkg.mSharedUserId = str.intern();pkg.mSharedUserLabel = sa.getResourceId(com.android.internal.R.styleable.AndroidManifest_sharedUserLabel, 0);}sa.recycle();//安装的位置pkg.installLocation = sa.getInteger(com.android.internal.R.styleable.AndroidManifest_installLocation,PARSE_DEFAULT_INSTALL_LOCATION);// Resource boolean are -1, so 1 means we don't know the value.int supportsSmallScreens = 1;int supportsNormalScreens = 1;int supportsLargeScreens = 1;int resizeable = 1;int anyDensity = 1;int outerDepth = parser.getDepth();//关键时刻到了,真正的开始解析了while ((type=parser.next()) != parser.END_DOCUMENT&& (type != parser.END_TAG || parser.getDepth() > outerDepth)) {if (type == parser.END_TAG || type == parser.TEXT) {continue;}String tagName = parser.getName();if (tagName.equals("application")) {if (foundApp) {if (RIGID_PARSER) {outError[0] = "<manifest> has more than one <application>";mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED;return null;} else {Log.w(TAG, "<manifest> has more than one <application>");XmlUtils.skipCurrentTag(parser);continue;}}foundApp = true;if (!parseApplication(pkg, res, parser, attrs, flags, outError)) {return null;}} else if (tagName.equals("permission-group")) {if (parsePermissionGroup(pkg, res, parser, attrs, outError) == null) {return null;}} else if (tagName.equals("permission")) {if (parsePermission(pkg, res, parser, attrs, outError) == null) {return null;}} else if (tagName.equals("permission-tree")) {if (parsePermissionTree(pkg, res, parser, attrs, outError) == null) {return null;}} else if (tagName.equals("uses-permission")) {sa = res.obtainAttributes(attrs,com.android.internal.R.styleable.AndroidManifestUsesPermission);// Note: don't allow this value to be a reference to a resource// that may change.String name = sa.getNonResourceString(com.android.internal.R.styleable.AndroidManifestUsesPermission_name);sa.recycle();.........................................................................................................................................................篇幅有限这⾥分别把每种不同的element⽤不同的⼩⽅法去解析,他们的调⽤顺序是:这些⼩⽅法⾥其实还是有很多⼩技巧的,有兴趣的话可以细细品位更多关于Android相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家Android程序设计有所帮助。
android备份apk安装过程及原理
Android备份APK安装过程及原理1. 概述Android系统的apk(Android应用程序包)格式是安卓应用程序的标准文件格式,开发者可以将应用程序打包成apk文件,以便用户下载和安装它们。
在某些情况下,您可能需要备份您的应用程序或者安装已经备份的应用程序。
本文介绍了Android备份apk安装的过程和原理。
2. 备份APK的过程2.1 使用Android SDK命令行工具备份使用Android SDK命令行工具可以将安装在设备上的当前应用程序备份到计算机。
以下是备份APK的具体步骤:1.通过USB将设备连接到计算机并启动设备。
2.在计算机上打开命令行提示符或终端窗口。
3.切换到< Android SDK 单目录>\platform-tools目录。
4.在命令行提示符中输入以下命令:adb backup -apk -shared -all -f <文件名>.ab- `-apk` 选项表示将APK文件一起备份到备份文件中。
- `-shared` 选项表示将应用程序的共享存储备份到备份文件中。
- `-all` 选项表示将应用程序的所有数据,包括剪贴板数据、联系人、日历数据等,备份到备份文件中。
- `-f` 选项表示备份文件的名称。
5.摘下USB连接并确保备份文件保存在计算机上。
2.2 使用第三方应用程序备份您可以在Google Play商店或其他来源中下载第三方应用程序,如 Helium或Titanium Backup等,这些应用程序可以让您备份和还原您的应用程序、系统数据和设置等。
以下是使用 Helium 应用程序备份APK的具体步骤:1.在Google Play商店中下载Helium备份应用程序。
2.启动Helium应用程序,并根据提示进行操作以启用USB调试。
3.在备份选项卡中选择您需要备份的应用程序。
4.点击“备份”按钮,Helium将创建备份并保存在设备的内部存储器或SD卡上。
android模拟器安装apk的两种方法
android模拟器安装apk的两种⽅法
今天同学问到了apk怎么安装到模拟器上,研究⼀下,发现两种⽅法⽐较简单:
⼀,把所要安装的apk,例xxx.apk拷贝到sdk下的adb的路径下,也就是和adb在同⼀个⽂件夹,⽐如我的是D:\Program Files\Android\sdk\platform-tools。
然后进⼊cmd,进⼊刚路径下,输⼊adb install xxx.apk,等段时间后即可看到安装成功,也有提⽰出现。
当然前提是你的模拟器⼀定是要启动好了。
⼆,从eclipse中安装,前提也是启动好模拟器,进⼊DDMS,然后点左下⾓的 +号按钮,选择file explore,点开data,看到app进去,然后把你要安装的xxx.apk拖进去,放在app⽂件夹下,然后在看你的模拟器,是不是看到你的apk已经安装进去了。
个⼈感觉第⼆种⽅法更快更直接。
条条⼤路通罗马,但前提是都必须要开好模拟器!。
如何安装APK文件到自己的android手机里?
你把你的 android 手机和电脑连接后打开 91 for android 手机助理 然后他就会自
动帮你下载驱动 同时会连接手机。
如何安装 APK 文件到自己的 android 手机里?
很多朋友刚拿到 G1 的时候大概首先就是要往里面装软件了,在 ANDROID 平台 下安装文件的后缀名为“.apk”,就好像 PC 上的安装文件的后缀名为“.exe”塞班平 台安装文件的后缀名为“.sis”一样,所以我们一般称 ANDROID 平台下安装文件 为“APK”。
手机上首先要进行一些设置,设置——应用程序——勾选“未知源” 设置——应用程序——开发——勾选“USB 调试”
方法一
运用 APK 安装器,就是将 APK 文件安装到手机上的一个 PC 端软件,我们首先需 要下载一个 USB 驱动,在 PC 上安装好“APK 安装器”,这个软件会自动关联你 的 APK 程序,只要双击一下 APK 程序就可以自动安装到你的手机里了。 点击 下载 APK 安装器(HiAPK Installer)1.0 版正式发
ห้องสมุดไป่ตู้
备 文件 安装就行
然后从手机的资源管理器上找到该
方法三
设置——应用程序——APK 安装器 只要把 APK 程序都放到 SD 卡上,就可以直接在这个内置的 APK 安装器上进行
软件的安装与卸载。
选择应用程序
点击 APK 安装器
然后他就会自动扫描 SDCARD 上的文件
显示该文件
点击安装即可 然后再从你的菜单里面找到该文件 安装成功!
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Log.e("OpenFile", file.getName());
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
Environment拥有一些可以获取环境变量的方法
package:com.demo.CanavaCancel 这个形式是 package:程序完整的路径 (包名+程序名).
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file),
"application/vnd.android.package-archive");
if (is != null) {
int numRead = is.read(buf);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
InputStream is = conn.getInputStream();
startActivity(intent);
}
if (numRead <= 0) {
break;
} else {
double count = 0;
if (conn.getResponseCode() >= 400) {
Toast.makeText(Main.this, "连接超时", Toast.LENGTH_SHORT)
//下载apk程序代码
protected File downLoadFile(String httpUrl) {
// TODO Auto-generated method stub
final String fileName = "updata.apk";
Android程序使用代码的安装和卸载!!ห้องสมุดไป่ตู้
安装:
String str = "/CanavaCancel.apk";
String fileName = Environment.getExternalStorageDirectory() + str;
Intent intent = new Intent(Intent.ACTION_VIEW);
}
}
conn.disconnect();
fos.close();
e.printStackTrace();
}
return file;
}
//打开APK程序代码
private void openFile(File file) {
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[256];
conn.connect();
final File file = new File("/sdcard/update/" + fileName);
try {
URL url = new URL(httpUrl);
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
startActivity(intent);
卸载:
Uri packageURI = Uri.parse("package:com.demo.CanavaCancel");
} else {
break;
}
File tmpFile = new File("/sdcard/update");
if (!tmpFile.exists()) {
tmpFile.mkdir();
}
.show();
} else {
while (count <= 100) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
fos.write(buf, 0, numRead);
}