标签: apk

Android APK证书 - 需要哪些字段以及该信息如何更改?

这似乎很基本,但我无法找到我在任何地方寻找的信息,特别是关于Android应用程序.

我正在创建我的发布密钥(自签名),我被要求提供大量信息:

  • 名字和姓氏:(好的;不太可能改变)
  • 组织单位:(这是一个"商业名称"吗?)
  • 组织:(这与上面的"单位"有什么不同?)
  • 城市或地区:(这可能会改变......)
  • 州或省:(也可能改变......)
  • 国家代码(XX):(好的;不太可能改变)

考虑到这一点,我有两个关于用于分发Android应用程序的自签名证书的基本问题:

  1. 在创作时,我可以将这些字段中的任何一个留下EMPTY,特别是那些可能会改变的字段吗?还是被禁止了?(最大的问题.)
  2. 如果我想稍后更改给定字段怎么办?这是否意味着创建一个新密钥并让所有人重新安装应用程序以便再次升级,即使我有原始密钥?(好像是这样的,通过什么小我来看已经找到.)

提前致谢!


编辑:上面#1的更多信息:如果这与SSL证书类似,那么名称,组织和国家应该足够了.但那是这样的吗?将任何/所有其他字段留空的利弊?我不可能是唯一一个在应用程序方面对此感到疑惑的人......而我到目前为止所阅读的Android文档并没有帮助澄清这一点.

对于#2,似乎更改证书意味着重新生成它,并且使用该新证书进行签名并不能避免市场问题(就像一个全新的应用程序,即使您同时使用新的旧证书进行签名).因此,第一次签署应用程序时,更正确(在移动时充分通用)更为重要.

android signing certificate apk

42
推荐指数
2
解决办法
2万
查看次数

有关Google Play应用资产加密的问题

从v4.1 Jelly Bean开始,Google为Google Play引入了一项新的应用程序资产加密功能.似乎在升级包含持久性数据的应用程序时出现了一些问题,这些问题是由apk目录中的更改引起的(旧的/data/app,现在是/mnt/asec).

因此,在Google Play上发布(或更新已发布的应用)时,对于OS 2.3+,

  • 我可以禁用此选项并发布未加密的应用程序吗?
  • 问题的当前状态是什么?有解决方法吗?

除了这个问题,提供额外的防盗版保护的想法似乎没问题,但是在文档的任何地方都有一些我无法解释的额外注意事项:

  • 那些发布到替代商店或通过OTA部署的应用程序呢?他们也可以加密吗?如果没有,那么如果有人可以从其他地方下载未加密的apk并直接反编译,那么在Google Play发布中造成如此大的痛苦的重点是什么?
  • 可以通过生根电话来打败它吗?
  • 为OS 4.0+提供的apks是唯一有保护的吗?如果是这样,那么,如果有人可以将未加密的apk下载到Gingerbread手机,用adb将其拉出并以通常的方式反编译,那又有什么意义呢?
  • 假设机制有效:备份应用程序(如Titanium Backup)或使用adb的手动apk备份怎​​么样?他们还会工作吗?
  • 性能:某些应用可能具有相当大的apk大小.这种机制会妨碍性能吗?操作系统每次加载时都会解密整个apk吗?

提前致谢

更新:
修改以包含指向Google代码问题的链接.
问题34880(关闭,但有些开发者仍抱怨;状态:未来发布)
问题35962(已关闭;状态:已发布)

更新#2:由第一期中的一位开发人员链接的此博客文章的
有趣信息.同样在这里,在德国.

用户和开发人员报告说,在最近几天,使用最新版Google Play(3.7.15)安装的应用程序的问题似乎已经消失.以前安装有问题的应用程序的用户需要卸载,然后免费重新下载.根据一份报告,新版Google Play现在再次将付费应用程序保存到/ data/app,这意味着Google暂时停用了复制保护功能.谷歌没有公开评论这个问题.该错误被标记为中等优先级,状态为"FutureRelease"以进行可能的修复.

encryption android apk google-play android-4.2-jelly-bean

42
推荐指数
1
解决办法
2139
查看次数

如何在Android内部共享使用即时运行时创建的拆分APK?

背景

我有一个应用程序(这里),除了其他功能,允许共享APK文件.

为了做到这一点,它通过访问packageInfo.applicationInfo.sourceDir(这里是 docs链接)的路径到达文件,并且只是共享文件(在需要时使用ContentProvider,就像我在这里使用的那样).

