标签: apk

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

背景

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

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

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

问题

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

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

一种。 BitmapFactory.decodeResource(packageManager.getResourcesForApplication(applicationInfo),packageInfo.applicationInfo.icon, bitmapOptions)

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

C。 ResourcesCompat.getDrawable(packageManager.getResourcesForApplication(applicationInfo), packageInfo.applicationInfo.icon, null)

它还有很多其他功能,它们可以返回您,还有很多可选功能,但我认为这些是有关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?) { …
Run Code Online (Sandbox Code Playgroud)

android inputstream apk android-package-managers scoped-storage

51
推荐指数
2
解决办法
1519
查看次数

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
Run Code Online (Sandbox Code Playgroud)

我使用的软件:

Java的

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)
Run Code Online (Sandbox Code Playgroud)

日食

Version: 3.8.0
Build id: I20120502-2000
Run Code Online (Sandbox Code Playgroud)

最新的ADT插件

最新的Android SDK

这就是我所知道的:

  • 我没有丢失密码,它从未改变过.
  • 我无法检索密码(我知道通行证).
  • 在没有发布全新应用程序的情况下,我无法使用不同的密钥签署现有应用程序(因此我无法发布任何更新).

这是我做的:

  • 我已经多次卸载并重新安装了Eclipse. …

java android keystore jarsigner apk

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

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

我想要一个Android构建系统过程,命令行或Eclipse,从单个源代码库生成几个.apk文件.一些常见的原因 - 具有不同要求的市场或免费和付费版本的特定版本.

这个问题不是关于:

Google 表示 "您可能需要为每个要发布的APK创建单独的Android项目,以便您可以单独进行适当的开发.您只需复制现有项目并为其命名即可." 然后他们建议使用我理解的库.然后,他们提到我确实想要的东西:"一个可以根据构建配置输出不同资源的构建系统"

  • 我知道要在JAVA中完成条件编译,可以关闭'public static final'变量.有一个在build.xml 中调整这样一个值的例子.有关这个的Android Ant构建配置的更完整示例,或者现在正在执行此操作的OSS项目的链接,请?BTW,build.xml是自动生成的,但是我看到有人乱砍它,那么它是如何工作的呢?

  • 使用在Manifest.xml中声明的包名称为package ="com.example.appname",如果需要发出多个名称不同的.apks,那么每个包含一个单独的项目吗?

ant android apk

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

Android Export因为发现致命错误而中止

我无法导出已签名或未签名的应用程序包

http://imageshack.us/photo/my-images/163/imagewgnb.jpg/

*Export Aborted
Export aborted because fatal Lin error were founds. These are listed in the
problems view. Either fix these before running Export Again, or turn off "Run
full error check when exporting app" in the Android > Lint Error Cheking preference page.*
Run Code Online (Sandbox Code Playgroud)

方案:

Window>Preferences>Android>Lint Error Checking

uncheck Run full error check when exporting app
Run Code Online (Sandbox Code Playgroud)

android signed export apk

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

iOS中的apk相当于什么?

我不确定之前是否提出过这个问题(我做了搜索但找不到答案).什么是相当于apkiOS

apk ios

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

classes.dex文件在apk文件中的作用

用winrar打开apk文件时(s/w打开压缩文件).我在apk中收到了一堆文件.其中classes.dex是一个.我的问题是这个文件的作用是什么,如果我们修改/删除相同的文件会影响apk吗?

android apk

48
推荐指数
4
解决办法
5万
查看次数

如何解决"你的APK版本代码需要高于2".在Google Play的开发者控制台中?

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

您APK的版本代码需要高于2.

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

android apk cordova

48
推荐指数
5
解决办法
6万
查看次数

Flutter:Gradle 构建未能生成 .apk 文件。很可能这个文件是在<app_root>\build下生成的,但是工具找不到

我正在尝试试驾一个应用程序。由于应用程序无法调试/运行,我一直遇到这个问题的奇怪问题。SDK 版本为 28,其余版本如下:

Flutter 1.13.9-pre.79 • channel master • https://github.com/flutter/flutter.git
Framework • revision 9eb9ea0ffa (6 hours ago) • 2020-01-13 21:30:42 -0800
Engine • revision 0235a50843
Tools • Dart 2.8.0 (build 2.8.0-dev.0.0 28c335d5a2)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Gradle 构建未能生成 .apk 文件。这个文件很可能是在 C:\Development\\build 下生成的,但工具找不到它。

有没有办法通过向 Gradle 提供或提供输出路径来传递这个问题或允许我运行的配置?.apk 似乎是在错误状态下生成的。

在此处输入图片说明

更新:

Android Studio -v 3.5.3 
Gradle -v 3.4.2 
Gradle Wrapper -v 5.1.1
Run Code Online (Sandbox Code Playgroud)

android gradle apk dart flutter

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

测试adb更新,而不是安装?

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

我明确需要测试应用更新.

android adb android-emulator apk

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

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

我正在尝试了解如何在使用Google Play App Signing时将应用上传到Google Play.

这是我做的:

  1. 创建了一个应用程序
  2. 使用keytool.exe为该应用程序生成密钥
  3. 已将应用上传到Google Play
  4. 已注册Google Play App Signing
  5. 尝试再次上传应用程序但没有成功.

它抱怨证书不是证书

将新APK上传到制作

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

搜索了一会儿之后.我找到了如何将认证发布到我的密钥库中的Google Play控制台上.像这样的东西:

keytool.exe -importcert -file upload.pem -keystore myapp-release-key.keystore

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

keytool.exe -list -keystore trackcoachfull-release-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:无法从商店"C:\ Users\Admin\AndroidStudioProjects\keystores\myappfull-release-key.keystore"读取密钥uploadkey:受信任的证书条目未受密码保护

我的问题是:

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

谢谢

android keytool apk google-play android-app-signing

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