其他分享
首页 > 其他分享> > HarmonyOS之深入解析编译构建的配置和代码混淆

HarmonyOS之深入解析编译构建的配置和代码混淆

作者:互联网

一、概述

二、配置应用签名信息

① 申请发布证书和 Profile 文件
步骤操作步骤操作说明操作指导
1创建AGC项目申请发布证书前,需要登录AppGallery Connect后创建一个项目创建您的AGC项目
2创建HarmonyOS应用在AppGallery Connect项目中,创建一个HarmonyOS应用,用于发布证书和Profile文件申请创建HarmonyOS应用
3申请发布证书和Profile文件在AppGallery Connect中申请、下载发布证书和Profile文件申请发布证书和Profile文件
② 对应用进行签名

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

③ 通过配置文件存储签名信息
	storeFile=D:\\key\\auto_debug_900086000300430549.p12
	storePassword=0000001BA1E0B33A4507FAAD0CD0F378CE4E6AC5AEBDEA75C3283753284436002D859E52C3836DAD3A3D1C
	keyAlias=myApplication_debug
	keyPassword=0000001BAC7C26C59AC5EB95E56DFC155C911ED08C658839127F4CEC6AB548B39BE8CC499CE7F27F13AE57
	profile=D:\\key\\auto_debug_Myapplication_900086000300430549.p7b
	certpath=D:\\key\\auto_debug_900086000300430549.cer
	apply plugin: 'com.huawei.ohos.hap'
	...
	// 加载签名信息配置文件
	def signingConfigPropsFile = rootProject.file("signing-config.properties")
	def signingConfigProps = new Properties()
	signingConfigProps.load((new FileInputStream(signingConfigPropsFile)))
	
	ohos {
	    ...
	    // 配置签名信息索引
	    signingConfigs {
	        debug {
	            storeFile file(signingConfigProps['storeFile'])
	            storePassword signingConfigProps['storePassword']
	            keyAlias signingConfigProps['keyAlias']
	            keyPassword signingConfigProps['keyPassword']
	            signAlg = 'SHA256withECDSA'
	            profile file(signingConfigProps['profile'])
	            certpath file(signingConfigProps['certpath'])
	        }
	    }

三、编译构建前配置

① 工程级 build.gradle
	apply plugin: 'com.huawei.ohos.app'
	compileSdkVersion 5    // 应用编译构建的目标SDK版本
	     defaultConfig {
	         compatibleSdkVersion 4    // 应用兼容的最低SDK版本
	     }
HarmonyOS编译构建插件版本Gradle插件版本
2.0.0.65.4.1
2.0.0.7
2.4.0.1
2.4.1.4
2.4.2.5
2.4.4.2
2.4.5.0
6.3
	buildscript {
	    repositories {   
	        maven {
	            url 'https://mirrors.huaweicloud.com/repository/maven/'
	        }
	        maven {
	            url 'https://developer.huawei.com/repo/'
	        }      
	        jcenter()
	    }
	    dependencies {
	         classpath 'com.huawei.ohos:hap:2.4.5.0'
	         classpath 'com.huawei.ohos:decctest:1.2.4.1'
	    }
	}
	allprojects {
	    repositories {
	       maven {
	            url 'https://mirrors.huaweicloud.com/repository/maven/'
	       }
	       maven {
	            url 'https://developer.huawei.com/repo/'
	       }      
	       jcenter()
	    }
	}
② 模块级 build.gradle
	apply plugin: 'com.huawei.ohos.hap'   // 打包hap包的插件
	apply plugin: 'com.huawei.ohos.library'    // 将HarmonyOS Library打包为har的插件
	apply plugin: 'java-library'    // 将Java Library打包为jar的插件
	compileSdkVersion 5    //应用编译构建的目标SDK版本
	     defaultConfig {
	         compatibleSdkVersion 4    //应用兼容的最低SDK版本
	     }
	showInServiceCenter true
	buildTypes {
	     // 构建Release类型的hap包或APP时的混淆功能设置
	     release {
	          proguardOpt{
	               // 开启代码混淆功能
	               proguardEnabled true
	               // 配置混淆规则文件相对路径
	               rulesFiles 'proguard-rules.pro'
	               // 配置打包混淆规则文件相对路径,仅在HarmonyOS Library模块中配置
	               consumerRulesFiles 'consumer-rules.pro'
	           }
	      }
	}
	externalNativeBuild {
	    path "src/main/cpp/CMakeLists.txt"   // CMake配置入口,提供CMake构建脚本的相对路径
	    arguments "-v"    // 传递给CMake的可选编译参数
	    abiFilters "arm64-v8a"     // 用于设置本机的ABI编译环境
	    cppFlags ""   // 设置C++编译器的可选参数
	}
	entryModules "entry"    

在这里插入图片描述

	compileOptions{ 
	         annotationEnabled true   // true表示支持,false表示不支持
	}
	dependencies {
	    implementation fileTree(dir: 'libs', include: ['*.jar','*.har'])    // 该模块依赖的本地库,支持jar和har包
	    testImplementation 'junit:junit:4.13'    // 测试用例框架,无需修改
	        ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.200'
	}

四、配置 Java 代码混淆

① 混淆功能说明

在这里插入图片描述

② 启动混淆功能
	ohos {
	         ……
	         buildTypes {
	                   // 构建Release类型的hap包或APP时的混淆功能设置
	                   release {
	                       proguardOpt{
	                           // 开启代码混淆功能
	                            proguardEnabled true
	                           // 配置混淆规则文件相对路径
	                            rulesFiles 'proguard-rules.pro'
	                           // 配置打包混淆规则文件相对路径,仅在HarmonyOS Library模块中配置
	                          // consumerRulesFiles 'consumer-rules.pro'
	                       }
	                   }
	         }
	}
③ 混淆规则文件

在这里插入图片描述

	-verbose
	-dontusemixedcaseclassnames
	-dontskipnonpubliclibraryclasses
	-dontskipnonpubliclibraryclassmembers
	-optimizations !code/simplification/artithmetic,!field/*,!class/merging/*
	-optimizationpasses 5
	-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod
	-dontpreverify
	-keepclasseswithmembers,allowshrinking class * {
	    native <methods>;
	}
	-keepclassmembers enum * {
	    public static **[] values();
	    public static ** valueOf(java.lang.String);
	}
	-keep public class * extends *.aafwk.ability.Ability
	-keep public class * extends *.ace.ability.AceAbility
	-keep public class * extends *.aafwk.ability.AbilitySlice
	-keep public class * extends *.aafwk.ability.AbilityPackage
	-dontoptimize
	-dontshrink

五、编译构建生成 HAP

① 对应用进行签名

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

② 构建带签名信息的 HAP(Debug 类型)

在这里插入图片描述

在这里插入图片描述

③ 构建带签名信息的 HAP(Release 类型)

在这里插入图片描述

在这里插入图片描述

④ 构建不带签名信息的 HAP(Debug 类型)

在这里插入图片描述

⑤ 构建不带签名信息的 HAP(Release 类型)

在这里插入图片描述

在这里插入图片描述

标签:混淆,编译,文件,HarmonyOS,构建,签名,应用,HAP
来源: https://blog.csdn.net/Forever_wj/article/details/119085321