首页 技术 正文
技术 2022年11月18日
0 收藏 808 点赞 4,085 浏览 3836 个字

1:打包步骤:1:桌面建立一个文件夹,名字叫keystore2:点击build下面的 ,如下:  3:会出现如下界面:4:下一步:5:如果有keystore,请点击 choose existing,选择以前的keystore,同时输入密码和项目名字,最后点击下一步,如果没有keystore,请选择 create new keystore,跳转如下界面:上面的参数分别是:keystore path:存放keystore的路径,一般建议在桌面建立一个文件夹,放这个文件,password:密码confirm:重复输入密码Alias:别名,唯一识别名(一般建议使用项目的名字)Frist and last name:项目的名字6:写完以上信息,点击ok,进入如下界面:7:点击下一步,进入下一个页面:(如果开发工具设置了密码,会让输入密码,否则跳过这不)8:最后一步,选择apk的存放路径:(建议一般情况放到keystore里面)以上就是最简单的打包. 代码混淆:其中我们打包的时候为了防止被反编译,需要对代码进行混淆;首先在Android studio里面开启代 码混淆的方式很简单,默认Android studio不开启代码混淆,其中开启代码混淆的字段为:minifyEnabled,false不开启代码混淆,true开启代码混淆,图如下:proguardFiles:后面两个文件名字,第一个是代表系统帮我们做的混淆,第二个代表需要我们自己写混淆规则.混淆规则写在:proguard-rules.pro或者proguard-rules.txt里面 -optimizationpasses 5 # 指定代码的压缩级别(混淆次数可以定义,但是一般混淆5次)-dontusemixedcaseclassnames # 是否使用大小写混合(加上他表示使用大小写混合)-dontpreverify # 混淆时是否做预校验(表示混淆的时候会不会报错)-verbose # 混淆时是否记录日志(加上他表示混淆的时候记录日子)-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法(指定混淆的时候所采用的算法) 声明那些类不能被混淆: -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -keep public class * extends android.app.Application # 保持哪些类不被混淆 -keep public class * extends android.app.Service # 保持哪些类不被混淆 -keep public class * extends android.content.BroadcastReceiver # 保持哪些类不被混淆 -keep public class * extends android.content.ContentProvider # 保持哪些类不被混淆 -keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些类不被混淆 -keep public class * extends android.preference.Preference # 保持哪些类不被混淆 -keep public class com.android.vending.licensing.ILicensingService # 保持哪些类不被混淆 不能混淆的包括如下:-keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>; } -keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * {# 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; } 注意: shrinkResources 表示是否移除图片资源 true表示移除,false 表示不移除  Android studio 多渠道打包:  目的:多渠道打包的目的是什么? 多渠道打包的目的是为了统一app在各个平台的下载量,一般集成友盟,同时会集成友盟统计.  第一步:在注册文件修改一下文件:AndroidManifest.xml中修改以下值: <meta-data android:name=”UMENG_CHANNEL” android:value=”wandoujia” />修改为:先你必须在AndroidManifest.xml中的meta-data修改以下的样子:<meta-data android:name=”UMENG_CHANNEL” android:value=”${UMENG_CHANNEL_VALUE}” /> 其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值build.gradle文件就利用productFlavors这样写: productFlavors { wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: “wandoujia”] } baidu { manifestPlaceholders = [UMENG_CHANNEL_VALUE: “baidu”] } c360 { manifestPlaceholders = [UMENG_CHANNEL_VALUE: “c360”] } uc { manifestPlaceholders = [UMENG_CHANNEL_VALUE: “uc”] } } 其中[UMENG_CHANNEL_VALUE: “wandoujia”]就是对应${UMENG_CHANNEL_VALUE}的值。 最新更新后来发现上面的重复代码太多,就在网上又发现了一个更简洁的写法 productFlavors { wandoujia {} baidu {} c360 {} uc {} productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } } 其中name的值对相对应各个productFlavors的选项值,这样就达到自动替换渠道值的目的了。这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。 发布步骤: 一般情况下发布平台包括360,豌豆荚,91助手,应用宝,腾讯手机助手 首先以360为例: 第一步:首先需要打包apk,接下来交给测试区测试.当测试测试的没有BUG,我们就可以拿着apk去上线. 第二步:打开360开发者中心,(http://opengame.360.cn),选择移动平台接入,如下:  第三步:点击移动应用,跳转到如下界面(http://dev.360.cn 第四步:选择软件发布,如果没有登陆,会跳转到登陆页面,进行登陆,或者注册,登陆成功以后进入如下界面,点击软件按钮:  第五步:点击软件按钮,进入app发布页面:(1):上传apk(2):上传版权证明(3):选择语言(4):选择资费类型(5):应用简介(6):上传图标(7):提交审核,立即发布. 注意:上传apk的时候需要进行加固,加固完以后需要进行重新签名,签名步骤如下:第一步:首先从360下载到apk第二部:将apk与keystore.jsk 放到同一个文件夹下面第三部:启动终端命令行,cd进去到当前文件夹:输入如下格式: arsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 【你的签名文件】 【代签名的apk】 【你的alias】 -storepass 【你的密码】代码如下:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keystore.jks app-release.apk TestApk -storepass 123456 注意:【你的签名文件】必须带后缀,否则会报签名失败的错误.【代签名的apk】 使用带后缀的全部名字【你的alias】 打包时候指定的,一把使用项目名字【你的密码】 就是密码

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893