javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

android-有关Google Play应用程序资产加密的问题

从v4.1 Jelly Bean开始,Google为Google Play引入了新的应用程序资产加密功能。 似乎在升级应用程序时会出现一些问题,其中包括由于apk目录中的更改而导致重启后丢失的持久数据(旧版本为/data/app,现在为/mnt/asec)。

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

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

除了这个问题,提供额外的防止盗版保护的想法似乎还可以,但是我在文档中的任何地方都找不到一些其他注意事项:

  • 发布到备用商店或通过OTA部署的应用程序如何处理? 它们也可以加密吗? 如果不是,那么如果有人可以从其他地方下载未加密的apk并立即对其进行反编译,那么在Google Play发布中造成如此大痛苦的意义何在?
  • 扎根手机能打败它吗?
  • OS 4.0+附带的apk是唯一具有保护的apk吗? 如果是这样,那么,如果有人可以将未加密的apk下载到Gingerbread手机,并使用adb将其拉出并以通常的方式进行反编译,那又有什么意义呢?
  • 假设该机制有效:备份应用程序(如Titanium Backup)如何,或者使用adb进行手动apk备份呢? 他们还会继续工作吗?
  • 性能:某些应用可能具有相当大的apk大小。 这种机制会影响性能吗? 操作系统每次加载时都会解密整个apk吗?

提前致谢

更新:
编辑以包括指向Google Code问题的链接。
问题34880(已关闭,但仍有一些开发人员在抱怨;状态:未来版本)
发行35962(已关闭;状态:已发布)

更新#2:
在第一期中,由一名开发人员链接的有关此博客文章的有趣信息。 也是这里德语。

用户和开发人员报告说,在最近几天中,使用最新版本的Google Play(3.7.15)安装的应用程序问题似乎消失了。 先前已安装有问题的应用程序的用户将需要卸载,然后免费重新下载它们。 根据一份报告,新版本的Google Play现在将付费应用再次保存到/ data / app,这意味着Google现已停用了复制保护功能。 Google尚未对此问题发表公开评论。 该错误被标记为中等优先级,其状态为“ FutureRelease”(可能为修复)。

trans by 2020-08-12T06:23:49Z

性能-上传到正在运行的Android emu的速度较慢

我已经搜索过,但没有找到针对我的具体情况的任何疑问或答案。 我有一台运行速度很快的新机器,它具有运行Windows 7的大量内存。我正在使用最新的Eclipse和Android SDK。

从运行启动到运行我的应用程序,模拟器运行大约需要45秒钟(对于模拟器而言,这真是太快了!)。

如果然后我更改应用程序并在仍在运行的模拟器上重新运行它,则时间将增加到70多秒! 与人们的所有其他投诉相反,就我而言,重新启动模拟器比使用现有实例要快。 我不喜欢

这是时间:

2011-09-29 13:07:13 - hello Uploading hello.apk onto device 'emulator-5554'
2011-09-29 13:07:18 - hello Installing hello.apk...
2011-09-29 13:07:37 - hello Success!

在更改应用程序以使其重新加载后运行:

2011-09-29 13:08:18 - hello Uploading hello.apk onto device 'emulator-5554'
2011-09-29 13:09:16 - hello Installing hello.apk...
2011-09-29 13:09:24 - hello Success!

如您所见,重新启动仿真器后,上传到仿真器仅需5秒钟。 正在运行的模拟器需要将近一分钟! 这是延长重新运行时间的原因。 即使我在重新运行它之前在模拟器上卸载该应用程序,这也不会改变。

关于我可以尝试解决的任何想法? 它似乎是某种通信问题,可能与adb有关。

trans by 2020-08-11T21:46:11Z

什么是Android Studio生成的<module> /release/output.json

我最近注意到,每次我运行Build-> Generate Signed APK...时,Android Studio 3 Canary 1都会在.gitignore处生成一个新文件,该文件的内容如下所示。

谁能确认也看到这种行为? 还是由于笔记本电脑上的某些本地配置?

谁能解释这个文件的目的? 添加到.gitignore是否安全?

[{
  "outputType": {
    "type": "APK"
  },
  "apkInfo": {
    "type": "MAIN",
    "splits": [],
    "versionCode": 32
  },
  "outputFile": {
    "path": "/path/to/the/generated/release/filename.apk"
  },
  "properties": {
    "packageId": "com.example.android",
    "split": ""
  }
}]
trans by 2020-08-03T04:27:13Z

