精华内容
下载资源
问答
  • Android预置Apk方法

    2021-05-27 09:21:42
    一、预置apk方法Case 1:如何将带源码的APK预置进系统在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /...

    因为工作需要,经常要开发和合入系统App,所以在此开篇作为收集和记录Android合入系统应用的方法,以备日后查阅。

    一、预置apk方法

    Case 1:如何将带源码的APK预置进系统

    在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例

    将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen 目录

    在 Test 目录下创建一个名为 Android.mk的文件,内容如下:

    LOCAL_PATH:= $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE_TAGS := optional

    LOCAL_SRC_FILES := $(call all-subdir-java-files)

    LOCAL_PACKAGE_NAME := Test

    include $(BUILD_PACKAGE)

    打开文件 device\mediatek\common\device.mk,将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    重新 build 整个工程

    Case 2:如何将无源码的 APK 预置进系统?

    在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

    将 Test.apk 放到 packages/apps/Test 下面

    在 packages/apps/Test 下面创建文件 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_PREBUILT_JNI_LIBS:= \

    @lib/armeabi/libtest.so \

    @lib/armeabi/libtest2.so

    LOCAL_CERTIFICATE := PRESIGNED

    include $(BUILD_PREBUILT)

    若无so,删除LOCAL_PREBUILT_JNI_LIBS

    若有so,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中

    若apk支持不同cpu类型的so,针对so的部分的处理:

    Ifeq ($(TARGET_ARCH),arm)

    LOCAL_PREBUILT_JNI_LIBS := \

    @lib/armeabi-v7a/xxx.so\

    @ lib/armeabi-v7a/xxxx.so

    else ifeq ($(TARGET_ARCH),x86)

    LOCAL_PREBUILT_JNI_LIBS := \

    @lib/x86/xxx.so

    else ifeq ($(TARGET_ARCH),arm64)

    LOCAL_PREBUILT_JNI_LIBS := \

    @lib/armeabi-v8a/xxx.so

    即将和TARGET_ARCH对应的so抽离出来

    打开文件 device\mediatek\common\device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    重新 build 整个工程

    tip:

    如果App使用System Level的permission,需要預置到/system/priv-app底下 (原在/system/app)。

    修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。

    Case 3:如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?

    在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

    将 Test.apk 放到 packages/apps/Test 下面

    在 packages/apps/Test 下面创建文件 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_PRIVILEGED_MODULE := true

    LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

    LOCAL_CERTIFICATE := PRESIGNED

    include $(BUILD_PREBUILT)

    打开文件 device\mediatek\common\device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    重新 build 整个工程

    注意:这个比不能卸载的多了一句

    LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

    Case 4:如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?

    在 vendor\mediatek\proprietary\binary\3rd-party\free下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

    将Test.apk 放入vendor\mediatek\proprietary\binary\3rd-party\free\Test下面

    在vendor\mediatek\proprietary\binary\3rd-party\free\Test 下面创建文件 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

    LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app

    include $(BUILD_PREBUILT)

    打开文件device\mediatek\common\device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    然后重新build整个工程

    若需要apk作为32bit的apk运行,则需要在Android.mk中定义

    LOCAL_MULTILIB :=32

    二、Android.mk文件参数说明

    LOCAL_MODULE_TAGS := optional

    optional,指该模块在所有版本下都编译

    LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

    获取目录下的java文件

    LOCAL_PACKAGE_NAME := Test

    包名

    LOCAL_CERTIFICATE := platform

    签名,PRESIGNED表示保留apk文件之前的签名,platform是对apk重新进行签名

    LOCAL_PROGUARD_ENABLED := disabled

    不要使用代码混淆的工具进行混淆

    展开全文
  • androidAPK无法安装

    2021-06-04 08:33:05
    我们尝试创建apk的最后2天(签名或不出现问题),Android Studio没有引发任何错误,但是当手机上安装apk时,应用程序无法安装错误“应用未安装”此外,Android监视器中出现以下错误.Class not found when unmarshalling: ...

    我们的应用程序曾经工作过.最新更新发布于两个半星期前,当apk文件创建并正常工作.

    我们尝试创建apk的最后2天(签名或不出现问题),Android Studio没有引发任何错误,但是当手机上安装apk时,应用程序无法安装错误“应用未安装”

    此外,Android监视器中出现以下错误.

    Class not found when unmarshalling: com.android.packageinstaller.InstallFlowAnalytics

    java.lang.ClassNotFoundException: com.android.packageinstaller.InstallFlowAnalytics

    at java.lang.Class.classForName(Native Method)

    at java.lang.Class.forName(Class.java:324)

    at android.os.Parcel.readParcelableCreator(Parcel.java:2404)

    at android.os.Parcel.readParcelable(Parcel.java:2358)

    at android.os.Parcel.readValue(Parcel.java:2264)

    at android.os.Parcel.readArrayMapInternal(Parcel.java:2614)

    at android.os.BaseBundle.unparcel(BaseBundle.java:221)

    at android.os.BaseBundle.getString(BaseBundle.java:920)

    at android.content.Intent.getStringExtra(Intent.java:6183)

    at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2706)

    at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2171)

    at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6359)

    at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6127)

    at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:170)

    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3999)

    at android.os.Binder.execTransact(Binder.java:453)

    Caused by: java.lang.ClassNotFoundException: com.android.packageinstaller.InstallFlowAnalytics

    at java.lang.Class.classForName(Native Method)

    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)

    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)

    at java.lang.Class.classForName(Native Method)

    at java.lang.Class.forName(Class.java:324)

    at android.os.Parcel.readParcelableCreator(Parcel.java:2404)

    at android.os.Parcel.readParcelable(Parcel.java:2358)

    at android.os.Parcel.readValue(Parcel.java:2264)

    at android.os.Parcel.readArrayMapInternal(Parcel.java:2614)

    at android.os.BaseBundle.unparcel(BaseBundle.java:221)

    at android.os.BaseBundle.getString(BaseBundle.java:920)

    at android.content.Intent.getStringExtra(Intent.java:6183)

    at com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2706)

    at com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2171)

    at com.android.server.am.ActivityManagerService.startActivityAsUser(ActivityManagerService.java:6359)

    at com.android.server.am.ActivityManagerService.startActivity(ActivityManagerService.java:6127)

    at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:170)

    at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3999)

    at android.os.Binder.execTransact(Binder.java:453)

    Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

    有没有人遇到过类似的问题?

    先感谢您.

    展开全文
  • Android Studio 打包APK(详细版)

    万次阅读 多人点赞 2021-01-07 15:22:01
    Android Studio 打包APK前言正文总结 前言   做Android开发肯定对APK不陌生,你现在Android手机上所有的应用都是apk,只不过分为系统自带和第三方。 正文   Android打包APK在开发中是必不可少的一个环节,相信...


    前言

      做Android开发肯定对APK不陌生,你现在Android手机上所有的应用都是apk,只不过分为系统自带和第三方。

    正文

      Android打包APK在开发中是必不可少的一个环节,相信你可能已经会了,或者在别的博客中看到过了,但是其实还有一些细节是你所不知道的。

    一、新建项目

      本着实践的态度,新建一个GenerateAPK项目。

    在这里插入图片描述
    创建完成之后,你可以运行一下,运行在真机或者虚拟机都可以。

    二、生成Debug和Release包

    在这里插入图片描述
    当你看到这个页面的时候,这个APK就已经安装在这个模拟器上面了,而这个APK就是debug版本的,但是它是运行时生成的,不是打包生成的。
    怎么查看这个APK呢?

    把当前项目切换成Project,然后找到build文件夹。只要你的项目运行了,就会生成这个文件夹,然后你可以通过下图
    在这里插入图片描述
    此时你可以将这个app-debug.apk复制,然后通过QQ发送到你自己的手机上,然后你在手机上下载上下载试着安装一下,你看能不能行。
    当然是不行的,只有release版本的APK才能安装在自己的手机上。
    在这里插入图片描述
    从这个图片上来看,你已经看到不能安装的原因了。

    通过签名jks来试试,点击导航栏的Build→Generate Signed Bundle / APK…
    在这里插入图片描述

    在这里插入图片描述

    Next
    在这里插入图片描述

    这里需要一个商店的key,因为没有,所以创建一个新的,点击Create new…
    在这里插入图片描述
    首先指明生成的jks文件的路径,点击这个文件夹图标。
    在这里插入图片描述
    我个人习惯放在D盘的APK目录下,然后命名jks的名称为GenerateAPK,
    然后点击OK。
    在这里插入图片描述
    然后输入这个jks和别名的一些相关信息,上方的商店密码和别名密码可以设置为一样的,这样便于记忆,只不过安全系数就降低了。我上面设置的是123456,信息都设置好了之后,点击OK。
    在这里插入图片描述
    如果出现这个弹窗,你可以不用担心,点击OK。
    在这里插入图片描述

    这里勾选上记住密码。
    在这里插入图片描述

    选择release,下面两个都勾选上,然后点击Finish。
    在这里插入图片描述
    当你看到屏幕的右下角出现这个提示时,说明你的APK已经生成了,你可以在你的app下看到多了一个release的文件夹,里面就是app-release.apk包,下面你可以复制发到手机上,然后下载,手机上是可以安装的。
    在这里插入图片描述
    手机上安装成功。

    在这里插入图片描述

    下面通过秘钥jks来生成debug包试试看。
    在这里插入图片描述
    点击Finish。
    在这里插入图片描述
    把这个发到你的手机上。你会发现也是可以安装的,这是为什么呢?
    那个这种方式生成的包在实际开发中起到什么作用呢?

    在实际开发中,如果是自己测试,那么通过就直接用usb安装在手机上,此时就是文中第一种情况。

    而如果当项目要上线或者上应用市场时,就需要用jks来生成release包上传到应用市场上。

    实际开发中还有一点就是你的应用自己自己测试的并不是很到位,因此产品和测试会需要让你打包给他们做进一步测试,此时你可以给通过jks生成的debug包,也可以给release包,但是通常是debug包。

    我想现在你已经明白了这些包的含义了。

    三、打包的细节优化

    从上面的操作中,你已经知道了一些内容,而在基本的开发中也是会用到的,而为了更好区别不同的包名,常用会给apk进行一个重命名,让你一眼就知道这个apk是哪个项目的。

    ① 自定义Apk名字

    修改app下的build.gradle

    	// 自定义打包名称
        android.applicationVariants.all { variant ->
            variant.outputs.all {
                outputFileName = "GenerateAPK.apk"
            }
        }
    

    添加位置如下图所示,在android{}闭包中
    在这里插入图片描述
    添加后记得Sync一下,然后重新打一个包,这里我将打包的路径修改到了D盘,如下图所示

    在这里插入图片描述
    点击Finish完后打包。
    在这里插入图片描述
    包的确是生成了,名字也不再是app-release.apk。

    然后你再打一个debug的包看看,名字是否有更改。
    在这里插入图片描述
    在这里插入图片描述
    很明显,的确是改变了,但是有一个问题,那就是如果没有外面的这个目录我根本不知道哪个apk是debug和release的。因此我还需要在打包后知道当前的包是什么类型的。

    ② 增加构建类型

    只要修改这一句话就可以了。

    	outputFileName = "GenerateAPK_${buildType.name}.apk"
    

    buildType.name就表示构建的类型,使用$来修饰。下面依次打一个release和debug包看看。
    在这里插入图片描述

    在这里插入图片描述
    现在你可以轻松的分辨版本了,但是这就够了吗?实际的开发中其实对于Android的版本也是有关系,比如你要升级迭代APK,那么你的版本就要比之前的版本要高。而目前这个APK上并不能看出来当前是多少版本,因此这也是需要显示的。

    ③ 增加版本名

    再修改一下

    	outputFileName = "GenerateAPK_${buildType.name}_v${versionName}.apk"
    

    versionName就是你的版本名称,v就表示版本,现在版本名称是1.0。
    在这里插入图片描述
    那么现在打个包试一下看是不是会多一个1.0。
    在这里插入图片描述
    在这里插入图片描述
    假如要升级一个版本,那么你改成2.0,再打包。
    在这里插入图片描述
    我这里只是简单演示一下,因此没有对版本号进行修改。
    在这里插入图片描述

    而开发中可能会出现一天搭了多个包,比如你一小时前打的包和一小时后打的包,里面修改了不同的内容。因此还需要再报名上体现这个打包的日期和时间。

    ④ 增加日期时间

    在android{}闭包外增加

    //构建时间
    def generateTime() {
        return new Date().format("yyyy_MM_dd_HH_mm_ss")
    }
    

    在这里插入图片描述

    这里我选择显示构建的年月日时分秒。

    	outputFileName = "GenerateAPK_${buildType.name}_v${versionName}_${generateTime()}.apk"
    

    下面打包看一下。
    在这里插入图片描述
    这样apk的名字就有点长了,不过你就能从这个apk的名字了解到很多信息:所属项目、构建类型、应用版本、构建日期时间。这样你给测试去测就少了很多不必要的麻烦,降低扯皮和撕逼的概率。而你只需要简单配置一下即可,何乐而不为呢?


    总结

      这些内容是在开发中常见的,因此记录下来。希望能对您有所帮助,山高水长,后会有期~

    展开全文
  • android 5.1预置apk

    2021-06-06 10:25:02
    作为一个菜鸟,前一段时间在工作中按照前辈的方法比葫芦画瓢的去预置apk.自己并不明白,前辈们为什么会这么做?这么做的意义是什么?这种预置方法有什么好处?今天看了一下资料,明白其中涉及到的4中预置apk的方法和...

    作为一个菜鸟,前一段时间在工作中按照前辈的方法比葫芦画瓢的去预置apk.自己并不明白,前辈们为什么会这么做?这么做的意义是什么?这种预置方法有什么好处?今天看了一下资料,明白其中涉及到的4中预置apk的方法和这么预置的意义所在。于是,就向广大童鞋分享一下~~~~

    一、如何将带源码的APK预置进系统?

    1)     在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预置一个名为Test的APK 为例

    2)     将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen 目录

    3)     在 Test 目录下创建一个名为 Android.mk的文件,内容如下:

    LOCAL_PATH:= $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE_TAGS := optional

    LOCAL_SRC_FILES := $(call all-subdir-java-files)

    LOCAL_PACKAGE_NAME := Test

    include $(BUILD_PACKAGE)

    4)     打开文件 device/mediatek/common/device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    5)     重新 build 整个工程

    二、如何将无源码的 APK 预置进系统?

    1)     在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

    2)     将 Test.apk 放到 packages/apps/Test 下面

    3)     在  packages/apps/Test 下面创建文件 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_PREBUILT_JNI_LIBS:= /

    @lib/armeabi/libtest.so  /

    @lib/armeabi/libtest2.so

    LOCAL_CERTIFICATE := PRESIGNED

    include $(BUILD_PREBUILT)

    若无so,删除LOCAL_PREBUILT_JNI_LIBS

    若有so,使用LOCAL_PREBUILT_JNI_LIBS列出所有so的路径,不要忘记使用@。@标识符会将apk中的so抽离出来build进apk同级目录下的lib文件夹中

    若apk支持不同cpu类型的so,针对so的部分的处理:

    Ifeq ($(TARGET_ARCH),arm)

    LOCAL_PREBUILT_JNI_LIBS := /

    @lib/armeabi-v7a/xxx.so/

    @ lib/armeabi-v7a/xxxx.so

    else ifeq ($(TARGET_ARCH),x86)

    LOCAL_PREBUILT_JNI_LIBS := /

    @lib/x86/xxx.so

    else ifeq ($(TARGET_ARCH),arm64)

    LOCAL_PREBUILT_JNI_LIBS := /

    @lib/armeabi-v8a/xxx.so

    即将和TARGET_ARCH对应的so抽离出来

    4)     打开文件 device/mediatek/common/device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    5)     重新 build 整个工程

    注:如果App使用System Level的permission,需要預置到/system/priv-app底下 (原在/system/app)。

    修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。

    三、如何预置APK使得用户可以卸载,恢复出厂设置时不能恢复?

    1)     在 packages/apps 下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

    2)     将 Test.apk 放到 packages/apps/Test 下面

    3)     在  packages/apps/Test 下面创建文件 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_PRIVILEGED_MODULE := true

    LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

    LOCAL_CERTIFICATE := PRESIGNED

    include $(BUILD_PREBUILT)

    4)     打开文件 device/mediatek/common/device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    5)     重新 build 整个工程

    注意:这个比不能卸载的多了一句

    LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)

    四、如何预置APK使得用户可以卸载,并且恢复出厂设置时能够恢复?

    1在 vendor/mediatek/proprietary/binary/3rd-party/free下面以需要预置的 APK 名字创建文件夹,以预置一个名为Test的APK为例

    2 将Test.apk 放入vendor/mediatek/proprietary/binary/3rd-party/free/Test下面

    3 在vendor/mediatek/proprietary/binary/3rd-party/free/Test 下面创建文件 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

    LOCAL_MODULE_PATH := $(TARGET_OUT)/vendor/operator/app

    include $(BUILD_PREBUILT)

    2 打开文件device/mediatek/common/device.mk

    将 Test 添加到 PRODUCT_PACKAGES 里面。

    PRODUCT_PACKAGES += Test

    3 然后重新build整个工程

    请注意:

    若需要apk作为32bit的apk运行,则需要在Android.mk中定义

    LOCAL_MULTILIB :=32

    http://www.th7.cn/system/lin/201511/143606.shtml

    展开全文
  • 今天,简单讲讲android如何获取apk的版本信息。这个很简单,但是之前还是查找了资料,所以记录一下。一、应用程序得到自己的版本信息/*** 得到当前应用版本名称的方法** @param context* :上下文* @throws Exception...
  • android获取apk权限信息

    2021-06-05 06:42:01
    private String getString(String pkgName) {StringBuffer sb = new StringBuffer();PackageInfo pkgInfo = null;if (pm == null) {pm = getPackageManager();}try {pkgInfo = pm.getPackageInfo(pkgName, PackageMa...
  • APK在特定的安卓设备中更新HP Print插件。此APK本身不提供任何打印功能: 您将需要HP提供的其他组件,才能使用此打印机进行打印。你手机安装了HP打印服务插件后,可以直接控制对应的打印机进行打印,而无需在用电脑...
  • Android查看apk信息

    2021-03-15 20:27:25
    cd到SDK目录下的build-tools目录 运行命令 aapt dump badging app-release.apk 可查看sdk版本、清单权限、地区、native-code等信息
  • 首先,要利用Android SDK 自带的kdytool生成keystore文件:keytool -genkey -alias android.keystore -keyalg RSA -validity 100000 -keystore android.keystore参数意义:-validity主要是证书的有效期,写100000天...
  • 安卓禁止单个apk安装 frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java @@ -10809,7 +10809,10 @@ public class PackageManagerService extends IPackageManager.Stub { ? ...
  • Android Studio如何导出apk文件

    千次阅读 多人点赞 2021-05-30 11:21:47
    我们平时写Android,大多数情况是在模拟器上运行调试。但实际开发中,有许多大型项目,比如无人车的操控,需要将应用放到遥控器上调试成功才行。有时候,大家也想把做好的APP放到自己手机上试一下。这时候,我们就...
  • 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的PackageName来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不...
  • Android Studio 打Apk

    2021-07-06 11:41:28
    选择Apk Next 如果没有key 可以选择create new 填入相应的内容 最后输出一个key 如果已经创建好key 输入相对应的路径 输入相对应的密码 然后next 可以选择debug 也可以选择release 下面的就选择V2 然后...
  • Android自动安装APK

    2021-05-26 06:10:28
    现在,我想要的是,一旦我从网址下载APK,它就会自动安装:这是shouldOverrideUrlLoading()代码的一部分:else if(url.endsWith(".apk")){mWebView.setDownloadListener(new DownloadListener() {public void onD...
  • AndroidAPK打包流程

    千次阅读 2021-03-06 04:36:00
    aapt: android application package tool,SDK(Android打包流程图)#Android打包流程1.通过aapt工具将 资源文件(res)、清单文件(AndroidManifest.xml)生成对应的R.java文件* 在项目的根目录下新建 gen目录,并且依次在...
  • android 获取apk md5值

    2021-06-07 02:19:37
    android 获取apk md5值1, 获取Signature2. 根据Signature计算md5和sha1信息,获取签名公钥信息TextView text = null;StringBuffer sb = new StringBuffer();@Overrideprotected void onCreate(Bundle ...
  • Android 解压APK文件

    2021-06-06 15:45:15
    最近一个项目里需要得到Android已安装程序的签名文件(CERT.RSA)的SHA1值,所以就调研解压APK文件。通过包名来得到已安装程序在系统的安装包路径。private static String getApkPath(String pkgName) {PackageManager...
  • unity想要实现安装apk文件需要与安卓实现通讯所有需要自己来实现安卓代码。
  • android studio开发的app测试好之后需要签名发布发行版apk,如下将演示如何创建签名、如何导出apk。 步骤如下: 图一: 图二: 图三: 图四: 图5: 图6: 图7: 图8: 图...
  • ubuntu下linux安卓编译环境搭建。配置好编译环境(前提是已经安装了jdk,可以用java -verison 命令查看)一、设置环境变量用vi ~/.bashrc 打开编译环境JAVA_HOME=/usr/lib/jvm/jdk1.6.0_43/JRE_HOME=/${JAVA_HOME}/...
  • Android预置apk

    2021-06-08 05:33:34
    1) 在 packages/apps 下面以需要预置的 APK的 名字创建一个新文件夹,以预制一个名为Test的APK 为例2) 将 Test APK的Source code 拷贝到 Test 文件夹下,删除 /bin 和 /gen 目录3) 在 Test 目录...
  • Android安卓安装apk

    2021-01-02 01:19:02
    private void installApk(String path) { File file = new File(path); if (file.exists()) { Intent installApkIntent = new Intent(); installApkIntent.setAction(Intent.ACTION_VIEW); installApkIntent....
  • 命令行打包 Android APK

    2021-06-04 14:17:45
    注意安装软件包管理器MAC 电脑Windows 电脑cmd.exe 中安装PowerShell.exe 中安装安装 JDK8Mac osWindows安装 GradleMac osWindows安装 Android SDKMac osWindows安装 androd build-tools构建调试 APK构建发布版本 ...
  • 我们知道安卓手机软件程序均为APK格式文件,很多小白朋友对于安卓手机如何安装apk文件不是很了解,下面本文于大家简单介绍下。由于很多朋友使用一些手机应用软件里面下载安装程序,但那仅仅是针对Wifi用户很方便,而...
  • APK 开发中,通过 Java 代码来打开系统的安装程序以安装 APK 并不是什么难事,一般的 Android 系统都有开放这一功能。但随着 Android系统版本的迭代,其对于权限的把控越来越严格,或者说是变得越来越注重安全性...
  • android-apk-parser

    2021-05-26 06:27:19
    APK解析库用于读取/解析 packageName。versionName。versionCode信息的简单类,以及已经编译的androidsdk文件中的更多内容。通过解压 AndroidManifest.xml 文件并解码编译好的XML二进制文件来收集这里信息,就可以...
  • 我的Android应用程序中有很多未使用的图像。 这些图像放置在项目根目录下的单独文件夹中。 在项目的任何地方都没有使用它们,但是我需要保留它们。我担心的是,这些未使用的图像会包含在apk文件中吗? 由于它们很多...
  • 一、这种方法必须要自己编写Android.mk文件(关于Android.mk可以参考),在研发中,自己有源码时,可以将APK的源码包置于Android源码中(比如:alps/package/apps中),然后需要编写Android.mk文件。然后执行命令:./...
  • //主机名 android:exported="false" android:grantUriPermissions="true"> android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/update_files" /> 2)res--》xml中生成update_files文件 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 615,643
精华内容 246,257
关键字:

安卓怎么打apk