问题剖析 - 两种不同的构建方式 在一个典型的场景中,在模块化应用程序并使用新的 Gradle 插件后,您的项目结构将如下所示: ? 一个典型的多功能安装 + 即时应用程序项目。...在你构建你的可安装程序中启用 ProGuard(混淆)并修复所有的运行时异常 这是最困难的部分,也是唯一不容易复现的部分,因为每个项目所需的 ProGuard(混淆)配置规则会有所不同。...为你所有的即时应用功能启用 ProGuard(混淆) 在可安装的应用程序版本构建过程中,ProGuard(混淆)只运行一次:在使用 com.android.application 插件的模块中。...首先,准备好一个调试版本(或者没有启用 ProGuard(混淆)的调试版本)。...要解决这个问题,首先要启用 ProGuard(混淆)来开发即时应用程序(例如使用刚刚在前面步骤中设置的构建方式)。
运行基于SignalR的超线程上载器的代码,发现SignalR 在IE 9上居然没法工作了,提示如下: 提示很明显,需要json2.js的支持。...使用Nuget 搜索json2.js 并安装: 在引用之前引用json2.min.js <script src="Scripts/json2.min.js" type="text/javascript
'), 'proguard-rules.pro' } } } 当你设置了minifyEnabled为true后,proguardRelease任务就会执行,并且在构建过程中调用...在启用了ProGuard之后,最好重新测试一下整个APP,有可能它仍然把你一些有用的代码都移除了,比如说JNI中调用的Java代码。...你可以在gradle.properties中添加: org.gradle.daemon=true 在Android Studio中,Gradle Daemon是默认启用的。...我这也就意味着在IDE中第一次启动构建后,后续的构建都会比较快。如果你从命令行执行构建的话,Gradle Daemon则是关闭的,除非在Properties中启用。...在Gradle的属性中,名为jvmargs,可以用来为JVM启用设置内存分配的值。这两个参数也会对构建速度有直接的影响:Xms和Xmx。
(由于我的是英文系统,提示的是英文,中文的提示预计不同) 应该是在启动器自行编辑了my.cnf的缘故,导致了mysql找不到pane 因此,只需要在mysql.server 上加上mysql运行路径就OK...了 位于/usr/local/mysql/support-files/mysql.server 找到basedir 在等号后面添加/usr/local/mysql 在下一行的datadir的等号后面输入
在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令。...2-:设置gradle变量 把my-release-key.keystore文件放到你工程中的android/app文件夹下。...6-:启用Proguard代码混淆来缩小APK文件的大小(可选) Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java(和它的依赖库中)中没有被使用到的部分,...重要:启用Proguard之后,你必须再次全面地测试你的应用。Proguard有时候需要为你引入的每个原生库做一些额外的配置。参见app/proguard-rules.pro文件。...要启用Proguard,设置minifyEnabled选项为true: /** * 在release发行版中启用Proguard来减小 to shrink the Java bytecode in
本文我们将对 R8 的特性进行一个简要的介绍,并介绍可预期的代码缩减程度以及如何在 R8 中启用这些功能。...启用 R8 来压缩您的应用 要在 release build 上启用 R8 压缩,需要在应用的主 build.gradle 文件中将 minifyEnable 属性设置为 true,如下所示: android...跟踪完成后,R8 使用摇树优化来删除未使用的代码。在此示例中,摇树删除了未使用的方法,因为 R8 的跟踪过程检测到从任何已知的入口都无法到达该方法。...将其放置在适当位置后,运行代码即可得到预期的 JSON 对象 {"name": "SørenGjesse"} 。...最后,在配置项目时,请确保将 proguard-rules.pro 文件添加到 build.gradle 配置中: android { buildTypes { release {
中的混淆文件配置 ; 发布的AAR中包含的ProGuard规则文件。...然后,使用AAR的任何应用程序项目都将使用这些proguard规则文件(如果启用了proguard)。 这允许AAR指定收缩或模糊排除规则。 这仅对库项目有效。这在应用程序项目中被忽略。...These proguard rule files will then be used by any application project that consumes the AAR (if ProGuard...#debuggable 配置设置为 false, 则生成的 apk 文件安装运行后 , 无法对 debug 版本的代码进行调试 ; boolean debuggable Whether this build...BuildType#embedMicroApp 配置是 可穿戴设备应用使用的配置 , 普通的手机应用不用处理该配置 ; 是否应使用此构建类型将链接的Android Wear应用嵌入变体中。
混淆效果 ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 【Android 安全】DEX 加密...( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat 命令执行目录 | 暴露更少信息 ) 【Android 安全】DEX 加密 ( Proguard 混淆 |...混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 【Android 安装包优化】开启 ProGuard 混淆 ( 压缩 Shrink | 优化 Optimize | 混淆...; 是否在APK中生成伪语言环境。...如果启用,将向APK中添加两个伪区域设置(en-XA和ar-XB),以帮助测试应用程序中的国际化支持。
配置,在实际情况下中可以选择不同的配置方式。...8.3 构建的应用类型 关于构建类型,前面的章节我们已经用到了一些,在Android Gradle工程中,Android Gradle已经帮我们内置了debug和release两个构建类型,他们两种模式的只要差别在于能否在设备上调试以及签名不一样...一般情况下我们发布到市场的版本一定是要混淆的,也就是我们的release模式编译的版本,但是我们自己调试的版本不用混淆,因为混淆后就无法断点跟踪调试了,也就是我们的debug模式。...现在我们启用了混淆,但是Android Gradle还不知道按何种规则进行混淆,不知道要保留哪些类不混淆,要做到这些就需要我们的Proguard配置文件了,现在我们为我们的混淆指定配置文件。...除了在BuildType中启用混淆和配置混淆外,我们也可以在defaultConfig中启用和配置,还记得我们前面在8.1章节讲的吧,因为这个是默认配置,一般用的比较少。
使用方式:在 build.gradle 文件中配置 proguard-rules.pro 文件,然后在项目构建时执行混淆。...iOS APP加固代码实现 以下是使用 ProGuard 工具对 iOSAPP 进行代码混淆的示例: 在项目 build.gradle 文件中添加以下代码: buildTypes { release...'), 'proguard-rules.pro' // 默认的 ProGuard 文件和自定义的规则文件 } } 在项目根目录中创建一个 proguard-rules.pro 文件...在构建 release 版本时,自动启用混淆并将混淆后的 APK 文件输出到 app/build/outputs/apk/release 文件夹中。...防反编译,dex加固实战代码分析 防止反编译是 iOSAPP 加固中的一项重要工作,而 dex 文件加固则是防御反编译的一种实现方式。
文章目 一、开启资源压缩 二、启用严格模式的资源引用检查 三、自定义保留/移除资源配置 四、资源压缩效果 五、完整配置 1、keep.xml 配置 2、build.gradle 构建脚本 六、参考资料...build.gradle 构建脚本中的 " android / buildTypes " 下的 debug / release 下配置 shrinkResources true 选项 ; 资源压缩 配置示例..., 压缩后的布局资源变成了如下内容 , 程序中没有引用该资源 , 在编译时 , 该资源自动替换成如下类型 ; <?...混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat...命令执行目录 | 暴露更少信息 ) 【Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt ) 博客资源 :
通过 ProGuard 移除未使用的代码 为版本构建启用代码压缩以运行 ProGuard。启用压缩可确保交付的 APK 不含有未使用的代码。...使用这些技巧使我们不必在应用中启用 Dalvik 可执行文件分包,同时还会减小 APK 的总体大小。...会读取相对于 build.gradle 文件的路径,因此如果 multidex-config.txt 与 build.gradle 文件在同一目录中,以上示例将有效。...在 multiDexKeepProguard 中指定的文件应该在任何有效的 ProGuard 语法中包含 -keep 选项。例如,-keep com.example.MyClass.class。...DEX 文件中以及哪些类可以包括在辅助 DEX 文件中作出复杂的决策。
在build.gradle构建文件中输入以下构建脚本: task hello { doLast { println 'Hello world!'...启用proguard混淆 我们可以为不同的buildTypes选择是否启用混淆,一般release发布版本是需要启用混淆的,这样别人反编译之后就很难分析你的代码,而我们自己开发调试的时候是不需要混淆的,...根目录下的proguard.cfg文件 启用zipAlign 这个也是比较简单的,同样也是在buildTypes里配置,可以为不用的buildTypes选择时候开启zipAlign android {...这个常量可以在我们编码中引用。在我们进行打包的时候会根据Gradle配置动态替换。...今天我们不谈这个,我想要的是在我们生成的APK包中已经包含了检测代码覆盖率的代码,这样当我们安装APK后运行进行一些测试的时候,这些检测代码覆盖率的代码就会被执行到,这样最后我们导出一份代码测试覆盖率的文件
通过ProGuard移除未使用的代码 为版本构建启用代码压缩以运行 ProGuard。启用压缩可确保交付的 APK 不含有未使用的代码。...使用这些技巧使我们不必在应用中启用 Dalvik 可执行文件分包,同时还会减小 APK 的总体大小。...请记住,Gradle 会读取相对于 build.gradle 文件的路径,因此如果 multidex-config.txt 与 build.gradle 文件在同一目录中,以上示例将有效。...在 multiDexKeepProguard 中指定的文件应该在任何有效的 ProGuard 语法中包含 -keep 选项。例如,-keep com.example.MyClass.class。...以下构建配置示例展示了如何在 Gradle 构建文件中设置这些定制: ?
+Android Studio搭配,工作不累。...我们可以通过Android Studio创建一个App工程,创建后我们可以看到其大概工程目录结构如下: 其目录结构和Java工程相比没有太大的变化,proguard-rules.pro是一个混淆配置文件...release就是一个BuildType,后面章节我们会详细介绍BuildType,例子中我们用到了两个配置 minifyEnabled 是否为该构建类型启用混淆,我们这里是false表示不启用,如果想要启用可以设置为...true proguardFiles,当我们启用混淆时,所使用的proguard的配置文件,我们可以通过它配置我们如何进行proguard混淆,比如混淆的级别,哪些类或者方法不进行混淆等等。...目录下的默认的proguard配置文件,在android-sdk/tools/proguard/目录下,文件名就是我们传入的参数的名字proguard-android.txt。
混淆大小写 : 不要使用混合大小写类名进行混淆 , 混淆后的名称全部都是小写 , 增加阅读难度 # 不要使用混合大小写类名进行混淆 , 混淆后的名称全部都是小写 , 增加阅读难度 -dontusemixedcaseclassnames...manual/usage.html # # 从 Gradle 插件 2.2 版本开始 , 该文件与插件一同发布, 在编译构建时取出 . # 不再维护 $ANDROID_HOME 中的文件 , 新的 Gradle...# Dex 自己会执行优化 , 不建议在 ProGuard 步骤中进行优化 ....# 如果想要启用优化 , 不能只在 ProGuard 项目配置中将优化标志设为 true ; # 相反还要在 build.gradle 中指向 "proguard-android-optimize.txt...keepclasseswithmembernames class * { native ; } # 不要混淆继承自 View 的 get set 函数 , 以便让动画可以继续工作
/2.3/ android 模块配置文档 : https://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.AppExtension.html...ProductFlavor 文档 : https://google.github.io/android-gradle-dsl/2.3/com.android.build.gradle.internal.dsl.ProductFlavor.html...1、consumerProguardFiles 配置 consumerProguardFiles 配置 : 设置 发布的 AAR 依赖库 对应的混淆文件 ; 发布的AAR中包含的ProGuard规则文件...然后,使用AAR的任何应用程序项目都将使用这些proguard规则文件(如果启用了proguard)。 这允许AAR指定收缩或模糊排除规则。 这仅对库项目有效。这在应用程序项目中被忽略。...配置 , 此外还可以自定义配置 ProductFlavor ; 在 build.gradle 中 , 自定义 ProductFlavor 时 , 在 android 下使用 productFlavor
二、打包发布android应用 1.生成签名秘钥 在Windows上keytool命令放在JDK的bin目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令...2.设置gradle变量 ①.把my-release-key.keystore文件放到你工程中的~/android/app文件夹下。...Proguard代码混淆来缩小APK文件的大小(可选) 进入目录~/android/app/build.gradle,设置minifyEnabled选项为true: def enableProguardInReleaseBuilds...Proguard是一个Java字节码混淆压缩工具,它可以移除掉React Native Java(和它的依赖库中)中没有被使用到的部分,最终有效的减少APK的大小。...重要:启用Proguard之后,你必须再次全面地测试你的应用。Proguard有时候需要为你引入的每个原生库做一些额外的配置。参见app/proguard-rules.pro文件。
方案很多,各位按照自身需求进行对应接入即可,下面开始个人习惯的 MobPush 集成啦~ MobPush 集成 --- 从下面官网进入,准备开始接入: MobPush 登录成功后选择工作台: [image.png...app 下 build 文件中进行引用: // 引入 Mob 配置 apply from: 'MobSettings.gradle' 4、gradle.properties 中配置隐私协议适配版本 #...华为Push注册流程 MobSettings 中填写对应的 appId: // 调用MobTech SDK apply plugin: 'com.mob.sdk' // 在 MobSDK 的扩展中注册...虽然因为工作原因没能认真看看,但是这个认真负责的态度,赞一波~ 一句话,免费的东西,这就不错了。...奇怪的是在 AndroidManifest 中也看到了上文说到的 ContentProvider: <provider android:name="com.mob.MobProvider"
就是我们经常使用的ProGuard,也就是我们要启用minifyEnabled,是为了缩减代码的; 我们上面已经讲了,自动清理未使用的资源的原理很简单,就是判断有没有用到这些资源,如果你的代码还在使用,...'), 'proguard-rules.pro' } } } 启用Resource Shrinking是通过调用BuildType的shrinkResources来设置的,只要给这个方法传递一个...打包构建的时候,Android Gradle就会自动的处理未使用的资源,不把他们打包到生成的Apk中,我们可以在我们构建输出的日志中看到处理结果,以我们当前的示例代码为例,我们运行....有没有觉得它和我们用ProGuard的配置文件是一样的,我们在ProGuard配置文件里配置保存一些不被混淆的类也是这么做的。...此外,对于res/raw/keep.xml这个文件我们不用担心,Android Gradle构建系统最终打包的时候会清理它,不会把它打包进Apk中的,除非你在代码中通过R.raw.keep引用了它。
领取专属 10元无门槛券
手把手带您无忧上云