问题

这在大多数情况下都可以正常工作,尤其是从Play商店或独立的APK文件安装APK文件时,但是当我使用Android-Studio本身安装应用程序时,我在此路径上看到多个APK文件,而且没有一个是有效的,可以安装和运行没有任何问题.

这是从"Alerter"github repo中试用样本后该文件夹内容的屏幕截图 :

在此输入图像描述

我不确定这个问题何时开始,但至少在我的Nexus 5x和Android 7.1.2上确实发生过.也许甚至以前.

我发现了什么

这似乎只是因为在IDE上启用了即时运行这一事实,因此它可以帮助更新应用程序,而无需一起重新构建它:

在此输入图像描述

禁用它后,我可以看到有一个APK,就像过去一样:

在此输入图像描述

您可以在正确的APK和分割的APK之间看到文件大小的差异.

此外,似乎有一个API来获取所有分裂的APK的路径:

https://developer.android.com/reference/android/content/pm/ApplicationInfo.html#splitPublicSourceDirs

这个问题

什么应该是最简单的方式来共享一个被分成多个的APK?

真的需要以某种方式合并它们吗?

根据文档似乎有可能:

零或更多拆分APK的完整路径,当与sourceDir中定义的基本APK结合使用时,形成一个完整的应用程序.

但是这样做的正确方法是什么,并且有一种快速有效的方法吗?也许没有真正创建文件?

是否有一个API可以从所有拆分的APK中获得合并的APK?或者也许这样的APK已经存在于其他路径中,并且不需要合并?

编辑:刚刚注意到,我尝试过的所有第三方应用程序都应该共享已安装的应用程序的APK,在这种情况下无法执行此操作.

android apk android-instant-run

42
推荐指数
1
解决办法
5602
查看次数

APK安装失败:[INSTALL_FAILED_VERIFICATION_FAILURE]

我正在尝试在运行AOSP构建的Jelly Bean(4.2)的设备上安装APK.

当我"adb install my.apk"时,我收到错误消息:

[INSTALL_FAILED_VERIFICATION_FAILURE]

我已经尝试使用"testsign.jar"来"签署"apk但它并没有改变结果

android apk

41
推荐指数
7
解决办法
5万
查看次数

Android Studio - 如何ZipAlign apk

我已经使用Android Studio创建了一个已签名的apk,我现在要对它进行zipalign,我已经读过这个:http: //developer.android.com/tools/help/zipalign.html 但是我还是不确定在哪里添加代码行,是否在Gradle文件中以及文件中的哪些位置添加行?

android gradle apk android-studio zipalign

41
推荐指数
2
解决办法
4万
查看次数

用Gradle更改apk名称

我有一个Android项目,它使用Gradle进行构建过程.现在我想添加两个额外的构建类型登台和生产,所以我的build.gradle包含:

