Android:如何禁用调试以上传 apk

Posted

技术标签:

【中文标题】Android:如何禁用调试以上传 apk【英文标题】:Android: How to disable debugging to upload the apk 【发布时间】:2014-01-09 12:17:38 【问题描述】:

当我尝试在 Google Play 中上传我的应用时出现此错误。

上传失败

您上传了一个可调试的 APK。出于安全原因,您 需要禁用调试才能在 Google Play 中发布。 详细了解可调试的 APK。

我使用 android Studio 0.4.0 编译我的应用

我试图在我的 Manifest.xml - Android:debuggable="false" 中设置它,但什么也没发生。 当我试图在 .iml 文件中设置这个 <option name="SOURCE_GEN_TASK_NAME" value="generateReleaseSources" /> 时,又没有。

我在 build.gradle 中尝试过,但还是没有。

android 
    signingConfigs 
        debug 
            storeFile file("horoskopSms.jks")
            storePassword "1q2w3e"
            keyAlias "horoskopSms"
            keyPassword "1q2w3e"
        
    

我的.iml 文件

<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE"    type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android" name="Android">
  <configuration>
    <option name="SELECTED_BUILD_VARIANT" value="debug" />
    <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
    <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugJava" />
    <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
    <option name="SOURCE_GEN_TASK_NAME" value="generateReleaseSources" />
    <option name="ALLOW_USER_CONFIGURATION" value="false" />
    <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
    <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
    <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
    <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
    <option name="APK_PATH" value="/build/apk/HoroskopSms-debug-unaligned.apk" />
  </configuration>
</facet>
     <facet type="android-gradle" name="Android-Gradle">
     <configuration>
     <option name="GRADLE_PROJECT_PATH" value=":HoroskopSms" />
  </configuration>
</facet>
  </component>
           <component name="NewModuleRootManager" inherit-compiler-output="false">
        <output url="file://$MODULE_DIR$/build/classes/debug" />
      <exclude-output />
     <content url="file://$MODULE_DIR$">
   <sourceFolder url="file://$MODULE_DIR$/build/source/r/debug" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/debug" isTestSource="false" />

<sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/debug"         isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/build/source/rs/debug" isTestSource="false" />
     <sourceFolder url="file://$MODULE_DIR$/build/res/rs/debug" type="java-resource" />
  <sourceFolder url="file://$MODULE_DIR$/build/source/r/test/debug" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/build/source/aidl/test/debug" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/build/source/buildConfig/test/debug" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/build/source/rs/test/debug" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/build/res/rs/test/debug" type="java-test-resource" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
  <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/assets" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
  <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/aidl" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/assets" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/java" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/jni" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/rs" isTestSource="true" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/res" type="java-test-resource" />
  <sourceFolder url="file://$MODULE_DIR$/src/instrumentTest/resources" type="java-test-resource" />
  <excludeFolder url="file://$MODULE_DIR$/build/apk" />
  <excludeFolder url="file://$MODULE_DIR$/build/assets" />
  <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
  <excludeFolder url="file://$MODULE_DIR$/build/classes" />
  <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
  <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
  <excludeFolder url="file://$MODULE_DIR$/build/libs" />
  <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
  <excludeFolder url="file://$MODULE_DIR$/build/res" />
  <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
  <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="support-v4-19.0.0" level="project" />
<orderEntry type="library" exported="" name="ComAndroidSupportAppcompatV71900.aar" level="project" />
<orderEntry type="library" exported="" name="FortumoInApp-android-9.1.0" level="project" />
</component>
       </module>

【问题讨论】:

【参考方案1】:

这段代码对我有用

更改 debuggable false 和 minifyEnabled false insted of true 就像您的应用级别 build.gradle 文件中的以下代码

 buildTypes 
    release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable false
        signingConfig signingConfigs.firstapp
    

【讨论】:

【参考方案2】:

在 Android Studio 上,只需单击 build,然后选择 Generate Signed Apk...输入您的凭据和与您的应用相关的其他信息,然后就完成了。

【讨论】:

【参考方案3】:

这是因为你没有正确配置你的 gradle。请检查此链接 http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Signing-Configurations

【讨论】:

【参考方案4】:

我在 Android Studio 中找到了一个解决方案,我转到“构建变体”并将其从调试更改为发布。

【讨论】:

运行 assembreRelease 即可实现。 构建变体在哪里?【参考方案5】:

您不应使用 debug 作为 BuildVariant 在 Google Play 中签名和导出您的 apk。

您应该使用 Release BuildVariant。 Gradle 有一些默认值,可调试,您必须在 build.gradle 中覆盖这些值(这些值会覆盖 AndroidManifest 中的属性)。

更改您的 build.gradle,切换到 Release as BuildVariant(在左侧)并导出您的 apk。

android 
    signingConfigs 
        release 
            storeFile file("horoskopSms.jks")
            storePassword "1q2w3e"
            keyAlias "horoskopSms"
            keyPassword "1q2w3e"
        
   

【讨论】:

我将其更改为“发布”,但我再次从 Google Play 开发者控制台收到相同的消息。感谢您的帮助。 在导出你的apk之前,你必须在你的BuildVariant对话框中选择Realese Build(你可以在左边找到它)。【参考方案6】:

您可以在build.gradle 文件的构建类型中设置debuggable 属性;这将取代清单中的任何设置。你在那里什么都没做,是吗?您的发布版本的 debuggable 属性应该已经是 false。

您尝试将哪个版本上传到 Google Play?如果您要上传调试版本,那就是您的问题 - 改为上传发布版本。

【讨论】:

+1 部分是因为答案,部分是因为是互联网上唯一知道如何拼写“取代”的人。 真实的故事,我不知道如何拼写,但我的拼写检查器会。请不要拿走您的选票。

以上是关于Android:如何禁用调试以上传 apk的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React-Native 中禁用远程 JS 调试

在 Android Studio 中调试时如何禁用科学计数法?

如何调试/重置 Android 6.0 权限?

在发布的 Android 应用程序中完全禁用 LogCat 输出?

您上传了一个可调试的 APK。出于安全原因,您需要禁用调试才能在 Google Play 中发布 - 将 apk 上传到 google play

如何在调试模式下,在 react-native-firebase 中禁用 Crashlytics?