रिएक्ट नेटिव से एंड्रॉइड ऐप बंडल: आपने इसकी कुछ फ़ाइलों के लिए अमान्य या अनुपलब्ध हस्ताक्षर के साथ एक एपीके या एंड्रॉइड ऐप बंडल अपलोड किया है


10

मैं पहली बार Google Play Store पर एक ऐप प्रकाशित करने का प्रयास कर रहा हूं। मैंने Google Play साइनिंग का विकल्प चुना है। मैं एक तथ्य के लिए जानता हूं कि मैं सही कुंजी के साथ एंड्रॉइड ऐप बंडल पर हस्ताक्षर कर रहा हूं, जब मैं दूसरी कुंजी का उपयोग करके अपलोड कर रहा हूं, तो कंसोल मुझे विशिष्ट SHA1 पहचानकर्ता के साथ अन्य कुंजी का उपयोग करके अपलोड करने के लिए कहेगा। हालाँकि, जब मैं सही कुंजी के साथ अपलोड करता हूं, मुझे यह त्रुटि मिलती है:

आपने इसकी कुछ फ़ाइलों के लिए अमान्य या अनुपलब्ध हस्ताक्षर जानकारी के साथ एक एपीके या एंड्रॉइड ऐप बंडल अपलोड किया है।

मैं एंड्रॉइड स्टूडियो का उपयोग करके ऐप का निर्माण कर रहा हूं जैसे: बिल्ड> जेनरेट किए गए बंडल / एपीके> एंड्रॉइड ऐप बंडल> मेरा कीस्टोर चुनना और पासवर्ड दर्ज करना> रिलीज करना> समाप्त करना

ऐप एक रिएक्टिव नेटिव ऐप है जिसे अलग एक्सपो / एक्सपोइट के साथ बनाया गया है। Apple ऐप स्टोर पर अपलोड करना ठीक काम करता है, मुझे केवल प्ले स्टोर की समस्या है। मैं क्या खो रहा हूँ?

अपडेट 1 : मैंने अब Google Play से ऐप को पूरी तरह से हटा दिया है और एक नया बनाया है। क्या नहीं गूगल प्ले इस बार प्रवेश कर रहा है के लिए ऑप्ट और अपलोड हस्ताक्षरित APK। फिर भी वही त्रुटि।

अपडेट 2 : पूरी तरह से नए कीस्टॉर और कुंजी के साथ प्रयास किया। अब भी वही।

यहां प्रोजेक्ट सेटअप का अवलोकन किया जाता है, अगर यह किसी भी तरह महत्वपूर्ण होगा: परियोजना अवलोकन

और यहाँ है android/app/build.gradle:

buildscript {
  repositories {
    google()
    maven { url 'https://maven.fabric.io/public' }
  }

  dependencies {
    classpath 'io.fabric.tools:gradle:1.26.1'
  }
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: 'devicefarm'

repositories {
  maven { url 'https://maven.fabric.io/public' }
}

def safeExtGet(prop, fallback) {
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
}

android {
  compileSdkVersion safeExtGet("compileSdkVersion", 28)

  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

  defaultConfig {
    applicationId 'de.***.android'
    minSdkVersion safeExtGet("minSdkVersion", 21)
    targetSdkVersion safeExtGet("targetSdkVersion", 28)
    versionCode 1
    versionName '1.0.2'
    ndk {
      abiFilters 'armeabi-v7a', 'x86'
    }
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    // Deprecated. Used by net.openid:appauth
    manifestPlaceholders = [
        'appAuthRedirectScheme': 'host.exp.exponent'
    ]
  }
  dexOptions {
    javaMaxHeapSize System.getenv("DISABLE_DEX_MAX_HEAP") ? null : "8g"
  }

  signingConfigs {
    debug {
      storeFile file('../debug.keystore')
    }
    release {
      storeFile file(System.getenv("ANDROID_KEYSTORE_PATH") ?: "release-key.jks")
      storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
      keyAlias System.getenv("ANDROID_KEY_ALIAS")
      keyPassword System.getenv("ANDROID_KEY_PASSWORD")
    }
  }
  buildTypes {
    debug {
      debuggable true
      ext.enableCrashlytics = false
    }
    release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      signingConfig signingConfigs.release
    }
  }
  lintOptions {
    abortOnError false
  }
  packagingOptions {
    pickFirst "**"
  }
}

