java - 是否可以在 build.gradle 中编写 java 代码?
问题描述
我知道我们可以在 build.gradle 中写入字符串值。现在我想知道在 build.gradle 中编写一些特定的 java 代码。是否有可能做到这一点?我有下面的示例代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
setContentView(R.layout.our_activity_main);
if (jahwil(getApplicationContext().getPackageName(),"MD5").substring(100,200).compareTo("800") != 0) {
this.finishAffinity();
}
private static String jahwil(String txt, String hashType) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance(hashType);
byte[] array = md.digest(txt.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString().toUpperCase();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null;
}
我想写代码
if (jahwil(getApplicationContext().getPackageName(),"MD5").substring(100,200).compareTo("800") != 0) {
this.finishAffinity();
}
private static String jahwil(String txt, String hashType) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance(hashType);
byte[] array = md.digest(txt.getBytes());
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
}
return sb.toString().toUpperCase();
} catch (java.security.NoSuchAlgorithmException e) {
}
return null;
}
在 build.gradle 中。是否可以?
解决方案
简短的回答是不,你不能。但这样做的原因是它Gradle
不是用Java
代码编写的,而是用Domain Specific Language or DSL
. 正如@a_local_nobody 的评论所说,Gradle 正在使用Groovy,它是Java Virtual Machine (JVM)
. 这些文件已创建,您通常在其中拥有所需的一切。
编辑:
感谢@a_local_nobody,正如他在评论中所说,您可以使用它JavaExec
来执行一些Java 代码。在 Gradle 中它仍然是 DSL,但它会从另一个地方执行 Java 代码。这可用于在应用程序启动之前将一些参数传递给应用程序。检查这个答案:https ://stackoverflow.com/a/36092290/14759470
推荐阅读
- c# - 匹配两个列表中的数据
其中一个列表中的日期介于第二个列表中的日期之间 - python-3.x - 每当我将此 python 脚本更改为可执行文件时,我的数据库文件都未连接到此应用程序
- swift - 删除对象时,绑定到两个 SwiftUI 视图的相同数组会挂起 App
- sharepoint - 在 Azure 逻辑应用中的表单库(非列表)上获取 SharePoint 视图结果
- hana - 从 SAP HANA XS 应用程序获取 Windows 操作系统用户
- laravel - Laravel Lumen 7 广播事件与推送器不工作
- pyspark - Pyspark:如何建立停止在0的列(包含负值和正值)的总和
- function - 如何在 kotlin 的内部函数中从顶级函数返回?
- c# - 在“代码隐藏”中将 WPF ListView 列居中
- python - Python:条件表达式中的替换表达式