GVKun编程网logo

Android apk 安装的几种方法(android apk安装流程)

3

在本文中,您将会了解到关于Androidapk安装的几种方法的新资讯,同时我们还将为您解释androidapk安装流程的相关在本文中,我们将带你探索Androidapk安装的几种方法的奥秘,分析and

在本文中,您将会了解到关于Android apk 安装的几种方法的新资讯,同时我们还将为您解释android apk安装流程的相关在本文中,我们将带你探索Android apk 安装的几种方法的奥秘,分析android apk安装流程的特点,并给出一些关于Admob 中没有广告配置错误代码 3测试广告和直播广告在调试 apk 中显示,但未在签名 apk 中显示、Android APK:使用 Android Studio 调试 APK、android – apk(.apk)和app bundle(.aab)之间的区别、android 预置 apk,覆盖原生 apk的实用技巧。

本文目录一览:

Android apk 安装的几种方法(android apk安装流程)

Android apk 安装的几种方法(android apk安装流程)

1. 使用 linux 命令安装:

    apk 事先保存在 sdcard 上面,如果安装不成功,可能权限不够,chmod 777 一下,问题就解决了。

try {
	String cmd = "pm install -r sdcard/TestStartActivity_sig2.apk";
	Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

2. 使用 adb 命令安装。

   am start -n 包名 / Activity 所在包名及类名    

    adb shell am start -n com.liusl.test/com.liusl.test.MainActivity

3. 使用发送 Intent 消息打开 apk 安装程序

public void installApk(String saveFileName) {
    File apkfile = new File(saveFileName);
    if (!apkfile.exists()) {
        Log.i(TAG, "installApk..file not exist!" + apkfile);
        return;
    }
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(Uri.parse("file://" + apkfile.toString()),"application/vnd.android.package-archive");
    mContext.startActivity(i);
}

4. 静默安装:安装过程中没有任何提示的安装

   [1] 重写 pacakgemanager 的相关类

    IPackageDateObserver.java ,IPackageDeleteObserver.java,IPackageInstallObserver.java,IPackageMoveObserver.java,IPackageStateObserver.java,PackageManager.java

  [2] 注册消息接收类

 

private static BroadcastReceiver mPackageInstallReceiver = new BroadcastReceiver() {
     @Override
     public void onReceive(Context context, Intent intent) {
         String action = intent.getAction();
         if (action.equals(UpdateManager.PACKAGE_INSTALL_SUCC)) {
             Log.i(TAG, " receive .PACKAGE_INSTALL_SUCC");
         } else {
             Log.i(TAG, " receive .PACKAGE_INSTALL_FAILED.");
         }
    }
};

   [3] 安装 apk 发送消息

private boolean installApkDefault(Context context, String fileName, String packageName) {
        Log.d(TAG, "installApkDefault:" + packageName + ",fileName:" + fileName);
	File file = new File(fileName);
	int installFlags = 0;
	if (!file.exists())
	return false;
	installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
	PackageManager pm = context.getPackageManager();
	try {
	    IPackageInstallObserver observer = new MyPakcageInstallObserver(context, fileName,packageName);
	    Log.i(TAG, "installFlags:" + installFlags + "packagename:" + packageName);
	    pm.installPackage(Uri.fromFile(file), observer, installFlags, packageName);
	    return true;
	} catch (Exception e) {
	    Log.e(TAG, "installApkDefault fail ;exception: " + e.getMessage());
	}
	return false;
 }

private class MyPakcageInstallObserver extends IPackageInstallObserver.Stub {
    Context cxt;
    String filename;
    String pkname;
    public MyPakcageInstallObserver(Context c, String filename, String packagename) {
        this.cxt = c;
	this.filename = filename;
	this.pkname = packagename;
    }
    @Override
    public void packageInstalled(String packageName, int returnCode) {
	Log.i("MyPakcageInstallObserver", "returnCode = " + returnCode);// 返回1代表安装成功
	if (pkname != null && pkname.equals(packageName)) {
        	Intent it = new Intent();
		it.putExtra("install_returnCode", returnCode);
		it.putExtra("install_packageName", packageName);
		if (returnCode == 1) {
			it.setAction(UpdateManager.PACKAGE_INSTALL_SUCC);
		} else {
			it.setAction(UpdateManager.PACKAGE_INSTALL_FAILED);
			File f = new File(filename);
			if (f.exists()) {
				f.delete();
			}
		}
		cxt.sendBroadcast(it);
	}
    }

}

Admob 中没有广告配置错误代码 3测试广告和直播广告在调试 apk 中显示,但未在签名 apk 中显示

Admob 中没有广告配置错误代码 3测试广告和直播广告在调试 apk 中显示,但未在签名 apk 中显示

如何解决Admob 中没有广告配置错误代码 3测试广告和直播广告在调试 apk 中显示,但未在签名 apk 中显示

测试广告和生产广告在调试 apk 中显示,但在应用签名时不显示。在 Android 中使用了 2 天。 得到以下回复。

 "Code": 3,"Message": "No ad config.","Domain": "com.google.android.gms.ads","Cause": "null","Response Info": {
    "Response ID": "null","Mediation Adapter Class Name": "","Adapter Responses": []
  }

实施 ''com.google.android.gms:play-services-ads:19.8.0'' - 我当前的版本。

Android APK:使用 Android Studio 调试 APK

Android APK:使用 Android Studio 调试 APK

如何解决Android APK:使用 Android Studio 调试 APK?

我正在使用 Android Studio 调试 APK

我在 MainActivity - 我已经反编译了 APK 以提供 .java 文件

public final class MainActivity extends AppCompatActivity {
public final native boolean checkPassword(String str);

/* access modifiers changed from: protected */
@Override // androidx.activity.ComponentActivity,androidx.core.app.ComponentActivity,androidx.appcompat.app.AppCompatActivity,androidx.fragment.app.FragmentActivity
public void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_main);
    System.loadLibrary("ferriswheel");
}