devicefarm {
  projectName System.getenv("DEVICEFARM_PROJECT_NAME")
  devicePool System.getenv("DEVICEFARM_DEVICE_POOL")
  executionTimeoutMinutes 40
  authentication {

    accessKey System.getenv("AWS_ACCESS_KEY_ID")
    secretKey System.getenv("AWS_SECRET_ACCESS_KEY")
  }
}

configurations.all {
  resolutionStrategy {
    force 'org.webkit:android-jsc:r245459'
  }
}

// WHEN_PREPARING_SHELL_REMOVE_FROM_HERE

apply from: 'expo.gradle'

// WHEN_PREPARING_SHELL_REMOVE_TO_HERE

apply from: "../../node_modules/react-native-unimodules/gradle.groovy"

dependencies {
    implementation project(':react-native-torch')
    implementation project(':react-native-twilio-video-webrtc')
    implementation project(':react-native-exit-app')
    implementation project(':react-native-fs')
    implementation project(':react-native-document-picker')
    implementation project(':rn-fetch-blob')
    implementation project(':react-native-onesignal')
    implementation project(':react-native-vector-icons')
    implementation project(':react-native-randombytes')
  implementation fileTree(dir: 'libs', include: ['*.jar'])

  compile project(':tipsi-stripe')

  implementation 'com.android.support:multidex:1.0.1'

  // Our dependencies
  implementation "com.android.support:appcompat-v7:$supportLibVersion"

  // Our dependencies from ExpoView
  // DON'T ADD ANYTHING HERE THAT ISN'T IN EXPOVIEW. ONLY COPY THINGS FROM EXPOVIEW TO HERE.
  implementation "com.android.support:appcompat-v7:$supportLibVersion"
  implementation 'com.facebook.android:facebook-android-sdk:5.0.1'
  implementation('com.facebook.android:audience-network-sdk:5.1.1') {
    exclude module: 'play-services-ads'
  }
  compileOnly 'org.glassfish:javax.annotation:3.1.1'
  implementation 'com.jakewharton:butterknife:9.0.0'
  implementation 'de.greenrobot:eventbus:2.4.0'

  implementation 'com.squareup.picasso:picasso:2.5.2'
  implementation 'com.google.android.gms:play-services-gcm:15.0.1'
  implementation 'com.google.android.gms:play-services-analytics:16.0.1'
  implementation 'com.google.android.gms:play-services-maps:15.0.1'
  implementation 'com.google.android.gms:play-services-auth:15.0.1'
  implementation 'com.google.android.gms:play-services-location:15.0.1'
  implementation 'com.google.android.gms:play-services-ads:15.0.1'
  //annotationProcessor 'com.raizlabs.android:DBFlow-Compiler:2.2.1'
  //implementation "com.raizlabs.android:DBFlow-Core:2.2.1"
  //implementation "com.raizlabs.android:DBFlow:2.2.1"
  implementation "com.madgag.spongycastle:core:1.53.0.0"
  implementation "com.madgag.spongycastle:prov:1.53.0.0"
  debugImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
  // debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.4-beta1'
  releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1'
  implementation 'com.facebook.device.yearclass:yearclass:2.1.0'
  implementation 'commons-io:commons-io:1.4'
  implementation 'me.leolin:ShortcutBadger:1.1.4@aar'
  implementation 'com.theartofdev.edmodo:android-image-cropper:2.7.0'
  implementation 'commons-codec:commons-codec:1.10'
  implementation 'com.segment.analytics.android:analytics:4.3.0'
  implementation 'com.google.zxing:core:3.3.3'
  implementation 'net.openid:appauth:0.4.1'
  implementation 'com.airbnb.android:lottie:2.5.6'
  implementation('io.nlopez.smartlocation:library:3.2.11') {
    transitive = false
  }
  implementation "com.android.support:exifinterface:${safeExtGet("supportLibVersion", "28.0.0")}"
  implementation 'com.squareup.okio:okio:1.9.0'
  implementation 'com.facebook.soloader:soloader:0.6.0'

  // expo-file-system
  implementation 'com.squareup.okhttp3:okhttp:3.10.0'
  implementation 'com.squareup.okhttp3:okhttp-urlconnection:3.10.0'

  // Testing
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
  // We use a modified build of com.android.support.test:runner:1.0.1. Explanation in maven-test/README
  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation "com.android.support:support-annotations:${safeExtGet("supportLibVersion", "28.0.0")}"
  androidTestImplementation 'com.google.code.findbugs:jsr305:3.0.0'
  androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
  androidTestImplementation 'com.azimolabs.conditionwatcher:conditionwatcher:0.2'

  testImplementation 'junit:junit:4.12'
  testImplementation 'org.mockito:mockito-core:1.10.19'
  testImplementation 'org.robolectric:robolectric:3.8'
  testImplementation 'com.android.support.test:runner:1.0.2-alpha1'
  testImplementation 'com.android.support.test:rules:1.0.2-alpha1'


  implementation('host.exp.exponent:expoview:35.0.0@aar') {
    transitive = true
    exclude group: 'com.squareup.okhttp3', module: 'okhttp'
    exclude group: 'com.squareup.okhttp3', module: 'okhttp-urlconnection'
  }




  api 'org.webkit:android-jsc:r245459' // needs to be before react-native
  api 'com.facebook.react:react-native:35.0.0'




  addUnimodulesDependencies([
      modulesPaths : [
        '../../node_modules'
      ],
      configuration: 'api',
      target       : 'react-native',
      exclude      : [
        // You can exclude unneeded modules here.
        // By default we exclude FaceDetector
        // and Stripe payments APIs.
        'unimodules-face-detector-interface',
        'expo-face-detector',
        'expo-payments-stripe'

        // Adding a name here will also remove the package
        // from auto-generated BasePackageList.java
      ]
  ])

}

