当前位置: 首页 > 知识库问答 >
问题:

为什么弗利特是Android。建筑格雷德尔。任务未能从其位置读取密钥库

贺飞星
2023-03-14

我有一个使用VS代码的WebView应用程序。我试图签署应用捆绑包,但收到的错误消息如下:-

无法从存储“C:\Users\USER\keystore.jks”读取密钥上载:完整性检查失败:java。安全NoSuchAlgorithmException:算法HmacPBESHA256不可用

我的电脑位置(C:\Java\andr SDK\Platform)上有android SDK android-28、android-29、android-30、android-31,位置(C:\Java\andr SDK\build tools)上有28.0.3、29.0.2和31.0.0

所以请有人看看我的工作,告诉我为什么我得到错误信息。或者如何最好地签署我的应用程序包。

我生成我的密钥存储如下:-

(keyool-genkey对-alias上传-keyalg RSA-keysize 2048-有效性9125-keystorekeystore.jks)

密钥库已经被用于在谷歌play商店上传应用程序。现在我想用这个项目制作一个更新版本。

在我的gradle.build档案中,我有以下内容:-

def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

    android {
     
     compileSdkVersion 30
     buildToolsVersion "29.0.2"

    compileOptions {
        
    }
      ====================
defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.companyname.myappname"
        minSdkVersion 19
        targetSdkVersion 30
        versionCode 4
        versionName "1.2.2"
        multiDexEnabled true 

    }

       signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

我的pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
    

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.2
  webview_flutter: ^3.0.0

我的主要财产

storePassword=mypasswoed
keyPassword=mypassword
keyAlias=upload
storeFile=C:\\Users\\USER\\keystore.jks

我的main.dart

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter WebView',
      home: Home(),
    );
  }
}

class Home extends StatefulWidget {
  const Home({Key? key}) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  bool isLoading = true;

  late WebViewController webView;

  Future<bool> _onBack() async {
    var value = await webView.canGoBack();

    if (value) {
      await webView.goBack();
      return false;
    } else {
      return true;
    }
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () => _onBack(),
      child: Scaffold(
        body: SafeArea(
          child: Stack(
            children: [
              WebView(
                initialUrl: 'https://mywebsite.com',
                javascriptMode: JavascriptMode.unrestricted,
                onPageStarted: (url) {
                  setState(() {
                    isLoading = true;
                  });
                },
                onPageFinished: (status) {
                  setState(() {
                    isLoading = false;
                  });
                },
                onWebViewCreated: (WebViewController controller) {
                  webView = controller;
                },
              ),
              isLoading
                  ? Center(
                      child: Container(
                      padding: const EdgeInsets.symmetric(
                          horizontal: 50.0, vertical: 20.0),
                      decoration: BoxDecoration(
                          color: Colors.white,
                          borderRadius: BorderRadius.circular(25.0)),
                      child: const CircularProgressIndicator(),
                    ))
                  : Stack(),
            ],
          ),
        ),
      ),
    );
  }
}

共有1个答案

淳于嘉树
2023-03-14

好吧,我发现了你的密钥库路径的问题,你给出了错误的路径。你的用户名是MAX,所以你必须把用户名放在那里,而不是USER。更换钥匙的最后一行。使用此代码创建属性文件

storeFile=C:/Users/MAX/keystore.jks 

确保该密钥也在同一目录中,请转到C:\Users\MAX那里应该有一个名为keystore的文件。jks如果它在那里,那么上面的一行将工作超级文件,你将能够签署你的应用程序刚刚好。另一件事是重新检查您为在本地机器上添加对密钥库文件的引用而创建的文件的名称我指的是密钥。属性文件确保拼写正确,键准确。属性不是类似于键的任何东西。属性,它应该在你的Flatter项目的android文件夹中。

我还看到你把你的keyAlias名称作为upload,但是如果你的用户名C:\Users\MAX下的文件是upload。jks然后只需将您的storeFile文件名更改为

storeFile=C:/Users/MAX/upload.jks 

但是如果文件名为keystore。jks然后您必须将keyAlias更改为keyAlias=keystore,而不是keyAlias=upload

对你来说也是一个奖励这里有一个很好的软件来探索jks文件,你可以很容易地从它那里得到sha1 sha256指纹这里有它的链接KeyStore资源管理器。

飘飘快乐!

 类似资料:
  • 我通过VS Code创建了一个新的flutter项目。但是我不知道为什么我在运行时会有这个错误 失败:构建失败,有一个异常。 > 错误:配置根项目“android”时出现问题。 无法解析配置“:classpath”的所有项目。找不到com。Android工具。建造:梯度:3.6。2.在以下位置搜索: https://dl.google.com/dl/android/maven2/com/andro

  • 我面临着这个问题 我验证了我的系统已经安装了gradle,并且具有所有读写权限。 这个错误有什么具体原因吗? 已检查此链接

  • 尝试调试应用程序时出现此错误 还更新了Gradle的这两个属性。属性 使用 执行任务失败:应用程序:check DebugDuplicateClass。 版本降级是唯一的解决办法吗? 非常感谢。

  • 错误:找不到方法com。Android建筑格拉德尔。api。BaseVariant。getOutputs()Ljava/util/List;'。此意外错误的可能原因包括: Gradle的依赖项缓存可能已损坏(这有时会在网络连接超时后发生。)重新下载依赖项和同步项目(需要网络) Gradle构建进程(守护进程)的状态可能已损坏。停止所有Gradle守护进程可以解决此问题。停止Gradle生成过程(需

  • 我正在尝试让我现有的Android项目与渐变和智能J 12一起工作。以前,我曾让它与maven一起工作,但这似乎不像gradle那样灵活,而且据我所知,我需要的子文件夹更少。 我的Android项目分为干净的java库(:core)和实际的应用程序(:Android)。这两个项目都在我的主项目文件夹中。 我认为,用这个实现gradle工作的理想解决方案是将(:core)和(:android)项目视

  • 我在这个问题上找到了不同的答案,但对我来说没有用,所以我不确定我是否在什么地方添加了错误的内容。 错误: Gradle同步失败:没有方法com的签名。Android建筑格拉德尔。AppPlugin。getNdkFolder()适用于参数类型:()值:[] 建筑gradle模块 建筑gradle项目 gradle-wrapper.properties 任何帮助都将不胜感激。 谢啦 更新: 地方的属性