
正文
linuxapk命令 linux deploy apk
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux常用命令
列出当前目录的文件
常用参数:
-a: 显示当前目录的所有文件,包含隐藏文件;
-l: 显示文件详情;
-Z: 显示文件的 SE Linux context。
示例:ls -laZ [if !vml] [endif] 以 acct 为例: drwxr-xr-x:其中 d 代表该文件为目录,若为 l 则为软链接,软连接后又箭头代表其实际指向的文件,如etc - /system/etc 则访问 etc 实际等同访问/system/etc,留空则代表该文件为一个文件;rwxr-xr-x 代表其权限为 755,具体算法为将上述字段每 3 个分为 1 组得 rwx,r-x,r-x,凡是有字母标记的皆计数 1,反之为 0,得二进制 111,101,101,转为 10 进制数字即得7, 5,5 ,即为该文件权限; root root :依次代表该文件的所有者(owner)为 root,用户组(group)为 root,上述属性可通过 chown 命令修改,日常替换文件需与原文件该属性维持一致; unlabeled:代表 SE Linux context。
前往指定目录
更改文件所有者和用户组 示例:chown root:root temfile 将 tmpfile文件 的所有者和用户组从 meidia:media 更改为 root:root
将文件内容显示出来。
注意不要随便去 cat 一个很大的文件或与 log 驱动节点无关的文件,否则将造成串口输出乱码或死机!!!示例:cat /proc/kmsg 将打印出所有 kernel log。
用于抓取 android logcat 打印。
常用参数:
-v : 设置打印格式,可用选项为 brief process tag thread raw time threadtime long,我们比较常用 logcat -v time,此时抓的 log 将在每一行开头添加时间信息;
-s : 设置过滤器,过滤器的选择取决于软件中打印 log 时使用的 TAG ,如
ActivityManagerService.java 中的打印使用的 TAG = ActivityManager,则抓相关打印方法为 logcat -s ActivityManager;
-c : 清除 log 缓存,常用于清除之前的打印缓存,如复现某个必现问题,则可先执行 logcat -c 再抓 logcat 重现必现手法以排除无关 log 冗余信息影响问题定位; pm
包管理命令,用于管理安卓 app 应用。
常用参数:
-l : 显示所有安装包应用,等同于 pm list packages
以 package:/system/priv-app/Launcher2.apk=com.android.launcher 为例:
Apk Launcher2 路径位于/system/priv-app/Launcher2.apk,其包名为 com.android.launcher
path : 根据报名返回所在 apk 路径
install : 安装 apk
-r :安装一个已经存在的 apk 并保留其数据;
-d : 允许降级安装
如:pm install -r xxx.apk
uninstall : 卸载 apk,命令仅支持卸载 data/app,后接包名;
如:pm uninstall com.sys.migusmartlink.ott.tv //卸载包名为 com.sys.migusmartlink.ott.tv 的 apk
随机测试指令,会自动模拟一些用户操作对 APP 进行压力测试。
常用参数:
-p :指定启动的 APK,我们比较常用的是 monkey -p com.xxx.yyy 1 来启动一个 apk 的随机页面。
用于启动和管理 activity 和 service
常用参数:
start : 后接 intent 启动一个页面;
startservice : 后接 intent 启动一个 service; stopservice :后接 intent 停止一个 service; broadcast :后接一个 intent 发送一个广播; kill :后接一个 app 包名,杀掉该 app 所有进程;在 shell 环境下用如下参数表述一个 intent:
[-a ACTION] [-d DATA_URI] [-t MIME_TYPE]
[-c CATEGORY [-c CATEGORY] ...]
[-e|--es EXTRA_KEY EXTRA_STRING_VALUE ...]
[--esn EXTRA_KEY ...]
[--ez EXTRA_KEY EXTRA_BOOLEAN_VALUE ...]
[--ei EXTRA_KEY EXTRA_INT_VALUE ...]
[--el EXTRA_KEY EXTRA_LONG_VALUE ...]
[--ef EXTRA_KEY EXTRA_FLOAT_VALUE ...]
[--eu EXTRA_KEY EXTRA_URI_VALUE ...]
[--ecn EXTRA_KEY EXTRA_COMPONENT_NAME_VALUE]
[--eia EXTRA_KEY EXTRA_INT_VALUE[,EXTRA_INT_VALUE...]]
[--ela EXTRA_KEY EXTRA_LONG_VALUE[,EXTRA_LONG_VALUE...]]
[--efa EXTRA_KEY EXTRA_FLOAT_VALUE[,EXTRA_FLOAT_VALUE...]]
[-n COMPONENT] [-f FLAGS]
示例:
如我们在 logcat 抓到如下打印启动了播放器:
START u0 {act=android.intent.action.VIEW dat=[4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 typ=video/* flg=0x13000000 cmp=com.meson.videoplayer/.VideoPlayer} from pid 15204
则我们可以使用如下 am 指令来启动它:
am start -a android.intent.action.VIEW -d [4KH265_60.000fps_9Mbps]Wetek-Astra-2m.mp4 -t video/* -f 0x13000000 -n com.meson.videoplayer/.VideoPlayer am start -n com.android.settings/.Settings //启动原生安卓设置主页
am broadcast -a com.chinamobile.action.KEY_PRESS_DOWN --ei keyCode 11 am broadcast -a com.chinamobile.action.IR_TEST --es irphycode "0x008EDD22" //发送广播
查找命令,查找文件中是否包含指定字符串并输出该行示例:
grep -rns "repeat" /system/etc/remote1.conf //找出/system/etc/remote1.conf 所有包含 repeat 的行并展示行号
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
命令示例:cp -a a parentPath/sonPath/ a对应当前文件夹下目录或文件名 可替换为绝对路径
移动指令,等效于 windows 的移动和重命名。
示例:
mv /data/tmp1 /data/local/tmp2 //将 data/tmp1移动到/data/local/ 并重命名为 tmp2
删除指令,用于删除文件和文件夹,示例:
rm -rf tmp // 删除 tmp,建议加上-rf参数,其会删除 tmp 所有的目录和文件。
创建目录。常用参数:
-p :若 mkdir -p 后接路径包含不存在路径则一并创建。
同步命令,常用于 cp 替换文件或指令结束后同步状态,有益无害。
重定向,即将一个命令的输出指向另外路径的文件,使用覆盖模式,即重定向到的文件若存在将覆盖里面的内容。
示例:
logcat /data/xxx.log; //将 logcat输出到/data/xxx.log;
cat /proc/kmsg /data/kmsg.log; //将 kmsg 打印输出重定向到/data/kmsg.log
重定向,即将一个命令的输出指向另外路径的文件,使用拼接模式,即重定向到的文件若存在则将输出拼接到原文件的后面。
示例:
logcat /data/xxx.log; //例如我们做 netreboot的时候需要每一次开关机的 log,则会用拼接模式记录log。
将指令放至后台静默执行。
依次执行指令,若有指令执行失败,则后续指令不会执行。
示例:
logcat -c logcat //先清除 logcat 缓存再抓取 log
相关问答
Q1: 如何在APK程序里执行linux命令
package my.android.code;
import android.os.Environment;
import dalvik.annotation.Signature;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Vector;
public final class RootCmd
{
//执行linux命令并且输出结果
protected static Vector execRootCmd(String paramString)
{
Vector localVector = new Vector();
try
{
Process localProcess = Runtime.getRuntime().exec("su ");//经过Root处理的android系统即有su命令
OutputStream localOutputStream = localProcess.getOutputStream();
DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);
InputStream localInputStream = localProcess.getInputStream();
DataInputStream localDataInputStream = new DataInputStream(localInputStream);
String str1 = String.valueOf(paramString);
String str2 = str1 + "\n";
localDataOutputStream.writeBytes(str2);
localDataOutputStream.flush();
String str3 = localDataInputStream.readLine();
localVector.add(str3);
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
return localVector;
}
catch (Exception localException)
{
localException.printStackTrace();
}
}
//执行linux命令但不关注结果输出
protected static int execRootCmdSilent(String paramString)
{
try
{
Process localProcess = Runtime.getRuntime().exec("su");
Object localObject = localProcess.getOutputStream();
DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream)localObject);
String str = String.valueOf(paramString);
localObject = str + "\n";
localDataOutputStream.writeBytes((String)localObject);
localDataOutputStream.flush();
localDataOutputStream.writeBytes("exit\n");
localDataOutputStream.flush();
localProcess.waitFor();
localObject = localProcess.exitValue();
return localObject;
}
catch (Exception localException)
{
localException.printStackTrace();
}
}
//判断机器Android是否已经root,即是否获取root权限
protected static boolean haveRoot()
{
int i = execRootCmdSilent("echo test"); //通过执行测试命令来检测
if (i != -1) return true;
retrun false;
}
}
Q2: alpine linux怎么安装文件
apk --update add ×××(×××是软件名字)
eg:
apk --update add openssl
apk --update add openssl-dev
执行命令后linuxapk命令,会从数据源中寻找最新版本来安装对应软件包。
这是两个apklinuxapk命令的数据源(阿里和清华,还有一个数据源我忘记了一般我就用这两个),交叉编译的安装包,alpine最快也是最小空间安装。
echo "" /etc/apk/repositories
echo "" /etc/apk/repositories
Q3: 在实体机可以消费docker中fetch超时
1、超时原因
外部网站,国内访问时可能会超时
2、解决方法
修改Dockerfile,使用国内的alpine源
2.1、正确的做法
正确的做法是使用国内源完全覆盖 /etc/apk/repositories
在Dockerfile中增加下面的第二行
2.2、可能有问题的做法
追加国内源(echo后面双大于号),此时可能依然超时,因为默认的/etc/apk/repositories里面就有国外的源
追加方法
调试一下可以看到默认的国外源
在Dockerfile中增加一条命令
执行时可以看到全部的源
文章知识点与官方知识档案匹配
网络技能树首页概览
22502 人正在系统学习中
打开CSDN APP,看更多技术内容
最新发布 基于alpine进行dockerfile 构建时,修改apk源
这里提供一种在dockerfile中修改源的方法:在 RUN的第一步,先修改源,并使其生效。时,一直卡住,最后显示超时。这是因为众所周知的原因,只需修改apk的源即可。在基于alpine进行dockerfile 构建时,当进行到。
继续访问
docker Failed to fetch 或者 dockerfile: returned a non-zero code: 100
在使用docker 创建容器时出现的两个问题:docker Failed to fetch : returned a non-zero code: 100归根到底,就是拉取包时连接不稳定,容器内部apt-get 更新或者拉取包时实在太慢出现的错误问题解决:因为代码放在云服务器上,需要修改apt-get源变为对应的服务商的来加速例如,我的是放在腾讯云上,所以要修改为腾讯源一开始改为清华源和其他的加速源试了也都不行总结,如果是在云服务器上跑docke
继续访问
Docker/Podman使用提高----Dockerfile的制作基础及常见的问题
文章目录1.Dockerfile基础2.docker build 基础3.构建centos镜像:案例一4.修改后的案例一:5.CMD 与 ENTRYPOINT 的区别5.ADD 与 COPY 的区别6.常见问题1).fetch 超时问题2.启动容器后就直接停止了 1.Dockerfile基础 Dockerfile要点: 每个保留关键字(指令)都必须是大写字
继续访问
ERROR: : DNS lookup error
先说下笔者出现这个问题的场景: 1、内网ubuntu20.04,使用代理服务器进行上网 2、使用Dockerfile构建docker镜像 结果使用docker build -t xxx/xxx .构建docker镜像时,出现下面的错误: fetch ERROR: : DN
继续访问
构建docker镜像时ERROR: : network error
构建docker镜像时ERROR: : network error
继续访问
使用Alpine镜像构建镜像
一、alpine介绍 1、Alpine Linux是一个完整的操作系统,像其他操作系统一样,可以将Alpine安装到本地硬盘中,使用apk进行包管理。 包含了以下特点: 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB; 安全:面向安全的轻量发行版; 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。 适合容器使用:由...
继续访问
linux指令库 apk,alpine apk 包管理命令使用说明 详解(译至官方文档)
Packages and RepositoriesAlpine Linux的软件包是经过数字签名的tar.gz存档,包含程序,配置文件和依赖关系元数据。它们具有扩展名.apk,通常称为“a-packs”。包存储在一个或多个存储库中。存储库只是一个包含* .apk文件集合的目录。该目录必须包含一个名为APKINDEX.tar.gz的特殊索引文件,以将其视为存储库。该APK程序可以从多个仓库安装软件包...
继续访问
解决Docker构建时出现的 WARNING: Ignoring : Permission denied
解决Docker构建时出现的 WARNING: Ignoring : Permission denied 在根据官网的Docker-compose构建示例项目时遇到的问题,原因是因为无法访问官网给出的外网镜像,可能还会出现 WARNING: Ignoring : network error 通过在Dockerfile中
继续访问
alpine Linux的apk软件包管理器
Hping使用方法详解原理基础安装Hping的详细参数具体应用 原理基础 Hping是一个命令行下使用的TCP/IP数据包组装/分析工具,其命令模式很像Unix下的ping命令,但是它不是只能发送ICMP回应请求,它还可以支持TCP、UDP、ICMP和RAW-IP协议,它有一个路由跟踪模式,能够在两个相互包含的通道之间传送文件。Hping常被用于检测网络和主机,其功能非常强大,可在多种操作系统下运行,如Linux,FreeBSD,NetBSD,OpenBSD,Solaris,MacOs X,Windows。
继续访问
Dockerfile构建Alpine镜像/Linux使用apk下载设置资源(字体包/其他)失败/难产
进行构建之前注意 如果报OCI runtime create failed: systemd cgroup flag passed, but systemd support for managing cgroups is not available: unknown错误 请将daemon.json中的"exec-opts": ["native.cgroupdriver=systemd"]删掉 个人问题 我使用Dockerfile构建镜像时,使用Alpine版本的基础镜像包,进行构建一直会卡到 [INFO
继续访问
CentOS7安装docker经常出现的两个问题
这篇文章memo一下CentOS 7安装Docker经常出现的两个问题和对应方法。
继续访问
linux alpine系统切换安装源并安装telnet
1.alpine切换源 安装慢 apk add很慢 阿里镜像 sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories 科大镜像 sed -i 's/dl-cdn.alpinelinux.org/mirro
继续访问
Docker build镜像时,E: Failed to fetch
docker环境下的下载源依旧是国外源导致的,更换为对应版本的国内源即可。 1.在当前目录下,新建sources.list, 这里填写的是阿里源,18.04版本 deb bionic main restricted universe multiverse deb bionic-security main restricted universe multiverse d
继续访问
linux安装时间太久,为什么在Alpine Linux上安装Pandas需要很长时间
我注意到使用基本操作系统Alpine与CentOS或Debian在Docker容器中安装Pandas和Numpy(它的依赖关系)需要更长的时间.我在下面创建了一个小测试来演示时差.除了Alpine更新和下载构建依赖项以安装Pandas和Numpy的几秒钟之外,为什么setup.py需要比Debian安装多70倍的时间?有没有办法加速使用Alpine作为基本图像的安装,或者是否有另一个与Alpine...
继续访问
部署kubernetes官网博客
部署kubernetes官网博客 访问 有些时候不问题,部署离线内网使用官网以及博客, 各位尝鲜可以访问 安装docker root@cby:~#curl-sSL #Executingdockerinsta...
继续访问
Linux软件包安装(rpm、yum、apt-get、dpkg)
Linux RPM 1、RPM 的由来 rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度 ...
继续访问
Docker 主要命令详解
Docker 简介及其命令详解前言一、Docker 是什么?1. Docker简介2. Docker 组成3. Docker 优点二、Docker 命令详解总结 前言 云计算时代的到来,要求运行环境的部署快速、准确。而使用Docker来完成环境的部署也被越来越多的企业所选择,所以掌握Docker十分必要。 一、Docker 是什么? 1. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Window
继续访问
docker E: Failed to fetch... 404 Not Found
E: Failed to fetch 404 http://... Not Found 可能是因为源版本过老 sudo apt-get update 解决
继续访问
Docker常用命令
本次测试的docker版本是Docker version 18.09.0, build 4d60db4 在以前的版本中,具体哪一个我没有仔细研究,docker的配置路径如下: 环境配置文件 /etc/sysconfig/docker-network /etc/sysconfig/docker-storage /etc/sysconfig/docker unit file /usr/lib/sy...
继续访问
[Docker]Docker官方起步指南学习笔记④——实例之基于Alpine的nodejs服务器
本次的目标是基于前三次课的知识,利用Alpine的最小环境,搭建node.js环境,并创建Hello world网页应用;最后将该容器打包成映像,发布到DockerHub上。
继续访问
alpine
源
超时
写评论
8
Q4: 如何在Linux上配置自动打包并签名APK的环境
sudo add-apt-repository ppa:openjdk-r/ppa (打开终端linuxapk命令的破折号或按Ctrl + Alt + T,当它打开时,运行下面的命令来添加PPA)
2. . sudo apt-get update (在那之后,更新系统包缓存和安装OpenJDK 8) sudo apt-get install openjdk-8-jdk()
3.sudo update-alternatives –config Java (查看java英文信息)
4.sudo update-alternatives –config javac(查看java中文 信息)
5.java -version (查看java的版本信息)
如果运行和下面类似linuxapk命令你的jdk8的环境配好linuxapk命令了.
openjdk version “1.8.0_01-internal”
OpenJDK Runtime Environment (build 1.8.0_01-internal-b04)
OpenJDK 64-Bit Server VM (build 25.40-b08, mixed mode)
二. sudo apt-get install vim 安装 vim (配置Java环境 ant 环境 和AndroidSDK环境)具体请参照这篇博客
ant -version
Apache Ant(TM) version 1.9.7 compiled on December 20 2015
当输入上面的命令说明你已经成功配置好了java环境,an脚本环境
Q5: linux系统如何安装apk文件
APK是Android Package的缩写,即Android安装包(apk)。
APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。
APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVM executes的简称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别。
格式定义
在Android平台中dalvik
vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后的androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。安装的文件可能不是这个文件夹,而在androidrom中,系统的apk文件默认会放入这个文件夹,它们拥有着root权限。
文件结构
1.
META-INF\
(注:Jar文件中常可以看到);
2.
res\
(注:存放资源文件的目录)
;
3.
AndroidManifest.xml
(注:程序全局配置文件)
;
4.
classes.dex
(注:Dalvik字节码);
5.
resources.arsc
(注:编译后的二进制资源文件)。
如果一定要安装在linux有二种方法:
1.
在linux下先安装虚拟机;
2.
在linux下安装模拟器;
然后在虚拟机或模拟器中安装该apk文件
关于linuxapk命令和linux deploy apk的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








