本篇记录时间为2023年7月21号。
android原生开发,真的有好久没弄了, 之前弄的那几年,开发IDE是eclipse,android 系统好像还是2.x版本, 现在都android 13了,时间过得是真的快。
现工作有几个关于android需求,因太久没弄android, 环境也是折磨了我好几天。
需求如下:
需求1: 更换app名字及icon。
需求2: app开机自启动,还要避免用户卸载应用。
环境检查
目标设备是android 10的工控屏, 有root权限,root权限很重要,这跟后面能否安装系统级apk有关。
// 通过adb来检查android机是否有root权限
// 1. adb连接android机,判断电脑是否通过adb连接上了android机,可终端运行下面命令查看,连接上了会有设备显示,如图1
adb devices
// 2. 进入android设备系统终端,终端输入如下命令, 如图2.
adb shell
// 3. 输入su, 来判断是否有root权限
// 输入命令后,此时命令行提示符是 $ 则表示没有 root 权限,是 # 则表示已 root。
su
// 4. 查询设备用户列表。(当我用su切换至root用户后,若不切换,下次进入也是root用户,尴尬的是普通用户名我也忘记了)
ls -l /data/system/users
// 5. 切回普通用户, 这里username要对应你设备上的用户名
su username
图1: 判断电脑是否连接上了android机
图2: 电脑通过adb shell进入android系统终端
更换app名字及icon
// 当前IDE使用的是Android Studio
// 1. 更换app名字
打开AndroidManifest.xml-->检查application-->找到android:label-->找到strings.xml对应的标签更改即可
// 2. 更换icon,如图3.
步1: 选择工程res文件夹,右键新建-->Image Asset
步2: 在打开的Asset Studio里,Source Asset --> Path, 选择一张本地的icon图
步3: 在Scaling->Resize, 调整大小,使之适配
步4: 保存即可。
图3: icon操作面板
app开机自启动
Android设备(比如我们的Android手机、Android智能硬件终端......)开机时,会发送一条开机广播:android.intent.action.BOOT_COMPLETED。我们通过监听开机广播来实现。(即:我们写一个广播接收器,接收开机广播,通过Intent跳转应用的入口Activity)
// 1. 在AndroidManifest.xml中声明权限
<!-- 接收Android设备开机时发送的开机广播所需的权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
// 2. 自定义实现 Android应用开机自启动的广播接收器,源码如下:
// SplashActivity为启动的Activity
public class BootBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Android设备开机时会发送一条开机广播:"android.intent.action.BOOT_COMPLETED"
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent splashIntent = new Intent(context, SplashActivity.class);
splashIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(splashIntent);
}
}
}
// 3.在AndroidManifest.xml中静态注册广播
<receiver
android:name=".BootBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="100">
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
adb安装系统级apk
// 1. 把已打包好的apk, 安装至/system/app/即可
adb root
adb remount
adb push xx.apk /system/app/
// 2. 查看是否成功及设置权限
adb shell
cd /system/app/
chmod 777 xx.apk
// 3. 重启android机器,然后看桌面是否有指定的应用,也可尝试卸载,你会发现无卸载按钮了