Android Studio打包签名apk

Android Studio 利用系统签名打包apk Android Studio 利用系统签名打包apk 概要介绍。 阅读详情

 如果你需要开发一个带有系统权限的app,往往需要配置SharedUserId,比如:


<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
    package="com.cxq.signdemo"  
    android:sharedUserId="android.uid.shell">  
  
    <application  
        android:allowBackup="true"  
        android:icon="@mipmap/ic_launcher"  
        android:label="@string/app_name"  
        android:supportsRtl="true"  
        android:theme="@style/AppTheme">  
        <activity android:name=".MainActivity">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  


此时,如果直接在AS中run,app是装不上的,需要先生成app,然后再使用系统文件对apk进行签名,

java -jar signapk.jar  platform.x509.pem platform.pk8 signDemo.apk signDemo_signed.apk

这样才能将apk安装到手机上。

虽然能够满足使用,但是作为开发者,不免会遇到需要调试的情况,然后这种离线的签名方式,就没法调试。。。严重影响了开发的效率,因此,本文介绍一中在线打包签名的方式。

需要准备的文件:

keytool-importkeypair (下载)

platform.x509.pem、platform.pk8(位于../build/target/product/security)

其本质的原理是给apk加上开发者签名(jks文件),使用keytool-importkeypair 对jks文件进行系统签名,在出包的时候,直接使用带有系统签名的jks对apk进行签名,这样编译生成的apk文件就自带系统签名了

1、生成你自己的jks文件,如果没有的就新建,点击Create New ...  设置密码(123456) 然后Next -- Finish

签名成功后点击 Show in Explorer 可以看到签名成功后的apk,接着可以用360加固一下apk

2、使用keytool-importkeypair对jks文件引入系统签名

把keytool-importkeypair、platform.x509.pem、platform.pk8和上一部生成的jks文件统一放到一个文件夹下,比如我的是放在工程目录的signAPK目录下

将下载好的keytool-importkeypair配置一下,其实主要就是配置一下环境变量,不熟悉的可以阅读官方文档,然后使用下面这条命令(需要在linux下,用windows的可以去在linux下生成jks,然后复制出新的jks回原目录也可以)对jks文件引入系统签名

./keytool-importkeypair -k [jks文件名] -p [jks的密码] -pk8 platform.pk8 -cert platform.x509.pem -alias [jks的别名]

如:
./keytool-importkeypair -k SignDemo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias SignDemo
运行完这条命令之后,我们就得到了有系统签名的jks

3、配置gradle(app)
在在android区域下(与defaultConfig同级)添加signingConfigs配置:
依次填写jks的路径,密码,别名等


apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
 
    defaultConfig {
        applicationId "com.cxq.signdemo"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    signingConfigs {
        release {
            storeFile file("../signApk/SignDemo.jks")
            storePassword '123456'
            keyAlias 'SignDemo'
            keyPassword '123456'
        }
 
        debug {
            storeFile file("../signApk/SignDemo.jks")
            storePassword '123456'
            keyAlias 'SignDemo'
            keyPassword '123456'
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
 
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
}

点击run就可以运行啦

Android Studio使用签名打包发布APP(安卓生成apk文件) 相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;点击文档前往获取面试资料与视频教程;【阿里P7级别Android架构师技术脑图+全套视频】自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 阅读详情

相关推荐

HBuilderX+Android Studio本地打包Uniapp安卓Apk全流程(附签名问题解决方案)

本文详细解析了使用HBuilderX与Android Studio进行Uniapp安卓应用本地打包的全流程。从环境搭建、SDK集成、工程配置到资源编译与签名,提供了企业级流水线的构建指南,并重点解决了签名不一致等常见问题,帮助开发者实现高效、可控的离线打包。

star5的专栏 556

Android Studio 打一个正式签名的Apk

Android 签名正式包的步骤

jw_45840的专栏 3155

Android Studio APK打包(签名)(1)

给大家分享一份移动架构大纲,包含了移动架构师需要掌握的所有的技术体系,大家可以对比一下自己不足或者欠缺的地方有方向的去学习提升;《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!**

2301_78416573的博客 483

Android Studio打包APK

Android Studio打包APK

susu1083018911的博客 1万+

手把手教你用LayaAir打包安卓APK

LayaAir版本:1.7 jdk版本:jdk-12.0.1_windows-x64_bin地址链接PS:我本人是用的最新的jdk版本 sdk版本:24.1.1地址链接 Android Studio版本:android-studio-ide-182.5264788-windows地址链接 SDK配制环境:https://blog.youkuaiyun.com/zeternityyt/arti...

qq_40303068的博客 1万+

408王道计算机组成原理强化——指令系统及大题解构

1.大纲要求 2.x86

JiangNan_1002的博客 8511

Android Studio 打包APK(详细版)

修改app下的build.gradle// 自定义打包名称添加位置如下图所示,在android{}闭包中添加后记得Sync一下,然后重新打一个包,这里我将打包的路径修改到了D盘,如下图所示点击Finish完后打包。包的确是生成了,名字也不再是app-release.apk。自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

hnsgsdsagaaq的博客 9623

从零构建安全通信:mbedtls与ECDSA在嵌入式系统中的实战指南

本文详细介绍了如何在嵌入式系统中使用mbedtls和ECDSA实现安全通信,重点探讨了ECDSA相比RSA的优势、mbedtls的模块化裁剪策略、密钥安全存储方案以及完整的签名验签流程。通过实战案例和优化技巧,帮助开发者在资源受限环境下构建高效可靠的安全通信系统。

weixin_28338005的博客 685

农民工看完都学会了!Android高级工程师每日面试题精选,2年以上经验必看_android高级工程师刷题(1)

感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。

2401_83977626的博客 924

CAN总线错误帧全解析:从数据包到硬件层的故障树分析

本文深入解析CAN总线错误帧的故障树分析方法,从数据包到硬件层全面剖析错误机制。通过物理层信号测试、数据链路层错误解码和应用层协议排查,提供系统化的诊断框架。结合CANoe配置和示波器波形分析,帮助工程师快速定位总线故障,提升系统可靠性。

weixin_26742753的博客 487

Nettrace 源码分析

文章介绍:本文将围绕腾讯开源项目nettrace工具中数据采集,数据处理,数据分析三个模块深入源码分析其实现细节

abobob的博客 989

Android studio打包APK流程及给APK系统签名步骤

打包APK相关问题Android Studio 打包APK流程对APK命名的优化打包APK给第三方APK进行系统签名Android 中的签名系统默认的四种签名类型系统默认的四种签名类型文件的位置对 APK 进行签名①使用自己的 Android 签名工具对 APK 进行签名(网上资料)②使用过程中问题 Android Studio 打包APK流程 对APK命名的优化 ① 自定义APK名字 修改app下的build.gradle // 自定义打包名称 android.applicationVariant

一只立志于养老婆的程序猿 3347

直升机空气动力学基础--005翼型的升阻比和气动力矩

焦点与翼型有关,总升力矩可以视为附加升力与零升力迎角升力的合成,对于对称翼型,零升力力矩为0,附加升力就是总升力,其焦点就是其压力中心。对于对称翼型,零升力力矩为0,对于非对称翼型,零升力力矩存在,与不对称度成正比。对于不对称翼型,升力对焦点的力矩保持不变。

ygf666的博客 4129

android studio签名打包设置,android studio打包apk,生成签名不签名

前言刚换工作,改现有团队项目,之前是使用的android studio做的签名,因发现多渠道打包存在问题签名损坏问题,则需要生成自己指定的形式APK。总结注意:在打包发布到各个软件市场的童鞋,有一个问题需要注意,现在都需要对apk进行加固,加固后是会导致之前签名文件损坏的,这里建议需要上传软件市场的包,最好不要先签名,先加固后再签名;如果在导出时已经签名,则建议重新使用加固方法签名一次后再加固,完...

weixin_39786706的博客 880

Streamlit(九) widgets-input

st.text_input / st.number_input / st.date_input / st.time_input 源码路径:${python}\Lib\site-packages\streamlit\elements\text_widgets.py(number_input.py, time_widgets.py) st.text_input st.text_input(label, value="", max_chars=None, key=None,\

heianduck的博客 3354

电机瞬态分析基础(2):理想电机的基本假设和正方向规定

电机瞬态分析基础之理想电机假设条件和正方向规定

weixin_45670943的博客 1144

【签名打包】Android Studio签名打包APK教程

参考:Android Studio签名打包APK教程 - 简书

weixin_43343144的博客 3275

深耕车载智能:奇瑞安卓车机开发工程师岗位深度解析与面试指南

奇瑞控股集团招聘安卓车机开发工程师(J22602),负责车载应用开发、性能优化及整车适配。要求大专以上学历,3年以上车机开发经验,精通Android框架及车机特定技术(如Vehicle HAL)。岗位需具备性能调优能力、整车系统适配经验,熟悉车规级开发环境。面试重点考察技术深度、项目经验及问题解决能力,涉及基础技术、性能优化及整车适配等维度。随着智能座舱发展,该职位需持续学习新技术(如AAOS),关注行业趋势(多屏联动、舱驾融合)。职业发展建议深化Android技术,拓展车规硬件知识,提升软技能。

郑伟强dev的专栏 476

android studio 自动签名打包,拷贝apk到指定目录

android studio build.gradle中配置实现自动签名打包,重命名apk,拷贝apk到指定目录 序言 目前android开发基本上都是在android studio上进行的,而android studio是使用的gradle进行项目构建的,不同于之前使用eclipse时使用的ant脚本构建,gradle的语法更加的灵活强大,gradle可以使用groovy进行编写,但是本...

fight__fight的博客 7975

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android studio apk签名打包,Android Studio签名打包的两种方式(图文教程)

签名打包的两种方式:注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行。签名就代表着自己的身份(即keystore),多个app可以使用同一个签名。如果不知道签名是啥意思,请自行百度哦。在eclipse中签名的方法是:选中工程,邮件选择"export-android-export android application",1、方式1:通过Android...

weixin_31749595的博客 3047

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Android Studio打包生成正式签名的APK

Android Studio是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA。它类似于Eclipse ADT,Android Studio 提供了集成的Android开发工具用于开发和调试。那么今天我们就来讲讲如何通过Android Studio打包APK文件,相信有很多人还不是非常了解,下面通过这篇文章给大家介绍一下。 一、修改版本和指定生成APK文件名 将项目切换到Project视图,打开app目录下的build.gradle文件 1.1修改软件版本 versionCode是.

果果小师弟的博客 2029

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android Studio 打包、生成jks密钥、签名Apk、多渠道打包

所有分类  >  开发语言与工具  >  Android Studio开发工具 Android Studio 打包、生成jks密钥、签名Apk、多渠道打包 Android Studio   2015-09-11 23:02:31 发布 您的评价:       0.0 收藏     2收藏

rongbinjava的博客 1157

Android studio打包签名apk的bug们

先吐槽一句,AndroidStudio真心是我碰壁最多的软件,也不知道怎么这么多障碍找上我了。。。 用as打包apk网上有很多教程,比如这位博主提到的方法,也是最正常简单的方式。但是! 列举一下遇到的各种问题吧。 JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore jhy-release-key.jks -destkeystore j...

Wind_waving的博客 561
上一篇: androidStudio导入其他项目作为module依赖库
下一篇: 关于Android RecyclerView的那些开源LayoutManager
暴富君
博客等级 码龄10年 14粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值