android-我可以使用与随附的证书不同的证书重新签署.apk吗?

如果我有apk,可以删除当前的签名,以及如何使用其他.keystore文件重新签名,仍然安装应用程序吗?

更新:我设法使其与Jorgesys的解决方案一起使用,而我之前搞砸的地方是我解压缩了.apk,然后在删除了META-INF文件夹并将文件扩展名改回了.apk之后重新压缩了它。 我应该做的只是使用winzip打开它,然后删除winzip中的文件夹。

trans by 2020-07-30T15:13:45Z

Java-如何停止在Android Studio 2.3中安装多个Slice APK

将android studio更新到版本2.3之后。 我在从android studio安装到android设备上时遇到问题。在这里附加更新Android Studio之前和之后在控制台中提出的输出。

在更新到android studio 2.3之前

$ adb push E:\mynewapp\TestDemo\TestDemo\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.example.gangsofcoder.testdemo
$ adb shell pm install -r "/data/local/tmp/com.example.gangsofcoder.testdemo"
    pkg: /data/local/tmp/com.example.gangsofcoder.testdemo
Success

更新到android studio 2.3之后

$ adb install-multiple -r E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\dep\dependencies.apk
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_1.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_3.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_0.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_2.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_4.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_6.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_5.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_7.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_8.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\intermediates\split-apk\debug\slices\slice_9.apk 
 E:\SurajBahadur\testdemoApp\testdemo\app\build\outputs\apk\app-debug.apk 

安装APK时出错

This is prompt getting during installation

trans by 2020-07-24T00:40:59Z

android-如何使apk安全。 防止反编译

你好我正在为公司开发一个应用程序,我们的应用程序包含一个sqlite数据库,其中包含个人信息,我们希望对其进行保护。我们如何保护它。 因为apk很容易完全反编译,因为我自己做了。所以现在的问题是如何保护apk? 以及在手机上安装应用后如何保护手机中的数据库。

trans by 2020-07-14T05:06:09Z

android-使用Google Play提供的上传密钥对APK进行签名

我试图弄清楚在使用Google Play应用签名时如何将应用上传到Google Play。

这是我所做的:

  1. 创建了一个应用
  2. 使用keytool.exe为该应用程序生成密钥
  3. 将应用上传到Google Play
  4. 已注册Google Play应用签名
  5. 尝试重新上传应用程序,但没有成功。

它抱怨证书不是证书

将新的APK上传到正式版

上传失败 您上传了未使用上传证书签名的APK。 您必须使用相同的证书。 上传证书具有指纹: [SHA1:0C:...] 并且用于签名上传的APK的证书具有指纹: [SHA1:2D:...]

经过一段时间的搜索。 我发现了如何将发布的认证证书放在我的密钥库中的Google Play控制台上。 像这样:

keytool.exe -importcert-文件upload.pem -keystore myapp-release-key.keystore

证书似乎在其中。当我列出密钥库的内容时,得到的是:

keytool.exe-列表-keystore trackcoach完全释放key.keystore输入密钥库密码:

密钥库类型:JKS密钥库提供者:SUN

您的密钥库包含2个条目

myappfull,2017年5月18日,PrivateKeyEntry,证书指纹(SHA1):2D:...uploadkey,2017年5月19日,trustedCertEntry,证书指纹(SHA1):0C:...

现在,我被封锁的地方

在Android Studio中,我尝试使用uploadkey生成签名的APK。

生成>生成签名的APK选择上方的密钥库输入密钥库密码选择uploadkey作为密钥别名我被迫输入密钥密码。

Android Studio中的错误:

错误:任务':app:packageFullRelease'的执行失败。

com.android.ide.common.signing.KeytoolException:无法从商店读取密钥uploadkey “ C:\ Users \ Admin \ AndroidStudioProjects \ keystores \ myappfull-release-key.keystore”: 受信任的证书条目不受密码保护

我的问题是这样的:

如何生成用Google Play提供的上传密钥签名的APK?

谢谢

trans by 2020-07-12T16:04:14Z

Android-Google Play Alpha和Beta测试器功能

我对新的Play开发者控制台功能(Alpha和Beta测试)有疑问,也许有人对此有所了解。

我邀请了GoogleGroups的一些测试人员,他们正在接受邀请,并且可以接受。

我想测试付费应用。 他们需要为测试付费吗? 该应用尚未在商店中发布。

我怀疑将其设置为免费,后来无法更改为付费应用。