android {
    buildTypes {
        release {
            runProguard false
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }

        staging {
            signingConfig signingConfigs.staging

            applicationVariants.all { variant ->
                appendVersionNameVersionCode(variant, defaultConfig)
            }
        }

        production {
            signingConfig signingConfigs.production
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和我的appndVersionNameVersionCode看起来像:

def appendVersionNameVersionCode(variant, defaultConfig) {
    if(variant.zipAlign) {
        def file = variant.outputFile
        def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
        variant.outputFile = new File(file.parent, fileName)
    }

    def file = variant.packageApplication.outputFile
    def fileName = file.name.replace(".apk", "-" + defaultConfig.versionName + "-" + defaultConfig.versionCode + ".apk")
    variant.packageApplication.outputFile = …
Run Code Online (Sandbox Code Playgroud)

android gradle apk android-gradle-plugin

41
推荐指数
3
解决办法
4万
查看次数

减少Android应用程序(apk)的大小

我现在将在Google Play商店发布我的第一个应用程序.我已经压缩了我的应用程序中使用的图像.我对应用程序的大小有一些疑问.

如果应用程序的大小小于2 MB,那么用户卸载应用程序的可能性就会降低,对于属于教育领域的应用程序,我的这种说法是否属实?

但是,当我在Windows中看到我的apk文件时,它显示3.10 MB但是当它从设备中安装时从应用信息中显示它显示:

Total............................8.68 MB
App..............................7.02 MB
USB storage app..................0.00 B
Data.............................1.66 MB (perhaps it is the size of sqlite db + ttf's)
SD card..........................0.00B
Run Code Online (Sandbox Code Playgroud)

那么,为什么我看到我的应用程序大小增加了很多,它可以最小化吗?

而且,我在我的项目中使用了4个库(jars)Android Private Libraries,但是这些库也在这个文件夹之外.

删除它们是否更安全,删除它们有助于减少apk大小?

此外,我访问了许多网页,描述了什么Proguard,我真正理解Proguard如何减小apk的大小,它通过删除未使用的代码并使用语义模糊的名称重命名类,字段和方法来缩小,优化和混淆我们的代码.结果是较小的.apk文件,更难以进行逆向工程.但我不知道proguard-project.txt 应该怎么样?
我使用4个图书馆在我的应用程序,即easyfacebookandroidsdk_2.3.jar,android-support-v7-appcompat.jar,google-play-services.jarandroid-support-v4.jar.

目前我proguard-properties.txt看起来像这样,也不使用WebView

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here. …
Run Code Online (Sandbox Code Playgroud)

java android jar proguard apk

39
推荐指数
1
解决办法
3万
查看次数

如何使用OpenPGP(Yubikey)签署应用程序包(APK)?

我想使用存储在我的YubikeyOpenPGP小程序中的OpenPGP密钥来签署APK文件.

我知道,有一个使用Yubikey的PIV applet进行APK签名解决方案.但是,PIV applet只能处理密钥长度最多2048位的RSA密钥.

BSI TR-02102-1加密机制技术指南(翻译英文版本)规定,从2023年(或2023年和以后的使用),只能用密钥长度大于或等于3000位RSA密钥是允许的.第一个可用的标准密钥长度是3072位.我必须遵守BSI TR-02102.

这总结为要求,我必须使用3072位的密钥长度和RSA作为算法,我不能使用PIV APK唱歌方法.

有没有办法使用Yubikey 4的OpenPGP小程序使用标准程序或使用自定义程序签署APK文件?

注意:私钥是在Yubikey上生成的,不可导出.这是由于Yubikey的设计和我的最低安全要求.因此,出口和对话不是一种可能的解决方案.

java android code-signing jar-signing apk

39
推荐指数
1
解决办法
495
查看次数

内容提供商INSTALL_FAILED_CONFLICTING_PROVIDER(将内容提供商安装为单独的apk)

我有两个使用相同内容提供程序的应用程序,但我不能在两个应用程序中放置相同的内容提供程序 - 它显示INSTALL_FAILED_CONFLICTING_PROVIDER错误.所以我把我的内容提供商放在第三个.apk中,并从两个应用程序中使用它,它运行良好.

现在问题是 - 必须先安装内容提供程序apk,然后才能在设备上安装这两个应用程序中的任何一个.否则,它会在安装期间显示Provider not found错误.

那么,在安装任何其他apks之前,如何确保安装提供程序apk?

有没有办法将内容提供程序apk与其他两个apks单独合并,因此它们将作为两个应用程序一起安装,并且不会显示INSTALL_FAILED_CONFLICTING_PROVIDER错误?

我需要将内容提供程序apk与两个应用程序合并,因为用户可能无法安装这两个应用程序,也可能将它们安装在单个设备上.

android apk android-contentprovider

37
推荐指数
3
解决办法
3万
查看次数

错误未知失败(在android.os.Binder.execTransact(Binder.java:565))安装APK时出错

有人能告诉我这是什么意思吗?

一切都很顺利,我没有改变任何事情,它刚刚发生,这是Binder 565中的代码:

try {
    res = onTransact(code, data, reply, flags);
} catch (RemoteException | RuntimeException e) {
    if (LOG_RUNTIME_EXCEPTION) {
        Log.w(TAG, "Caught a RuntimeException from the binder stub implementation.", e);
    }
    if ((flags & FLAG_ONEWAY) != 0) {
        if (e instanceof RemoteException) {
            Log.w(TAG, "Binder call failed.", e);
        } else {
            Log.w(TAG, "Caught a RuntimeException from the binder stub implementation.", e);
        }
    } else {
        reply.setDataPosition(0);
        reply.writeException(e);
    }
    res = true;
}
Run Code Online (Sandbox Code Playgroud)

java android apk

37
推荐指数
3
解决办法
5万
查看次数