// This has to be down here for some reason
apply plugin: 'com.google.gms.google-services'
googleServices {
  disableVersionCheck = true
}

अद्यतन 3 : मैंने अब एक हस्ताक्षरित एपीके बनाया है और जारसिग्नर का उपयोग करके इसके हस्ताक्षर को मान्य करने का प्रयास किया है:

jarsigner -verify -verbose -certs /***/app-release.apk

यह आदेश निम्न त्रुटि उत्पन्न करता है:

jarsigner: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

मेरे लिए ऐसा लगता है कि यह पहेली का एक महत्वपूर्ण टुकड़ा हो सकता है। हालाँकि, मुझे अब तक इस त्रुटि के बारे में कोई उपयोगी जानकारी नहीं मिली।


क्या आप अपना android / app / build.gradlew दिखा सकते हैं?
आंद्रे पिंटो

@ AndréPinto ने इसे प्रश्न में जोड़ा। डिफॉल्टकॉन्फिग में एप्लिकेशनआईड को सेंसर किया।
मैक्सिमिलियन क्रूस

जवाबों:


0

कृपया एपीके या एएबी बनाते समय मुख्य उपनाम के रूप में अपलोड का चयन करना सुनिश्चित करें, संदर्भ के लिए चित्र देखें।

यहां छवि विवरण दर्ज करें


0