任何建议如何进行?

trans by 2020-07-12T04:00:06Z

Android Studio 3.0不会生成签名的ap

将android studio更新到3.0版(Windows)后,我无法生成签名的APK。

enter image description here

构建完成后,我收到消息:

enter image description here

单击“查找”将我带到APP文件夹,但没有找到APK。

发生了什么变化?

trans by 2020-07-10T03:39:56Z

Android:了解APK安装过程

我试图了解如何在adp上安装apk的过程,特别是通过adb install(我正在测试的地方)安装Android SDK模拟器的过程。

在搜索中,我发现“ apk仅复制到/ data / app并在运行时已安装并没有满意的答案。这对我来说并不令人满意,因为它无法解释apk的图标如何出现在菜单上。 问题。

来自Windows背景,运行.exe或安装程序来安装程序会修改注册表,文件,服务等。...我需要了解在Android上安装apk时是否出现此情况或类似情况。

因此,如果有人可以向我解释在Android上安装apk时会发生什么,我将不胜感激。

另外,我还想知道Dalvik VM“ zygote”是否涉及安装,或者它发生在较低的Linux内核级别?

我的最终目标是使用strace捕获apk的安装过程,以记录系统修改,文件创建,网络活动和其他感兴趣的事件。

trans by 2020-07-07T15:21:46Z

android-测试adb更新与安装?

如何测试应用程序的更新,而不是全新安装? 我看到adb install有几个标志,但是我不确定哪个标志模仿了现实。

我明确需要测试应用程序更新。

trans by 2020-07-02T05:38:13Z

android-APK(.apk)和应用捆绑包(.aab)之间的区别

最近,Google推出了一项新功能app bundle,该功能与APK非常相似,但具有灵活性和体系结构差异。

我阅读了许多博客/文章,以了解与APK文件相比,应用程序捆绑包在设备中的工作方式。

从Google Play商店开始,应用捆绑包的实际内部工作流程是什么,以及如何在Android设备上运行?

trans by 2020-07-02T00:14:39Z

android-APK文件中classes.dex文件的作用

使用Winrar打开apk文件时(用w打开压缩文件)。 我在apk中打包了一堆文件。 其中classes.dex是其中之一。 我的问题是此文件的作用是什么,如果我们修改/删除同一文件,它将影响apk吗?

trans by 2020-06-16T20:29:04Z

android-如何解决“您的APK的版本代码必须高于2。” 在Google Play的开发者控制台中?

将我的Phonegap应用程序上传到Google Play开发者控制台时出现此错误:

您APK的版本代码必须高于2。

我怎样才能解决这个问题?

trans by 2020-02-17T14:47:52Z

iOS中的apk等于什么?

iOSapk的等价金额是多少?

trans by 2020-02-16T17:41:09Z

ant-单个源代码中的多个Android应用程序包.apk文件

我希望Android构建系统过程,命令行或Eclipse从单个源代码库生成多个.apk文件。 造成这种情况的一些常见原因-针对不同需求的市场提供特定版本或免费和付费版本。

这个问题不是关于:

  • 将共享代码打包到Android库或外部Java jar中

  • 产生调试版本与签名版本.apk

谷歌表示:“您可能需要为要发布的每个APK创建单独的Android项目,以便可以分别适当地开发它们。您可以通过简单地复制现有项目并为其赋予新名称来进行此操作。” 然后,他们建议使用我理解的库。 然后,他们确切地讲了我想要的内容:“一个可以基于构建配置输出不同资源的构建系统”

  • 我知道要在JAVA中完成条件编译,可以锁定“ public static final”变量。 在build.xml中有一个调整此类值的示例。 请问有任何更完整的Android Ant构建配置示例或指向OSS项目的链接的示例吗? 顺便说一句,build.xml是自动生成的,但是我看到有人对其进行破解,所以它如何工作?

  • 使用Manifest.xml中声明为package =“ com.example.appname”的程序包名称,如果一个人需要发出多个更改该名称的.apks,那么每个程序包都被单独的项目卡住了吗?

trans by 2020-02-09T18:34:00Z

Java-Android密钥库停止工作

最近,我在密钥库方面遇到了问题。 我知道已经有很多关于这个问题的问题。 我已经阅读了所有内容,然后疯狂地搜索了Google。

错误:

keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect
java.io.IOException: Keystore was tampered with, or password was incorrect
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:772)
    at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55)
    at java.security.KeyStore.load(KeyStore.java:1214)
    at sun.security.tools.KeyTool.doCommands(KeyTool.java:885)
    at sun.security.tools.KeyTool.run(KeyTool.java:340)
    at sun.security.tools.KeyTool.main(KeyTool.java:333)
Caused by: java.security.UnrecoverableKeyException: Password verification failed
    at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:770)
    ... 5 more

我正在使用的软件:

爪哇

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)

日食

Version: 3.8.0
Build id: I20120502-2000

最新的ADT插件

最新的Android SDK

这是我所知道的:

  • 我没有丢失密码,并且从未更改过。
  • 我无法找回密码(我知道密码)。
  • 如果不发布全新的应用程序,则无法使用其他密钥对现有应用程序进行签名(因此,我无法发布任何更新)。

这是我所做的:

  • 我已经多次卸载并重新安装了Eclipse。
  • 我已经卸载并重新安装了android ADT插件。
  • 我已经多次删除并重新下载了最新的Android SDK。
  • 我已经卸载并重新安装了JDK7。
  • 我尝试使用密钥库的备份。
  • 我使用“ md5sum KEYSTORE”检查了MD5校验和,并与备份(相同的MD5输出-未篡改)进行了比较。
  • 我已经尝试过强行强制密钥存储(我已经获取了我知道的密码)。
  • 我创建了一个测试密钥(使用当前设置)并测试了密码,它似乎可以正常工作(因此某些更改)。
  • 我尝试手动导出android .apk,然后尝试对其进行签名(Eclipse外部)。

这是我导出签名应用程序的方法:

  • 通过Eclipse:使用文件>导出>导出Android应用程序进行导出。
  • 在JDK7之前:jarsigner -verbose -keystore KEYSTORE FILE ALIAS。
  • 对于JDK7:jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore KEYSTORE FILE ALIAS。

还有什么可以解决或尝试的?

  • 一些引用/ URL表示要删除“ trusted.certs”文件?
  • 尝试删除“ debug.keystore”吗?
  • 更新Eclipse或任何Android开发工具会影响我的密钥库吗?
  • 将Java从jdk6更新到jdk7会产生任何问题吗?
  • 难道这会弄乱或改变jarsigner的工作方式吗?

用户建议:

  • 尝试使用JDK6,但最近能够导出应用程序。
  • 在我的local.properties中检查了key.store.password或key.alias.password
  • 在Eclipse中自动取消选中构建并清理项目
  • 尝试删除工作区中的.metadata文件夹,然后清除所有临时文件夹。

摘要

  • 密钥库没有更改,
  • 我有密钥库的密码,
  • 我最近成功使用以下方法导出了一个应用程序:
    • Eclipse 3.8(和Eclipse 4.0+),
    • 最新的Java 7
    • 最新的ADT插件。
  • 我上一次成功的导出和构建是在几周前使用Eclipse 3.8,最新的Android工具和具有相同密码的Java 7。

更新(6/29/14)

  • 我使用过:keytool -list -keystore KEYSTORE来成功证明并显示4个键中的3个有效。
  • 我强行使用了最后一个密钥并从密钥库(我已经知道的密码)中获得了密码,但是当我输入签名时密码不起作用。 我使用过:java -jar AndroidKeystoreBrute_v1.02.jar -m 3 -k KEYSTORE -d WORDLIST。
  • 奇怪的是,有时当我很快将密码输入eclipse时,我的别名就会显示出来,并且我可以成功导出应用程序。 (我知道这很疯狂)。
  • 更新了Java版本。

如果我很快输入密码,它有时会起作用。

似乎第一次打开Eclipse并输入密码使我可以使用密钥库。

显然,如果所有其他方法都失败了,我将不得不创建一个新的密钥库。 我真的很想解决这个问题,除了重新发布新密钥外,我不确定现在该怎么办。

如果密钥无法正确恢复,我可能会在Github上开源。


解决方案(6/29/14):

特别感谢用户Erhannis!

这是我所做的:

该命令每次都会对我出错:

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -v

既然您告诉了我们我们可以从Java Keystore(.jks)提取私钥,那么我会更深入地研究并最终使用命令的变体。 我跟踪了您在此处和此处发布的链接:

keytool -importkeystore -srckeystore old.keystore -destkeystore new.keystore -deststoretype pkcs12

提取私钥并将其存储为PKCS12之后,我认为应提取我的私钥并将其放回全新的Java Keystore中:

keytool -importkeystore -srckeystore new.keystore -srcstoretype pkcs12 -destkeystore final.keystore -deststoretype jks

参考文献:

[http://developer.android.com/tools/publishing/app-signing.html#signapp]

[http://code.google.com/p/android-keystore-password-recover/]

我已阅读的StackOverflow URL列表:

如何处理Android中丢失的KeyStore密码?

无效的密钥库问题?

Android:我丢失了Android密钥存储区,该怎么办?

我丢失了.keystore文件?

考虑到蛮力检测,忘记了密钥库密码。 会损坏密钥库吗?

我丢失了Android Keystore文件的密码

在Eclipse中运行我的已签名的发布密钥库时出现问题

Android-忘记了密钥库密码。 我可以解密密钥库文件吗?

Android版本的密钥库问题:“密钥库被篡改,或密码不正确”

trans by 2020-02-01T23:52:38Z

android-如何在不使用文件或文件路径的情况下获取文件系统中的APK文件信息(不仅仅是已安装的文件)?

背景

我的应用程序(此处)可以在整个文件系统(不仅是已安装的应用程序)中搜索APK文件,显示有关每个文件的信息,允许删除,共享,安装...

作为Android Q范围内存储功能的一部分,Google宣布SAF(存储访问框架)将取代常规存储权限。 这意味着,即使您尝试使用存储权限,也只会授予访问特定类型的文件的权限,以使文件和文件路径可以使用或完全沙盒化(在此处撰写)。

这意味着许多框架将需要依赖SAF而不是File和file-path。

问题

其中之一是packageManager.getPackageArchiveInfo,它给出了文件路径,返回PackageInfo,我可以得到有关以下内容的各种信息:

  1. 名称(在当前配置上),也称为“标签”,使用AppCompatResources.getDrawable(createPackageContext(packageInfo.packageName, 0), packageInfo.applicationInfo.icon )。 这基于设备的当前配置(语言环境等)。
  2. 包名称,使用AppCompatResources.getDrawable(createPackageContext(packageInfo.packageName, 0), packageInfo.applicationInfo.icon )
  3. 版本代码,使用AppCompatResources.getDrawable(createPackageContext(packageInfo.packageName, 0), packageInfo.applicationInfo.icon )packageInfo.longVersionCode
  4. 版本号,使用AppCompatResources.getDrawable(createPackageContext(packageInfo.packageName, 0), packageInfo.applicationInfo.icon )
  5. 应用图标,根据当前配置(密度等...)以各种方式使用:

一种。 AppCompatResources.getDrawable(createPackageContext(packageInfo.packageName, 0), packageInfo.applicationInfo.icon )

b。 如果已安装AppCompatResources.getDrawable(createPackageContext(packageInfo.packageName, 0), packageInfo.applicationInfo.icon )

C。 getPackageArchiveInfo

它可以为您带来更多收益,还有很多是可选收益,但我认为这些是有关APK文件的基本信息。

我希望Google可以为此提供一个不错的选择(在此和此处要求),因为目前我找不到任何好的解决方案。

我尝试过的

使用从SAF获得的Uri并从中获得InputStream很容易:

@TargetApi(Build.VERSION_CODES.O)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)
    packageInstaller = packageManager.packageInstaller

    val intent = Intent(Intent.ACTION_OPEN_DOCUMENT)
    intent.addCategory(Intent.CATEGORY_OPENABLE)
    intent.type = "application/vnd.android.package-archive"
    startActivityForResult(intent, 1)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) {
    super.onActivityResult(requestCode, resultCode, resultData)
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && requestCode == 1 && resultCode == Activity.RESULT_OK && resultData != null) {
        val uri = resultData.data
        val isDocumentUri = DocumentFile.isDocumentUri(this, uri)
        if (!isDocumentUri)
           return
        val documentFile = DocumentFile.fromSingleUri(this, uri)
        val inputStream = contentResolver.openInputStream(uri)
        //TODO do something with what you got above, to parse it as APK file

但是现在您被困住了,因为我见过的所有框架都需要一个File或file-path。

我尝试使用Android框架找到任何替代方案,但找不到任何替代方案。 不仅如此,我发现的所有库也不提供这种功能。

编辑:发现我看过的一个库(在这里)-种可以选择仅使用流来解析APK文件(包括其资源),但是:

  1. 原始代码使用文件路径(类为getPackageArchiveInfo),它的花费比使用Android框架进行常规解析大约多十倍。 原因可能是它解析了所有可能或接近的一切。 另一种解析方法(类为"/proc/self/fd/" + fileDescriptor.fd)是通过使用包含整个APK内容的字节数组。 如果只需要读取一小部分文件,则非常浪费时间。 另外,这种方式可能会占用大量内存,而且正如我测试过的那样,确实可以达到OOM,因为我必须将整个APK内容放入一个字节数组中。

  2. 我发现有时无法解析框架可以正常解析的APK文件(此处)。 也许很快就会解决。

  3. 我尝试仅提取APK文件的基本解析,并且可以正常工作,但是在速度方面(这里)更糟。 从其中一个类(称为getPackageArchiveInfo)中获取了代码。 因此,从文件中,我得到的清单文件不应该占用太多内存,而是使用库单独解析它。 这里:

    getPackageArchiveInfo

因此,就目前而言,这并不是一个好的解决方案,因为它的运行速度很慢,而且因为获取应用程序名称和图标需要我提供整个APK数据,这可能会导致OOM。 除非有办法优化库的代码...

问题

  1. 如何从APK文件的InputStream中获取APK信息(至少是我在列表中提到的内容)?

  2. 如果正常框架上没有其他选择,那么在哪里可以找到这样的东西呢? 有没有流行的库可以为Android提供它?

注意:当然,我可以将InputStream复制到文件中,然后使用它,但是这样做效率很低,因为我必须为找到的每个文件执行此操作,并且这样做会浪费时间和精力,因为这些文件已经存在 。


编辑:找到解决方法(在这里)以通过getPackageArchiveInfo(在"/proc/self/fd/" + fileDescriptor.fd上)获得有关APK的非常基本的信息后,我仍然找不到任何方法来获取应用程序标签和应用程序图标。 请,如果有人知道如何单独使用SAW(没有存储许可),请告诉我。

我为此设置了新的赏金,希望有人也能找到一些解决方法。


由于发现了一个新发现,我提出了新的悬赏计划:名为“ Solid Explorer”的应用程序以API 29为目标,但是使用SAF,它仍然可以显示APK信息,包括应用程序名称和图标。

即使在最初以API 29为目标时,它并没有显示有关APK文件的任何信息,包括图标和应用名称。

试用一个名为“插件检测器”的应用程序,我找不到该应用程序用于此目的的任何特殊库,这意味着可以使用常规框架来完成它,而无需非常特殊的技巧。

编辑:关于“ Solid Explorer”,似乎他们只是使用“ requestLegacyExternalStorage”的特殊标志,因此他们不单独使用SAF,而是使用常规框架。

因此,如果有人知道如何仅使用SAF获得应用程序名称和应用程序图标(并可以在工作示例中显示),请告诉我。

trans by 2020-01-26T17:45:56Z

如何使用非翻译字符串在Android Studio上签名APK?

背景

我最近将我的应用迁移到了Android Studio。 这样做有一些问题,但最终还是克服了。

问题

由于某种原因,在Android Studio上,当我尝试对APK进行签名时,出现了许多如下所示的错误:

Error:(16) Error: "..." is not translated in "de" (German), "el" (Greek), "iw" (Hebrew) [MissingTranslation]

(其中“ ...”是字符串)

在底部,经过很多此类错误之后,我看到了以下内容:

Error:Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
}
...

问题

我不确定发生了什么问题以及如何解决。 在Eclipse上,我非常容易做到这一点。 缺少翻译不应阻止我签署APK ...

在我看来,Lint似乎阻止了APK的导出,原因是我没有翻译所有字符串。 真的吗?

谁能帮帮我吗? 我该如何解决这个问题,以便Lint可以只显示警告? 还是确认对话框(如果我确定要这样做)?

trans by 2020-01-10T08:08:32Z

生成ap时反应本机Android复制文件错误

当我尝试使用./gradlew installRelease生成android apk时,在控制台中出现此错误:

~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi-v4/src_resources_img_loading.gif: error: Duplicate file.
~/React-Native/mockingbird/android/app/build/intermediates/res/merged/release/drawable-mdpi/src_resources_img_loading.gif: Original is here. The version qualifier may be implied.

我通过Android Studio尝试了build,然后再次运行./gradlew installRelease; 它也不起作用。

另外,我尝试删除build文件夹,但这也无济于事。

trans by 2019-11-15T07:27:28Z

1 2 3 4 下一页 共4页