目的
- 我们最终是为了搞明白安装的整个流程。一方面通过安卓系统自带的包安装器来了解PMS 安装流程;另一方面熟悉框架层Framework 针对Android apk 安装流程。
前两篇文章分析了PackagerInstaller 安装流程。 Android13-包安装器PackageInstaller-之apk安装跳转
Android13-包安装器PackageInstaller-之apk安装流程
后面空了再分析框架层PMS的处理以及在框架层面的少许拦截和加功能。
- 实现需求定制:静默安装-安装界面定制-安装拦截验证。【核心目的】
安装流程和PMS了解不用多说了; 安装定制相关:
如
- 手机上安装时候弹出锁屏界面需要输入密码;
- 安装时候弹出密码框,让用户输入定制的特殊密码功能;
- 安装页面客制化需求
安装方式
当然正常的安装分为类型我其实理解为大概3种
-
无界面安装:PMS启动阶段 比如系统第一次启动,所有内置app自动批量安装;我们重试系统app开发时候,或者内置系统apk开发时候,删除对应的目录下的apk和apk对应的/data/分区下的apk所有安装信息后,push
更新的apk到系统,重启。 apk 自动重新安装。 -
adb 安装: adb 命令安装,通过adb install 安装,依托守护进程来实现安装
-
点击安装或者调用方法安装:应用市场再下载完apk后自动进入进入包管理器进行安装;sd开或者外部存储中的安装包点击安装自动进入包管理器进行安装
相关资料推荐;
PackageInstaller的初始化
PackageInstaller安装APK
PMS处理APK的安装
PMS的创建过程
APK 安装流程
安装过程 界面跳转
Apk的安装过程探究
Android11.0系统中实现静默安装并启动App以及静默卸载
静默安装实现
修改文件
添加文件:
frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/SilenceInstallReceiver.java
frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/SilenceInstallManager.java
修改文件:
frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/UninstallerActivity.java frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerApplication.java
frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
frameworks/base/packages/PackageInstaller/AndroidManifest.xml
frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java
实现思路
按照前两篇PackageInstaller 包管理器 了解的安装流程和思路,实现方案总结以下两点:
- 延用现有的所有PackagerInstaller 逻辑,在判断安装地方 一路静默,默认同意。【弊端 涉及到多个Activity,特别是安装流程,等待都是花时间的,造成界面App假死】
- 将所有的安装逻辑放到第一个InstallStart Activity里面,对Activity实现,在Activity 里面进行异步处理,同时对Activity进行返回后台。 【不要影响界面上面正在操作的App】
- 在跳转到InstallStart Activity后,跳转到Service 里面处理,结束当前Activity 即可,这样安装逻辑就在Service 里面了。
实现具体方案
这里列举在 InstallStart Activity 里面进行逻辑处理,作为一个方案的引入。 实际项目中直接在Service里面处理的。
SilenceInstallReceiver
新增的一个安装成功监听、通知显示提示,根据自身需要是否需要,进行定制或直接删除。
public class PackageInstalledReceiver extends BroadcastReceiver {
private static final String TAG = PackageInstalledReceiver.class.getSimpleName();
private static final boolean DEBUG = false;
@Override
public void onReceive(Context context, Intent intent) {
if (Settings.Global.getInt(context.getContentResolver(),
Settings.Global.SHOW_NEW_APP_INSTALLED_NOTIFICATION_ENABLED, 0) == 0) {
return;
}
String action = intent.getAction();
if (DEBUG) {
Log.i(TAG, "Received action: " + action);
}
if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
Uri packageUri = intent.getData();
if (packageUri == null) {
return;
}
String packageName = packageUri.getSchemeSpecificPart();
if (packageName == null) {
Log.e(TAG, "No package name");
return;
}
if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
if (DEBUG) {
Log.i(TAG, "Not new app, skip it: " + packageName);
}
return;
}
// TODO: Make sure the installer information here is accurate
String installer =
context.getPackageManager().getInstallerPackageName(packageName);
new PackageInstalledNotificationUtils(context, installer,
packageName).postAppInstalledNotification();
}
}
}
SilenceInstallManager
静默安装的核心工具类,做了以下几个工作,针对PackageInstall 安装流程进行了一个提取
- copy 文件,安装包文件拷贝
- session 的创建、注册回调、交互,安装工作提交到Framework层 commit 、registerSessionCallback(mSessionCallback)
- 这里封装了静默安装和卸载的方法
PackageInstallerApplication.java
Application 中初始化工具类
SilenceInstallManager.getInstance(this);
UninstallerActivity.java
静默卸载方案实现,调用工具类方法
onCreate 方法中
if (intent.getBooleanExtra(SilenceInstallReceiver.SILENCE_INSTALL_KEY, false)) {
Log.d(TAG, "silenceUninstall ....");
SilenceInstallManager.getInstance(this).silenceUninstall(mPackageName);
return;
}
InstallStart
内部创建一个异步线程
// if silence install ->to silence install
if (intent.getBooleanExtra(SilenceInstallReceiver.SILENCE_INSTALL_KEY, false)) {
Log.d(TAG," StagingAsyncAppTask to execute ");
StagingAsyncAppTask mStagingTask = new StagingAsyncAppTask(intent.getBooleanExtra(SilenceInstallReceiver.IS_LAUNCH_KEY, false));
mStagingTask.execute(getIntent().getData());
return;
}
异步线程作什么呢?
- 拷贝文件
- 创建uri,发送广播 通知
@SuppressLint("NewApi")
private final class StagingAsyncAppTask extends AsyncTask<Uri, Void, File> {
private boolean mIsLaunch;
public StagingAsyncAppTask(boolean isLaunch){
mIsLaunch = isLaunch;
}
@Override
protected File doInBackground(Uri... params) {
Log.d(LOG_TAG, "copy file from user app start");
if (params == null || params.length <= 0) {
return null;
}
Uri packageUri = params[0];
try (InputStream in = getContentResolver().openInputStream(packageUri)) {
// Despite the comments in ContentResolver#openInputStream the returned stream can
// be null.
if (in == null) {
return null;
}
File mStagedFile = TemporaryFileManager.getStagedFile(InstallStart.this);
try (OutputStream out = new FileOutputStream(mStagedFile)) {
byte[] buffer = new byte[1024 * 1024];
int bytesRead;
while ((bytesRead = in.read(buffer)) >= 0) {
// Be nice and respond to a cancellation
out.write(buffer, 0, bytesRead);
}
}
return mStagedFile;
} catch (IOException | SecurityException | IllegalStateException e) {
Log.w(LOG_TAG, "Error staging apk from content URI", e);
}
return null;
}
@Override
protected void onPostExecute(File installFile) {
if (null != installFile) {
// Now start the installation again from a file
Log.d(LOG_TAG, "copy file from user app finish");
Intent installIntent = new Intent(SilenceInstallReceiver.SILENCE_INSTALL_APP);
installIntent.putExtra(SilenceInstallReceiver.APP_URI_KEY, Uri.fromFile(installFile));
installIntent.putExtra(SilenceInstallReceiver.IS_LAUNCH_KEY, mIsLaunch);
installIntent.addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
installIntent.setPackage("com.android.packageinstaller");
sendBroadcast(installIntent);
Log.d(LOG_TAG, "send to install");
} else {
Log.d(LOG_TAG, "copy file from user app fail");
}
finish();
}
}
测试验证
这里写了一个简单的方法,直接验证功能
private fun installTest() {
// val appPath ="/sdcard/aiqiyi.apk" // getExternalFilesDir(null)!!.absolutePath + File.separator + "aiqiyi.apk"
//val appPath =getExternalFilesDir(null)!!.absolutePath + File.separator + "aiqiyi.apk"
// val appPath ="/data/data/com.deling.launcher/files" + File.separator + "aiqiyi.apk"
val aPath ="/data/data/com.deling.launcher/files" + File.separator + "aiqiyi.apk"
Log.d(TAG," aPath path:"+aPath);
val appFile = File(aPath)
if (!appFile.exists()) {
//showToast("请在" + getExternalFilesDir(null)!!.absolutePath + File.separator + "目录中放置升级文件")
ToastUtils.showShort("请 配置文件")
return
}
//大于7.0使用此方法
val apkUri = FileProvider.getUriForFile(
ContextProvider.get().context,
"com.deling.launcher.fileProvider",
appFile
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val installApkIntent = Intent()
installApkIntent.setAction(Intent.ACTION_VIEW)
installApkIntent.addCategory(Intent.CATEGORY_DEFAULT)
installApkIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
installApkIntent.setDataAndType(apkUri, "application/vnd.android.package-archive")
installApkIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
//设置静默安装标识
installApkIntent.putExtra("silence_install", true)
//设置安装完成是否启动标识
installApkIntent.putExtra("is_launch", true)
//设置后台中启动activity标识
installApkIntent.putExtra("allowed_Background", true)
if (packageManager.queryIntentActivities(installApkIntent, 0).size > 0) {
startActivity(installApkIntent)
}
}
}
分析:
这里写了传递了三个参数
- silence_install 是否静默安装
- is_launch 安装成功后是否启动起来
- 是否允许在后台运行,这样保证不影响实际界面显示使用
测试结果跳转到了这个界面,说明所有流程都是走通了的,功能可行:
日志参考
部分日志参考如下,打印。可以结合实际日志参考流程
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.54425627
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.54425627
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.74744517
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.74744517
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.74744517
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.74744517
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.74744517
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.74744517
AutofillManager com.android.packageinstaller D Fill dialog is enabled:false, hints=[]
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.79098564
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.79098564
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.79098564
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.79098564
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.79098564
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.79098564
InstallStart com.android.packageinstaller D copy file from user app start
SilenceInstallManager com.android.packageinstaller D send install PendingIntent----->
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->800223053 active--->false
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->800223053 active--->false
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->800223053 active--->false
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->800223053 active--->false
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->800223053 active--->false
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->800223053 active--->false
SilenceInstallManager com.android.packageinstaller D onFinished---->1515810306 success--->true
SilenceInstallManager com.android.packageinstaller D onFinished---->1515810306 success--->true
SilenceInstallManager com.android.packageinstaller D onFinished---->1515810306 success--->true
SilenceInstallManager com.android.packageinstaller D onFinished---->1515810306 success--->true
SilenceInstallManager com.android.packageinstaller D onFinished---->1515810306 success--->true
SilenceInstallManager com.android.packageinstaller D install success
SilenceInstallManager com.android.packageinstaller D launch app--->
SilenceInstallManager com.android.packageinstaller D install success
SilenceInstallManager com.android.packageinstaller D install success
SilenceInstallManager com.android.packageinstaller D install success
SilenceInstallManager com.android.packageinstaller D install success
SilenceInstallManager com.android.packageinstaller D onFinished---->1515810306 success--->true
SilenceInstallManager com.android.packageinstaller D install success
InstallStart com.android.packageinstaller D copy file from user app finish
InstallStart com.android.packageinstaller D send to install
GED com.android.packageinstaller I ged_boost_gpu_freq, level 100, eOrigin 2, final_idx 2, oppidx_max 2, oppidx_min 0
SilenceInstallReceiver com.android.packageinstaller W SilenceInstallReceiver getAction---->com.android.packageinstaller.ACTION_SILENCE_INSTALL
SilenceInstallManager com.android.packageinstaller E params.abiOverride:null
PackageParser com.android.packageinstaller W Unknown element under <manifest>: meta-data at /data/user_de/0/com.android.packageinstaller/no_backup/package2449558720285641032.apk Binary XML file line #18
PackageParser com.android.packageinstaller W Unknown element under <manifest>: queries at /data/user_de/0/com.android.packageinstaller/no_backup/package2449558720285641032.apk Binary XML file line #121
PackageParser com.android.packageinstaller W Unknown element under <manifest>: queries at /data/user_de/0/com.android.packageinstaller/no_backup/package2449558720285641032.apk Binary XML file line #174
PackageParser com.android.packageinstaller W Unknown element under <application>: uses-native-library at /data/user_de/0/com.android.packageinstaller/no_backup/package2449558720285641032.apk Binary XML file line #247
PackageParser com.android.packageinstaller W Unknown element under <application>: uses-native-library at /data/user_de/0/com.android.packageinstaller/no_backup/package2449558720285641032.apk Binary XML file line #250
PackageParser com.android.packageinstaller W Unknown element under <application>: uses-native-library at /data/user_de/0/com.android.packageinstaller/no_backup/package2449558720285641032.apk Binary XML file line #253
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.8
BufferQueueProducer com.android.packageinstaller D [VRI[InstallStart]#11(BLAST Consumer)11](id:b7b0000000b,api:1,p:2939,c:2939) disconnect: api 1
BLASTBufferQueue com.android.packageinstaller D [VRI[InstallStart]#11](f:0,a:1) destructor()
BufferQueueConsumer com.android.packageinstaller D [VRI[InstallStart]#11(BLAST Consumer)11](id:b7b0000000b,api:0,p:-1,c:2939) disconnect
View com.android.packageinstaller D [Warning] assignParent to null: this = DecorView@81df6a7[InstallStart]
InputTransport com.android.packageinstaller D Destroy ARC handle: 0xb400006dbbe9ee80
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->800223053 progress--->0.90000004
SilenceInstallManager com.android.packageinstaller D onCreated---->1438122699
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->1438122699 active--->true
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.0
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.0072567537
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.021770261
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.03628377
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.050797272
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.065310776
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.07982428
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.094337784
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.108851306
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.12336482
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.13787834
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.15239185
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.16690537
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.18141888
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.1959324
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.21044591
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.2249594
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.2394729
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.2539864
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.26849988
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.28301337
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.29752687
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.31204036
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.32655385
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.34106734
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.35558084
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.37009433
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.38460782
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.3991213
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.41363484
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.42814833
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.44266182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.4571753
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.4716888
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.4862023
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.5007158
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.5152293
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.5297428
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.54425627
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.55876976
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.57328326
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.58779675
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.60231024
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.61682373
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.6313372
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.6458507
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.6603642
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.6748777
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.6893912
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.7039047
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.7184182
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.7329317
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.74744517
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.76195866
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.77647215
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.79098564
SilenceInstallManager com.android.packageinstaller D send install PendingIntent----->
SilenceInstallManager com.android.packageinstaller W mSessionCallback onActiveChanged---->1438122699 active--->false
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.8
SilenceInstallManager com.android.packageinstaller W mSessionCallback onProgressChanged---->1438122699 progress--->0.90000004
SilenceInstallManager com.android.packageinstaller D onFinished---->159120445 success--->true
SilenceInstallManager com.android.packageinstaller D install success
SilenceInstallManager com.android.packageinstaller D launch app--->
扩展
实践中遇到的问题
- 不同ODM厂商Android源码、相同ODM厂商Android 不同Android版本,源码少许不一致,需要自己更具实际情况适配 改一改。涉及到方法名、包括类名。
- 针对GMS版本产品,谷歌的安装包程序会GooglePackageInstaller 覆盖源码里面PackageInstaller 程序,实际测试就会发现安装程序走的居然是包名为com.google.android.packageinstaller的程序。
但是谷歌安装包程序提供的是apk 形式,路径如下: \vendor\google\apps\GooglePackageInstaller\GooglePackageInstaller.apk 不是源码形式是无法更改的。那又怎么实现呢?
可以尝试把安装逻辑代码放到系统设置里面去,跳转入口直接跳转到设置。【针对定制的安装apk程序,如果GMS认证能过的情况下】