使用Android Studio构建未签名的APK文件


271

我正在使用Android开发人员工具开发一个android应用。现在,我尝试了新的Android Studio,如果将智能手机与PC连接并直接在Android Studio中运行该程序,则一切正常。但是现在我想在不将其他智能手机连接到我的PC的情况下测试该程序。

每次编译程序时,ADT都会在“ projectname / bin”下创建.apk文件。我现在如何看待Android Studio无法做到这一点。

所以我的问题是可以使用Android Studio创建未签名的.apk文件吗?


10
从技术上讲,您想要的是一个带有调试密钥签名的apk。实际未签名的apk将被设备拒绝。
克里斯·斯特拉顿

仅供参考,我们应该始终喜欢导出已签名的应用程序,如@Nirmal Dhara回答的那样。这样更安全。
Mukund

2
@ChrisStratton会一直被拒绝吗?
Sreekanth Karumanaghat

我用以下解决方案解决它:stackoverflow.com/a/56201481/8471798
canerkaseler

Answers:


325

我建议您使用Gradle构建APK文件:

  • 单击顶部工具栏中的下拉菜单(打开“编辑运行/调试配置”对话框)
  • 选择“编辑配置”
  • 点击“ +”
  • 选择“等级”
  • 选择您的模块作为Gradle项目
  • 在任务中:输入 assemble
  • 按运行

您未签名的APK现在位于

ProjectName\app\build\outputs\apk

有关如何使用Gradle的详细信息,可以使用本教程:在Android Studio中使用Gradle进行构建。我还写了一篇博客文章,介绍如何使用Gradle构建未签名的APK。

如果您从其他IDE中移出了项目而又不想重新编译,则可能会找到从以下位置移出的IDE中已内置的APK文件:

  • 如果您使用Android Studio生成了Project,则可以在以下位置找到APK文件 ProjectName/ProjectName/build/apk/...

  • 从eclipse导入项目:文件应位于同一目录中。转到Project- Show in Explorer。在那里,您应该找到APK文件所在的bin文件夹。

  • 从IntelliJ导入,位置为 ProjectName/out/production/...

旁注: 正如克里斯·斯特拉顿(Chris Stratton)在评论中所提到的:

从技术上讲,您想要的是一个带有调试密钥签名的APK。实际未签名的APK将被设备拒绝。


1
是的,我从eclipse导入了项目。但我的情况下,Android Studio并未触及bin文件夹。经过一点搜索,我自己找到了它。以我
为例

只有在您从IntelliJ切换到
bpoiss的

9
我直接使用Studio生成了项目,但是项目的任何文件夹中都没有名为“ bin”的文件夹。在“ build”文件夹中,只有两个文件夹,即“ res”和“ source”,没有“ bin”文件夹。你现在可以建议我一些吗?
Himanshu Aggarwal

25
Click the dropdown menu in the toolbar at the top这太一般了。什么下拉菜单?什么工具栏?
dthree

3
@dthree您可以单击顶部菜单栏上的“运行”,然后从下拉列表中选择“编辑配置”
Gema Megantara '18

226

根据使用Gradle构建未签名的APK,您可以简单地使用gradle构建应用程序。为了做到这一点:

  1. 单击顶部工具栏上的下拉菜单(通常带有android图标和您的应用程序名称)
  2. 选择 Edit configurations
  3. 单击左上角的加号或按 alt+insert
  4. 选择 Gradle
  5. 选择您的模块为 Gradle project
  6. Tasks:进入assemble
  7. OK
  8. 按播放

之后,您应该在目录中找到未签名的“ apk” ProjectName\app\build\outputs\apk


1
+使用android {lintOptions {checkReleaseBuilds false abortOnError false} [....]}编辑build.gradle,它可以正常工作!谢谢
Steffi 2015年

谢谢marcin ...它的工作..要注意的一件事是,我在Android Studio中找不到“ outputs / apk”文件夹。它仅出现在文件系统中
。– Govind

在根项目“ bin”中找不到任务“汇编”。
nVentimiglia,2015年

第2票。这应该是正确的答案。我在使用项目导入的干净android studio安装上遇到了这个问题。您必须经历此手动设置才能从构建中获取任何apk文件。
rickfoosusa

它可以在1.5.1中运行,但是即使选择了单个模块,实际上也可以构建整个项目apk。
sandrstar '16

94

我猜最简单的方法是:

  • 打开右侧的Gradle选项卡
  • 双击YourProject /:app / assemble(或assembleDebug)
  • 您可以在此处找到apk
    ... / YourProject / app / build / outputs / apk / app-debug.apk

屏幕截图


1
谢谢,比接受的答案简单得多,并且不允许每次运行都
生成

42

只需转到BUILD-> Build APK并完成


8
+1。一个非常简单的方法。顺便说一句,您可以在AndroidStudioProjects/<APP NAME>/app/build/outputs/apk/debug/app-debug.apk
Spikatrix

就这么简单,非常感谢,它起作用了,感谢它。
Zeyad

23

步骤1 打开android studio。生成->生成签名的APK…。现在单击“生成签名的APK”。

在此处输入图片说明

第2步

在此处输入图片说明

单击新建。

第三步

填写详细信息,然后单击确定。 在此处输入图片说明

jks键详细信息,它将返回到上一个窗口。

在此处输入图片说明

单击下一步,然后输入您存储在密钥中的密码。

第4步

在此处输入图片说明

现在,单击完成并等待完成构建过程。

在此处输入图片说明

现在,apk生成成功。单击在资源管理器中显示。

在此处输入图片说明

