java.lang.SecurityException:权限拒绝:不允许启动检测,因为包没有与目标匹配的签名

java.lang.SecurityException:权限拒绝:不允许启动检测,因为包没有与目标匹配的签名,java,android,android-studio,gradle,signature,Java,Android,Android Studio,Gradle,Signature,我正在尝试从BMI应用程序以编程方式构建一个基于Robotium的测试应用程序。 () 环境: BMI APK是在Windows环境下使用Android Studio构建的。 BMI测试APK以编程方式构建在基于Ubuntu tomcat的服务器环境上 当我尝试安装和执行时,我遇到以下错误: java.lang.SecurityException:权限拒绝:启动 仪器仪表 ComponentInfo{com.zola.bmi.test/android.test.InstrumentationTe

我正在尝试从BMI应用程序以编程方式构建一个基于Robotium的测试应用程序。 ()

环境:

BMI APK是在Windows环境下使用Android Studio构建的。 BMI测试APK以编程方式构建在基于Ubuntu tomcat的服务器环境上

当我尝试安装和执行时,我遇到以下错误:

java.lang.SecurityException:权限拒绝:启动 仪器仪表 ComponentInfo{com.zola.bmi.test/android.test.InstrumentationTestRunner} 不允许从pid=14074,uid=14074,因为包 com.zola.bmi.test没有与目标匹配的签名 com.zola.bmi

尝试以下步骤时,未出现错误:

  • 卸载以前的BMI应用程序和测试应用程序

    adb -d uninstall com.zola.bmi
    adb -d uninstall com.zola.bmi.test
    
  • 更改BMI应用程序->build.gradle中的测试运行程序 TestInstrumentRunner“android.support.test.runner.AndroidJUnitRunner” 到 TestInstrumentRunner“android.test.InstrumentationTestRunner”

  • 使用Gradle tasks=compiledBugandroidTestJavaWithJavaC(在Android Studio中)构建并安装BMI应用程序

  • 从Android studio运行测试用例(现在测试用例应该正常运行)

  • 从C:\Users\natha.android\debug.Keystore获取密钥库

  • 将此debug.keystore复制到服务器路径“/opt/tomcat/.android”

  • 构建测试APK

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 23
        buildToolsVersion "29.0.2"
        defaultConfig {
            applicationId "com.zola.bmi"
            minSdkVersion 8
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"       
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.5.3'
        compile 'com.android.support:appcompat-v7:23.1.0'
        compile 'com.android.support:design:23.1.0'
    }
    
  • 安装时使用:

    adb install -r BMI-debug.apk
    
  • 问题: 每当我尝试在新的Android设备上运行生成的Robotium测试应用程序时,“……没有与目标匹配的签名”问题就会出现

    更新部分:

    [更新]经过分析,我在以下链接中找到了消除此错误的步骤: 手动步骤: 注意:这些步骤在Linux环境中通过以下链接自动执行:


    问题:

  • 如何避免“…没有与目标匹配的签名”错误
  • 是否可以在没有签名的情况下构建BMI调试应用程序以避免此错误
  • 如何以编程方式生成Robotium测试APK而不出现此错误
  • 当从studio环境运行应用程序和测试以消除此错误时,magic Android studio会做什么
  • 是否有任何python脚本(在Windows环境中)可用于自动执行“更新”部分中提供的手动步骤(类似于)
  • BMI应用程序的Build.gradle

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 23
        buildToolsVersion "21.1.1"
        lintOptions {
            abortOnError false
        }
        defaultConfig {
            applicationId "com.zola.bmi"
            minSdkVersion 15
            targetSdkVersion 30
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.test.InstrumentationTestRunner"
    //        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
            debug {
                testCoverageEnabled = true
            }
        }
    }
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:23.0.1'
        androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.0'
        androidTestCompile 'com.android.support.test:rules:0.4.1'
        androidTestCompile 'junit:junit:4.12'
    }
    
    生成的基于机器人的测试APK的Build.gradle

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 23
        buildToolsVersion "29.0.2"
        defaultConfig {
            applicationId "com.zola.bmi"
            minSdkVersion 8
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"       
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.5.3'
        compile 'com.android.support:appcompat-v7:23.1.0'
        compile 'com.android.support:design:23.1.0'
    }