【Unity3D】导出Android项目以及Java混淆

devtools/2025/1/13 17:12:30/

Android Studio 下载文件归档  |  Android Developers

Android--混淆配置(比较详细的混淆规则)_android 混淆规则-CSDN博客

Unity版本:2019.4.0f1
Gradle版本:5.6.4(或5.1.1)
Gradle Plugin版本:3.4.0

Android Studio版本:3.6.3

新建空工程,转Android平台,配置情况如下:

想尝试使用Gradle 6.7.1 Gradle Plguin 4.2.0打包空项目,反反复复出问题(失败)

为什么尝试这个是因为有些Google插件要求这些版本,如果只是测试Java混淆的可以不需要这么麻烦,全部使用默认的即可。

baseProjectTemplate.gradle 

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAINallprojects {buildscript {repositories {**ARTIFACTORYREPOSITORY**        // maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }// maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }// mavenLocal()// mavenCentral()google()jcenter()}dependencies {// If you are changing the Android Gradle Plugin version, make sure it is compatible with the Gradle version preinstalled with Unity// See which Gradle version is preinstalled with Unity here https://docs.unity3d.com/Manual/android-gradle-overview.html// See official Gradle and Android Gradle Plugin compatibility table here https://developer.android.com/studio/releases/gradle-plugin#updating-gradle// To specify a custom Gradle version in Unity, go do "Preferences > External Tools", uncheck "Gradle Installed with Unity (recommended)" and specify a path to a custom Gradle versionclasspath 'com.android.tools.build:gradle:4.2.0'**BUILD_SCRIPT_DEPS**}}repositories {**ARTIFACTORYREPOSITORY**// maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }// maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }// mavenLocal()// mavenCentral()google()jcenter()flatDir {dirs "${project(':unityLibrary').projectDir}/libs"}}
}task clean(type: Delete) {delete rootProject.buildDir
}

classpath 'com.android.tools.build:gradle:4.2.0',可自行找网上找到对应关系
gradle plugin 4.2.0版本对应gradle 6.7.1版本

distributionUrl=https\://mirrors.cloud.tencent.com/gradle//gradle-6.7.1-all.zip

利用镜像地址加速下载gradle-6.7.1-all gradle压缩包,下载到C:\Users\用户名\.gradle\wrapper\dists下。

Build时发生报错:

* What went wrong:
This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open this project, please retry with version 4.2 or newer.

调整Gradle 6.6.1,发现还是不行。调整回使用5.1.1或5.6.4推荐的gradle版本。Unity 2019.4.0默认是5.1.1版本

D:\UnityHubInstallPath\2019.4.0f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib

可通过观察这些文件后缀版本名看自己的对应多少版本或网上查询,这些版本不对应上就会出很多编译问题,即使你是空工程!!!

全部使用默认打包Android工程

 只有上面的这种成功信息,不要只看CONFIGURE SUCCESSFUl,而是其他相关的警告也没有才正常,正常后就能看到Build Apk,否则是无法看到的。

解决jcenter相关的包下载不到问题 使用镜像地址  gradle plugin保持默认3.4.0 

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAINallprojects {buildscript {repositories {// maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }// mavenLocal()// mavenCentral()google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:3.4.0'}}repositories {// maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }// mavenLocal()// mavenCentral()google()jcenter()flatDir {dirs "${project(':unityLibrary').projectDir}/libs"}}
}task clean(type: Delete) {delete rootProject.buildDir
}

gradle版本改用5.6.4-all 

#Wed Jan 08 16:45:43 CST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
#distributionUrl=https\://mirrors.cloud.tencent.com/gradle//gradle-6.7.1-all.zip
distributionUrl=https\://mirrors.cloud.tencent.com/gradle//gradle-5.6.4-all.zip

 

org.gradle.jvmargs=-Xmx4096M
org.gradle.parallel=true
android.injected.studio.version.check = false

加上这行避免一些提示你要去更新Android Studio版本的报错。 

完成打包APK如下

可调整为release版本和签名形式打包apk或aab

混淆Java部分:

将false改为true,开启混淆,proguard-android.txt是默认混淆文件,不用管。

开启混淆后就会使用

proguard-unity.txt文件进行混淆,里面有各种混淆规则
-keep class bitter.jnibridge.* { *; }
-keep class com.unity3d.player.* { *; }
-keep interface com.unity3d.player.IUnityPlayerLifecycleEvents { *; }
-keep class org.fmod.* { *; }
-keep class com.google.androidgamesdk.ChoreographerCallback { *; }
-keep class com.google.androidgamesdk.SwappyDisplayManager { *; }
-ignorewarnings

混淆前后比对,通过Android Studio 查看apk的classes.dex


http://www.ppmy.cn/devtools/150192.html

相关文章

Scaling Laws:通往更大模型的路径

引言 在人工智能领域,尤其是大语言模型(LLMs)中,Scaling Laws(扩展规律)已成为理解模型大小、训练数据和性能关系的基石。扩展规律提供了一个数学框架,用于预测随着计算资源、数据集规模和模型…

逐笔成交逐笔委托Level2高频数据下载和分析:20250102

level2逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/1p7OOj5p-QGFrWkt6KKoYng?pwd7f4g 提取码: 7f4g Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点,包括主力意图,虚假动…

STM32Flash读写BUG,坑—————4字对齐

在 STM32 的 Flash 存储中,数据通常需要 4 字节对齐,这是由于其 Flash 存储的硬件设计和写入操作的限制决定的。 以下是更详细的原因与解释: 1. STM32 的 Flash 写入单位 STM32 的 Flash 通常以字(Word,4 字节 32 位…

AR 眼镜之-拍照/录像动效切换-实现方案

目录 📂 前言 AR 眼镜系统版本 拍照/录像动效切换 1. 🔱 技术方案 1.1 技术方案概述 1.2 实现方案 1)第一阶段动效 2)第二阶段动效 2. 💠 默认代码配置 2.1 XML 初始布局 2.2 监听滑动对 View 改变 3. ⚛️…

网络原理一>UDP协议详解

UDP和TCP都是应用层中的重要协议,如果做基础架构开发,会用得多一些。 这一篇我们先简单聊一下的UDP TCP格式呈现: 我们知道UDP是一种无连接,面向数据报,全双工,不可靠传输特性的网络协议。 基本格式如图…

MySQL教程之:输入查询

如上一节所述,确保您已连接到服务器。这样做本身不会选择任何要使用的数据库,但没关系。在这一点上,了解一下如何发出查询比直接创建表、加载数据和从中检索数据更重要。本节介绍输入查询的基本原则,使用几个查询,您可…

defineProps 和 Pinia 的使用方法和区别总结

1. defineProps 的使用方法和特点 1.1 使用方法 defineProps 是 Vue 3 中用于声明组件 props 的函数&#xff0c;通常在 <script setup> 中使用。它用于定义父组件传递给子组件的数据。 <!-- 子组件 --> <template><p>{{ message }}</p> <…

MathBuddyGUI:带控制系统仿真功能、积分运算的计算器,MATLAB课程设计

https://download.csdn.net/download/liu1813335/89286669 本人是此链接对应的代码编写者HPC2H2&#xff0c;发现我免费的代码被放上去收钱用了。 现提供我仓库的链接&#xff1a; MathBuddyGUI: MATLAB课设&#xff0c;一个带画图、输出模式转换、简单控制系统仿真等功能的…