2014-01-30 101 views
6

我是新来的Android Studio和运行设备上的调试版本工作正常,但在应用程序采购测试(显然释放)我需要一个版本生成签署与正常键。我可以使用Build - > Generate signed APK制作APK,但是包名似乎不正确。这是我的构建文件:Android工作室 - 释放APK的味道

apply plugin: 'android' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.1" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 9 

     testPackageName "com.company.common.common" 
     testInstrumentationRunner "android.common.InstrumentationTestRunner" 
    } 

    signingConfigs { 
     releaseConfig { 
      storeFile file("filname") 
      storePassword "password" 
      keyAlias "alias" 
      keyPassword "password" 
     } 
    } 

    buildTypes { 
     debug { 
      packageNameSuffix ".debug" 
     } 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
      signingConfig signingConfigs.releaseConfig 
     } 
    } 

    productFlavors { 
     Flavor1 { 
      packageName "com.company.test" 
     } 
    } 
} 

dependencies { 
    // some dependencies 
} 

请注意包装中的名称被重写。这种味道没有清单;唯一的清单是在main下,并指定一个com.company.common包。如果我使用Android创建com.company.test APK并将其安装到设备上,然后从Android Studio生成APK并进行安装,则最终会在设备上显示两个应用程序,而不是第二个应用程序替换第一个应用程序。这表明软件包名称是不同的,我假设,因为Android Studio正在生成一个包含com.company.common包的APK。不知道如何验证。

当我刚建立项目,我得到一个调试APK,但没有释放APK。如何获得正确包名的发布APK?我刚刚从Android Studio运行了应用程序,它说它正在安装com.company.test.debug,并且它需要在安装前卸载应用程序。所以现在我正在考虑生成签名的APK生成一个与调试包的构建。

到目前为止,这是阻止我转移到Android Studio和Gradle的问题。一旦我过去了,我想我很清楚要把所有的东西都搬走,所以我希望有人能帮我弄明白!

+0

我在命令行上使用“gradle assembleRelease”来确保我正在创建一个发布版本。您还应该能够使用“installFlavor1Release”任务进行测试。 –

回答

7

在您选择的签署了产生APK选项,进入构建变量窗口,选择发布构建变量。 生成签名APK命令会采用任何当前生成类型并在其中签名。在这种情况下,这显然不是你想要的;错误https://code.google.com/p/android/issues/detail?id=56532正在请求改进。

+0

工作,谢谢!从我的文档阅读中,似乎应该可以进行设置,以便在构建项目时自动生成调试APK和发布APK,而无需转至生成已签名的APK。我误解了,还是我的配置错了,或者它可能是AS中的一个错误? – user1854994

+0

有没有这样的事情作为一个未签名的APK - 甚至调试版本使用调试密钥签名。因此,如果您通过命令行或Android Studio中的普通构建命令构建发布版本,它将使用您的build.gradle文件中指定的密钥进行签名,这是您使用生成签名APK向导设置的密钥 - 这都是相同。如果您尚未安装,则向导会填写构建文件中的条目。 –

+0

是的我知道,我说的是当我做一个构建(Ctrl-F9)时,它会产生一个签名的调试APK,就是这样。没有发布APK。由于我拥有gradle构建文件中的所有签名信息,是否有办法让它也生成每个构建的签名版本APK?或者我总是必须去建立 - >生成签名的APK? – user1854994