Articles of apk

签署Android版本构建“无法从密钥库读取密钥”

我正在使用gradle (assembleRelease)来生成发布apk。 我已将keystore文件保存在project / app / filename.keystore中(在应用程序中) 我已经指定了与登录gradle.properties文件相关的详细信息 RELEASE_STORE_FILE=filename.keystore RELEASE_STORE_PASSWORD=**** RELEASE_KEY_ALIAS=alias RELEASE_KEY_PASSWORD=**** 我的build.gradle文件与签名有关 signingConfigs { release { storeFile file(RELEASE_STORE_FILE) storePassword RELEASE_STORE_PASSWORD keyAlias RELEASE_KEY_ALIAS keyPassword RELEASE_KEY_PASSWORD } } 我在同一个gradle文件中指定了签名配置,如下所示 buildTypes { release { signingConfig signingConfigs.release } } 但是,当我尝试创建发布版本时,我不断收到以下错误 Error:Execution failed for task ‘:app:packageRelease’. > Failed to read key from keystore 我试过跟随 提供错误的密码以查看是否可以find该文件。如果错误,请使用正确的路径给出以下错误,我认为可以find该文件。 无法从商店“”读取密钥:密钥库被篡改,或密码不正确 感谢您的意见!

Android Studio已签名APK未安装

我在Android Studio中并在Build> Generate Signed APK和使用向导下签署APK。 一切似乎都很好,并生成.apk文件。 当我将此文件复制到我的设备(Nexus 7或Moto X)时,它将无法安装。 我收到“安装失败”消息。 我无法弄清楚到底出了什么问题。 我已经把这个.apk放在谷歌游戏开发者控制台的“alpha测试”下,它被接受了(我正在等待测试人员链接变得活跃,尝试从那里下载/安装)。 这里向导的说明( http://developer.android.com/tools/publishing/app-signing.html#studio )在最后阶段的屏幕截图中显示了一个名为“Build Type”的下拉列表,选择为“release” 。 我的Android Studio版本没有。 我在这个向导中找不到任何可以指定“发布”版本的东西。 任何人都可以给我的帮助将非常感激。 谢谢!

导致此Android APK上传错误的原因:“不可升级的APK”

我在Google Play商店中安装了Android APK,目标SDK为23。 我发布了一个新版本(相同的目标SDK),谷歌向我显示了这个错误: 如果我继续(我学到了很难),那么当前用户都无法升级到此版本。 我不得不恢复代码,增加构建号并重建APK以“回滚”到可用的版本。 但是,我无法解决为什么谷歌显示我这个错误。 请注意,“0支持的Android设备”是一个红色鲱鱼 – 它是过去24小时内Google Play中的已知问题 – 如果您发布APK,则会显示实际数量的设备。 请给我一些关于差异是什么或导致此错误的原因: 不可升级的APK警告此APK的任何用户都无法升级到此版本中添加的任何新APK。 提示确保将所有新APK添加到此版本中。

生成apk时React Native 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尝试了./gradlew installRelease Build->Clean Project并再次运行./gradlew installRelease ; 它也没用。 此外,我尝试删除build文件夹,但它也没有帮助。

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

我想使用存储在我的Yubikey的OpenPGP小程序中的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的设计和我的最低安全要求。 因此,出口和对话不是一种可能的解决方案。

如何使用APK访问Android STK菜单?

我想使用STK访问Android手机上的SIM卡菜单。 我正在尝试编写一个显示SIM菜单的APK并对其执行操作。 但是,由于该软件将由用户使用,因此可能无法替换OS核心模块。 我怎样才能做到这一点?

应用程序仅在发布版本中崩溃

在调试模式下运行应用程序时,应用程序无法崩溃。 但是当生成.apk文件时释放应用程序崩溃。 所有手机上都没有出现此错误 ,只有少数拥有android 6的手机 。 logcat显示问题是类中的NullPointerException ( android.support.v4.widget.drawerlayout )。 NullPointerException如何仅在发布apk上启动? 我们已经禁用了proguard,minify和shrinkResources。 没有解决这个bug。 这里有一些日志: Attempt to invoke virtual method ‘int android.view.WindowInsets.getSystemWindowInsetLeft()’ on a null object reference at android.support.v4.widget.ia(Unknown Source) at android.support.v4.widget.DrawerLayout$da(Unknown Source) at android.support.v4.widget.DrawerLayout.onMeasure(Unknown Source) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.widget.ContentFrameLayout.onMeasure(Unknown Source) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)

存储中的Android构建与通过USB安装的apk的行为不同

我有一个非常令人困惑的问题。 我已经构建了我的应用程序的最终版本APK,将其提交到Play商店,并安装在我的测试设备上。 当我以这种方式安装时,应用程序展示了不同的启动模式行为。 我生成的APK是Gradle版本的产品,包括Proguard和zipalign。 为了便于解释,请说我的应用程序是一个仪表板types的应用程序,其主要活动显示活动B的启动按钮。我采用此版本APK并通过USB’adb install’将其安装到我的设备,所以我正在比较完全相同的APK有两种不同的安装方法。 USB方法:当用户单击主活动中的按钮以启动活动B时,活动B将启动并显示在屏幕上。 如果用户点击主页按钮(接到电话等)然后返回应用程序,活动B仍然显示。 这是期望的(AND EXPECTED)行为。 存储方法:从商店下载APK并再次安装/启动显示主要活动。 单击该按钮时,将再次启动活动B. 现在,当用户回到主页并返回时,后面的堆栈显然被清除,主活动再次显示。 我没有在清单中指定任何特殊的启动模式,因此所有活动都是标准的。 安装方法怎么会影响这样的事情呢? 这让我很生气。 有谁知道为什么会发生这种情况?

Android将当前包的签名与debug.keystore进行比较

正如我们所做的那样,当它处于开发模式(构建)时,我有一个由debug.keystore(默认情况下)签名的应用程序。 当它投入生产时,我们用我们的私钥签名。 有没有办法在运行时确定当前包是用debug.keystore签名的(处于开发模式)还是用我们的私钥签名(处于生产模式)。 我尝试过类似的东西 PackageManager packageManager = getPackageManager(); try { Signature[] signs = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES).signatures; for (Signature signature : signs) { Log.d(TAG, “sign = ” + signature.toCharsString()); } } catch (NameNotFoundException e) { e.printStackTrace(); } 我不知道接下来该做什么? 这是正确的方法吗? 如何获得类似的debug.keystore签名? 我知道存在MD5指纹keytool -list -keystore ~/.android/debug.keystore但是在Signature类中没有keytool -list -keystore ~/.android/debug.keystore “md5指纹”的方法。 我想这样做是因为MapView Key,Logging,LicenseChecker和这样的东西。

Android支持库大大增加了APK的大小

我正在Android项目中使用AppCompat支持库。 AppCompat有很多可绘制的资源和资源,我在我的应用程序中没有使用。 那些不必要的文件将我的900K应用程序增加到2M以上,这是我不喜欢的。 有没有办法在创建APK文件时排除这些文件? 或者我应该在我的代码中混淆库而不是依赖? 我在Android Studio中使用Gradle。 谢谢 编辑1我已经使用了proguard。 但是proguard不知道我不想有drawable-xxxhdpi或者values-it例如。 编辑2我也使用Android Lint,它无法帮助我,因为我不直接访问lib的代码,并且android在构建APK文件时添加它们。