public final void checkHandler(View view) {
    Intrinsics.checkParameterIsNotNull(view,"view");
    View findViewById = findViewById(R.id.password_input);
    Intrinsics.checkExpressionValueIsNotNull(findViewById,"findViewById<EditText>(R.id.password_input)");
    if (checkPassword(((EditText) findViewById).getText().toString())) {
        startActivity(new Intent(this,ferriswheel.class));
    } else {
        Toast.makeText(this,"Incorrect!",1).show();
    }
}

}

我不确定这里发生了什么 - checkPassword 部分 - 它在检查什么?如果我设置了一个断点,它在我运行应用程序时似乎不会被击中

感谢任何指导

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

android – apk(.apk)和app bundle(.aab)之间的区别

android – apk(.apk)和app bundle(.aab)之间的区别

最近谷歌推出了一个新的功能应用程序包,这是一个非常类似于APK的概念,除了它的灵活性和架构差异.

我已经阅读了很多博客/文章,以了解应用程序包如何在设备中与APK文件进行比较.

从Google Play商店开始,应用套件的实际内部工作流程及其在Android设备上的工作原理是什么?

解决方法:

App Bundles是一种发布格式,而APK(Android应用程序PacKage)是最终将安装在设备上的打包格式.

App Bundles使用bundletool创建一组APK. (.apks)
这可以被提取,并且可以将基础和配置拆分以及潜在的动态特征模块部署到设备.

依赖项看起来像这样:

App Bundle的内容看起来像这样:

有关App Bundles的更多信息,请参见available here.

android 预置 apk,覆盖原生 apk

android 预置 apk,覆盖原生 apk

一、如何将带源码的 APK 预置进系统?
1)     在 packages/apps 下面以需要预置的 APK 的 名字创建一个新文件夹,以预制一个名为 RecordingCar 的 APK 为例
2)     将 的 Source code 拷贝到 RecordingCar 文件夹下,删除 /bin 和 /gen 目录
3)     在 RecordingCar 目录下创建一个名为 Android.mk 的文件,内容如下:
OCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
LOCAL_PACKAGE_NAME := Recorderingcar
LOCAL_JAVA_LIBRARIES := telephony-common   // 所需要的库文件,没有的话,可以不写
include $(BUILD_PACKAGE)
 
4)     mtk 打开文件 build/target/product/${Project}.mk (其中 ${Project} 表示工程名)
将 Recorderingcar 添加到 PRODUCT_PACKAGES 里面。
如果是高通平台,可以在 device,或者 build 的 mkfile 文件加入编译选项。
另外一种方法就是 mk 文件中将 LOCAL_MODULE_TAGS 属性值设为:= eng user debug,这样不管编译什么版本,该 apk 都可以编译进去。
5)    make clean 然后重新编译整个工程。
 
二、如何将无源码的 APK 预置进系统?
1)     在配置文件中,如 device/qcom/project 下加入 3rdApp 文件夹,在该文件夹下创建 app,lib 和 Android.mk 文件。
2)     将  Recorderingcar.apk 放到 app 目录 下面
3)     将库文件放到 lib 目录下
4)     在修改 Android.mk,文件内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
# Module name should match apk name to be installed
LOCAL_MODULE := Test
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := PRESIGNED
include $(BUILD_PREBUILT)
 
4)    在 mk 文件中,将 lib 目录下的库文件 copy 到 system/lib 目录下
      其余的步骤和上面类似。
 
    如果预置的同时,要覆盖原生 apk,则关于 android.mk 中的 LOCAL_OVERRIDES_PACKAGES 需要说明一下,此变量可以使其他的模块不加入编译,
   如:需要预置第三方的 Launcher 启动器,则在预置 apk 的 mk 文件中加入:

   LOCAL_OVERRIDES_PACKAGES := Luancher2

   这样系统就不会将原生的 Launcher 编译进去,当然也可以在 mk 文件中编译开关中将相应 Launcher 注释掉。

  KK-android4.4 版本上应用权限无法获取的问题是预置 apk 以后发现原因查了下,发现现在增加了一个 priv-app 的文件夹,对于 android:protectionLevel="signature|system" 的权限,并且签名不一致的情况下,建议放在
priv-app 下面,否则 PackageManager 会拒绝分配给你权限。(有兴趣的同学可以参见:PackageManagerService 的 grantSignaturePermission 方法)
加入 priv-app 方法:在 Android.mk 中增加 LOCAL_PRIVILEGED_MODULE := true
 

我们今天的关于Android apk 安装的几种方法android apk安装流程的分享已经告一段落,感谢您的关注,如果您想了解更多关于Admob 中没有广告配置错误代码 3测试广告和直播广告在调试 apk 中显示,但未在签名 apk 中显示、Android APK:使用 Android Studio 调试 APK、android – apk(.apk)和app bundle(.aab)之间的区别、android 预置 apk,覆盖原生 apk的相关信息,请在本站查询。

本文标签: