当前位置:首页 > Android

Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包

jsc10年前 (2016-09-20)Android3973

官方文档:https://developer.android.com/tools/publishing/app-signing.html


默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore

比如 C:\Users\chengcj1\.android\debug.keystore

1.利用Gradle命令行进行签名


    a. Release Mode 签名:

     build.gradle

android {  
    signingConfigs {  
        releaseConfig {  
            keyAlias 'stone'  
            keyPassword 'mypwd'  
            storeFile file('/Users/stone/Documents/project_AS/myapplication/stone.keystore')  
            storePassword 'mypwd'  
        }  
    }  
        buildTypes {  
           release {  
             ...  
             signingConfig signingConfigs.release  
           }  
        }  
  
}

   signingConfigs 即签名配置。 配置名releaseConfig{ //配置内容 }

   在buildTypes中指定release时的signingConfigs对应的配置名 


  b. 执行gradle 命令, $ gradle assembleRelease 

    编译并发布。 在build/outputs/apk/ 下能看到未签名的apk 和 已经签名的apk

    如果未用签名文件,使用debug mode的debug签名。那就会生成一个debug签名的apk


  c. 签名密码写在gradle中不安全:

signingConfigs { //gradle assembleRelease  
    myConfig {  
        storeFile file("stone.keystore")  
        storePassword System.console().readLine("\nKeystore password: ")  
        keyAlias "stone"  
        keyPassword System.console().readLine("\nKey password: ")  
    }  
}

   这样在命令 执行 命令时,就会被要求输入密码


2. 使用Android Studio 签名打包


   菜单 Build > Generate Signed APK


3. 使用Android Studio 自动签名打包

   a. 打开Project Structure,打开方法如下:

1.png

  b. 选中需要构建的moudle,打开Signing,添加config

2.jpg

       执行完成后,会在build.gradle中自动加上 signingConfigs{ config {...} }的信息

       c. 打开Build Types -> release

3.jpg

   在signing Config中选择定义的配置

    zip align enabled 默认为true, 用于启用优化Apk的操作

    d. $ gradle build

    会在build/outputs/apk/ 目录下输出 在build types中定义的编译类型。如:

    myapplication-debug-unaligned.apk
    myapplication-debug.apk
    myapplication-release-unaligned.apk
    myapplication-release-unsigned.apk
    myapplication-release.apk

4. 使用Android SDK 和 JDK 的命令 签名打包APK

 创建签名
  keytool -genkey -v -keystore stone.keystore -alias stone -keyalg RSA -keysize 2048-validity 10000  生成签名文件
 为apk签名
  jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore stone.keystore unsigned.apk stone 不生成新文件
 检测apk是否签名
  jarsigner  -verbose -certs -verify signed.apk 
 优化apk
  zipalign -f -v 4 signed_unaligned.apk signed_aligned.apk 

转自http://blog.csdn.net/shineflowers/article/details/45042485

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/130.html

分享给朋友:

“Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包” 的相关文章

Android中AsyncTask的简单用法

Android中AsyncTask的简单用法

在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好 的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提供了一个类Handler来在子线程中来更新UI线…

Android中使用PULL方式解析XML文件

Android中使用PULL方式解析XML文件

      Pull解 析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素 并触发相应事件。跟SAX不同的是, Pull解析器产生…

TypedArray和obtainStyledAttributes使用

TypedArray和obtainStyledAttributes使用

在编写Android自定义按钮示例基础上,如果要指定字体大小产生这样的效果: 其实是不需要自定义变量的,可以直接使用......…

ViewPager + HorizontalScrollView 实现可滚动的标签栏

ViewPager + HorizontalScrollView 实现可滚动的标签栏

这是一个可滑动的标签栏的自定义控件,参考此文章http://blog.csdn.net/fx_sky/article/details/8990573,我将主要的功能整合成一个类,配上2个特定的布局即可使用。 效果图:    主要布局文件:<?xml&nb…

Android中的消息通知(NotificationManager和Notification)

下面来谈谈notification,这个notification一般用在电话,短信,邮件,闹钟铃声,在手机的状态栏上就会出现一个小图标,提 示用户处理这个通知,这时手从上方滑动状态栏就可以展开并处理这个快讯。已添加的Notification.Builder,使其更容易构建通知。 notifica…

onTextChanged参数解释及实现EditText字数监听

由于最近做项目要检测EditText中输入的字数长度,从而接触到了Android中EditText的监听接口,TextWatcher。它有三个成员方法,第一个after很简单,这个方法就是在EditText内容已经改变之后调用,重点看下面两个方法:beforeTextChanged(CharSequ…