वह उत्तर नहीं हो सकता है जिसकी आप तलाश कर रहे हैं, लेकिन क्या आपने एंड्रॉइड स्टूडियो का उपयोग करने के विपरीत, कीस्टोर्स उत्पन्न करने के लिए कमांड लाइन का उपयोग करने की कोशिश की है।

यदि यह काम नहीं करता है, तो मैं मॉड्यूल में देखना शुरू कर दूंगा, विशेष रूप से एक्सपो वालों के रूप में, क्योंकि उन्होंने मुझे पिछले हफ्तों में कुछ दुख दिया है।

एंड्रॉइड के लिए प्रकाशन पर मूल निवासी गाइड को प्रतिक्रिया दें


0

अपने स्वयं के प्रश्न का उत्तर देने के लिए यहां जा रहे हैं, भले ही यह मूल समस्या का काफी समाधान नहीं है, एक्सपोकिट के बारे में कुछ अधिक।

मैंने अब हमारे App से ExpoKit को पूरी तरह से हटा दिया। हम पहले से प्रबंधित एक्सपो वर्कफ़्लो से एक्सपोकिट तक बाहर कर दिए गए थे क्योंकि हमें अन्य की आवश्यकता थी, वेबआरटीसी जैसी देशी कार्यक्षमता जो एक्सपो द्वारा अभी तक समर्थित नहीं थी। हालांकि, यहां पूरी तरह से ईमानदार होने के लिए, हमें संभवत: अर्द्ध-इष्टतम एक्सपोजिट के बजाय नंगे रिएक्ट मूल निवासी को बाहर निकालना चाहिए।

यदि आप प्रबंधित वर्कफ़्लो के साथ जा सकते हैं, तो ठीक है, यह करो! निश्चित रूप से कुछ सामान को आसान बनाता है। हालाँकि, यदि आपको अन्य, असमर्थित देशी कार्यक्षमता की आवश्यकता है, तो अपने आप को एक एहसान करें और जब तक आप इतनी आसानी से कर सकते हैं तब तक नंगे आरएन पर वापस जाएं।

क्योंकि, एक्सपो किट से नंगे आरएन तक जाना कोई आकर्षण नहीं है। एक पूरी नई आरएन परियोजना में प्रवेश करें, जावास्क्रिप्ट को कॉपी करें, एक-एक करके मॉड्यूल को फिर से इंस्टॉल करें, कुछ मूल मुद्दों आदि को ठीक करें - दो दिन का काम बस ऐप को वापस लाने के लिए।

हालांकि, उस सभी काम के बाद, अब हम एक्सपोजिट के बिना, अपने उसी ऐप के साथ खड़े हैं।

पेशेवरों:

  • Google Play पर ऐप अपलोड करना आखिरकार काम करता है।
  • 70% से कम ऐप डाउनलोड का आकार (!)
  • RN 0.60 के माध्यम से ऑटोलिंकिंग की आसानी (भले ही एक्सपोइट इसका समर्थन करता है और अब नए एसडीके के साथ iirc में आता है - एक्सपो एसडीके को अपडेट करना अपने आप में एक संपूर्ण विज्ञान है, हालांकि कई बार)
  • हम अभी भी एक्सपो मॉड्यूल का उपयोग कर सकते हैं जिसे हमने वास्तव में एक्सपो-सिक्योर-स्टोर की तरह प्यार करना सीखा था।
  • प्लेसेबो हो सकता है, लेकिन ऐप के प्रदर्शन में भी सुधार हुआ है।
  • IOS पर रिलीज़ ऐप बिल्ड समय में 50% की वृद्धि हुई, Android पर 60%
  • ऐप लॉन्चिंग ऐसा लगता है जैसे यह गति पर है - जबकि पहले इसे लॉन्च करने के लिए एक iPhone 11 प्रो पर लगभग 2 से 3 सेकंड लगते थे, अब यह मिलीसेकंड की बात है।

विपक्ष: अब तक एक नहीं मिल सका।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.