如果您需要更多详细信息,请访问并查看现场演示http://javaant.com/how-to-make-apk-file-in-android-studio/#.VwzedZN96Hs


3
问题要求未签名的apk
ravelinx


14

是的,可以使用Android Studio创建未签名的.apk!

突出项目包浏览器或项目列,然后File- Project Structure- Artifacts- +- Android Application- From module 'your app'然后你可以改变位置和一些其他的选择。我启用make只是为了轻松。


它会弹出消息“稍后我们将提供UI来配置项目设置。在此之前,请手动编辑build.gradle文件。”现在我该怎么办?
Himanshu Aggarwal

8
如果我那里没有任何“人工制品”怎么办?
松鼠

打加号左顶部,你可以去Android应用程序
CACuzcatlan

jetbrains.com/idea/webhelp/artifacts.html 使用工件的目的是什么?我以为是生成未签名的apk调试apk等,但是似乎只要您从gradle菜单中运行assemblerelease(至少在intellij IDE中),您似乎可以直接转到build / apk文件夹来获取未签名的apk。我刚刚配置了工件,但在弄清楚该如何处理时遇到了麻烦。有人可以帮忙弄清楚区别和用法,还是向我指出正确的方向?
cjayem13

@ cjayem13有些项目不使用Gradle。
Marc Plano-Lesay 2015年

11

在OSX上使用Android Studio 2.2.3时,我只使用了顶部菜单:

Build > Build APK

它使用.apk文件打开了Finder 。这不会生成签名的APK。Generate Signed APK如果需要,可以从同一菜单中选择。


我试图生成一个已签名的APK,但它要求输入密钥存储路径。应该在那里提供什么?
codeinprogress


11

AndroidStudio 3.4


Grade Build Running完成后,你会看到在右下角像通知。

单击locate,您将看到可调试的APK


10

只需转到您的Application \ app \ build \ outputs \ apk

并复制到手机并安装app-debug.apk


1
是否真的有必要复制两个文件?
Vahid Ghadiri 2015年

4

为我工作:

如果已在build.gradle中进行设置,则将以下设置保留为空白。

signingConfigs {
        release {
            storePassword ""
            keyAlias ""
            keyPassword ""
        }
    }

然后从“编辑器”窗口中选择“ Gradle Task”。如果创建,它将显示所有风味的列表。

在此处输入图片说明


3

-在signingConfigs中创建新的配置

unsigned {
        //do not sign
    }

-在buildTypes中创建构建类型

unsigned {
        versionNameSuffix '-unsigned'
    }

---进行构建,并选择未签名的标准。建立专案。

---转到“输出/ apk”并找到“ XXX-unsigned.apk”。要检查它是否未签名,请尝试将其安装到设备上-您将失败。


这是行不通的。您需要定义signinigConfig有点不同(摘自stackoverflow.com/a/18121401/624109signingConfigs{ unsigned{ storePassword = "" keyAlias = "" keyPassword = "" } }
Muzikant

1

现在在Android Studio v1.1.0中应该是:

  1. 选择Run>Run <your app>
  2. 在中找到.apk文件 <your app>\build\outputs\apk

我正在使用1.2.1.1,但是您的方法无效。我必须创建一个Gradle组件!
程序员

0

Android Studio还会在每次编译程序时创建apk文件,只需转到您的工作区文件夹并找到app-> build-> outputs->即可看到该apk文件。


0

您可以点击工具栏上“运行”按钮附近的下拉菜单,

  1. 选择“编辑配置”
  2. 点击“ +”
  3. 选择“等级”
  4. 选择您的模块作为Gradle项目
  5. 在“任务”中:输入assemble

现在按确定,

现在,您需要做的就是从下拉列表中选择配置,然后按运行按钮。需要一些时间。您未签名的APK现在位于

Project\app\build\outputs\apk

0

我解决了!

首先,您应该添加以下内容:

defaultConfig { 
 multiDexEnabled true
}

dependencies {
 implementation 'com.android.support:multidex:1.0.3'
}

之后,您应点击Android Studio顶部栏中的Build

构建 >构建包/ APK>构建APK

最后,您在以下位置有一个app-debug.apk文件:

应用程序>构建>输出> apk>调试> app-debug.apk

注意:Android Studio在输出文件中自动创建的apk,debug,app-debug.apk文件。


0

创建未签名APK的步骤

注意:从技术上讲,您想要的是一个带有调试密钥签名的APK。实际未签名的APK将被设备拒绝。因此,如果在设备中安装,未签名的APK将给出错误。


我收到他的错误“无法将进程工作目录设置为“ C:\ Users \ marad \ .gradle \ daemon \ 5.2.1 \ My Application”:无法设置当前目录(错误号2)”
ass-king某些问题

0

对于未签名的APK:只需将signingConfig设置为null。它将为您提供appName-debug-unsigned.apk

debug {
     signingConfig null
}

并从“构建”菜单构建。请享用

对于签名的APK:

signingConfigs {
        def keyProps = new Properties()
        keyProps.load(rootProject.file('keystore.properties').newDataInputStream())
        internal {
            storeFile file(keyProps.getProperty('CERTIFICATE_PATH'))
            storePassword keyProps.getProperty('STORE_PASSWORD')
            keyAlias keyProps.getProperty('KEY_ALIAS')
            keyPassword keyProps.getProperty('KEY_PASSWORD')
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.internal
            minifyEnabled false
        }
        release {
            signingConfig signingConfigs.internal
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

keystore.properties文件

CERTIFICATE_PATH=./../keystore.jks
STORE_PASSWORD=password
KEY_PASSWORD=password
KEY_ALIAS=key0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.