我尝试使用android studio安装一个本机应用程序,并且该应用程序在安装APK后在启动时停止运行。
以下是出现错误的logcat:
07-25 08:35:08.866 22185-22185/? E/memtrack: Couldn't load memtrack module (No such file or directory)
07-25 08:35:08.866 22185-22185/? E/android.os.Debug: failed to load memtrack module: -2
07-25 08:35:09.178 22201-22201/? E/memtrack: Couldn't load memtrack module (No such file or directory)
07-25 08:35:09.179 22201-22201/? E/android.os.Debug: failed to load memtrack module: -2
07-25 08:35:16.178 22266-22266/? E/memtrack: Couldn't load memtrack module (No such file or directory)
07-25 08:35:16.178 22266-22266/? E/android.os.Debug: failed to load memtrack module: -2
07-25 08:35:16.269 22278-22278/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.apply.debug, PID: 22278
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzbo;
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzbo" on path: DexPathList[[zip file "/data/app/com.apply.debug-2/base.apk"],nativeLibraryDirectories=[/data/app/com.apply.debug-2/lib/x86, /data/app/com.apply.debug-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.common.internal.zzbo
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 13 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
这是应用程序build.gradle:
apply plugin: "com.android.application"
import com.android.build.OutputFile
project.ext.react = [
bundleInStaging: true, // Overriding default configuration
devDisabledInStaging: true,
entryFile: "index.js"
]
project.ext.envConfigFiles = [
debug: ".env.development",
staging: ".env.staging",
release: ".env.release"
]
project.ext.defaultEnvFile = ".env.development"
apply from: "../../node_modules/react-native/react.gradle"
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
apply from: "../../scripts/dotenv.gradle"
/**
* Set this to true to create two separate APKs instead of one:
* - An APK that only works on ARM devices
* - An APK that only works on x86 devices
* The advantage is the size of the APK is reduced by about 4MB.
* Upload all the APKs to the Play Store and people will download
* the correct one based on the CPU architecture of their device.
*/
def enableSeparateBuildPerCPUArchitecture = false
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = true
android {
compileSdkVersion 23
buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.apply"
minSdkVersion 16
targetSdkVersion 22
versionCode 53
versionName "1.3.3"
ndk {
abiFilters "armeabi-v7a", "x86"
}
resValue "string", "build_config_package", "com.apply"
renderscriptTargetApi 23
renderscriptSupportModeEnabled true
multiDexEnabled true
}
dexOptions {
jumboMode = true
javaMaxHeapSize "4g"
}
signingConfigs {
release {
storeFile file(APPLY_RELEASE_STORE_FILE)
storePassword APPLY_RELEASE_STORE_PASSWORD
keyAlias APPLY_RELEASE_KEY_ALIAS
keyPassword APPLY_RELEASE_KEY_PASSWORD
}
}
lintOptions {
abortOnError false
disable "ResourceType"
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
}
}
buildTypes {
debug {
resValue "string", "app_name", "Discloz dev"
applicationIdSuffix '.debug'
}
staging {
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
resValue "string", "app_name", "Discloz test"
applicationIdSuffix '.staging'
zipAlignEnabled true
}
release {
signingConfig signingConfigs.release
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
resValue "string", "app_name", "Discloz"
zipAlignEnabled true
}
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
variant.outputs.each { output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
compile project(':react-native-share-extension')
compile project(':react-native-sensitive-info')
compile(project(':react-native-firebase')) {
exclude group: 'com.google.firebase'
exclude group: 'com.google.android'
exclude group: 'com.facebook.react'
}
compile "com.google.firebase:firebase-core:11.0.4"
compile "com.google.firebase:firebase-auth:11.0.4"
compile "com.google.firebase:firebase-database:11.0.4"
compile "com.google.firebase:firebase-messaging:11.0.4"
compile "com.google.firebase:firebase-storage:11.0.4"
compile "com.google.firebase:firebase-analytics:11.0.4"
compile "com.google.android.gms:play-services-base:11.0.4"
compile "com.android.support:multidex:1.0.3"
compile project(':react-native-device-info')
compile project(':react-native-code-push')
compile project(':bugsnag-react-native')
compile project(':react-native-branch')
compile project(':react-native-fetch-blob')
compile project(':react-native-vector-icons')
compile project(':react-native-contacts')
compile project(':react-native-video')
compile project(':react-native-hockeyapp')
compile project(':react-native-config')
compile project(':react-native-camera')
compile project(':react-native-video-editor')
compile fileTree(dir: "libs", include: ["*.jar"])
compile "com.android.support:support-v4:23.0.1"
compile "com.android.support:appcompat-v7:23.0.1"
compile "com.facebook.react:react-native:+" // From node_modules
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
apply plugin: 'com.google.gms.google-services'
和android build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'net.hockeyapp.android:HockeySDK:4.1.0'
classpath 'com.google.gms:google-services:3.0.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven { url 'https://maven.google.com' }
maven { url "https://jitpack.io" }
}
}
subprojects {
ext {
compileSdk = 23
buildTools = "23.0.3"
minSdk = 16
targetSdk = 22
}
afterEvaluate { project ->
if (!project.name.equalsIgnoreCase("app")
&& project.hasProperty("android")) {
android {
compileSdkVersion compileSdk
buildToolsVersion buildTools
defaultConfig {
minSdkVersion minSdk
targetSdkVersion targetSdk
}
lintOptions {
abortOnError false
}
}
}
}
}
我尝试了很多事情:清理,重建,...库的版本似乎在任何需要的地方都是相同的,multidex似乎已正确设置。
你能帮我吗?
谢谢!
答案 0 :(得分:3)
在应用程序gradle文件的maven { url 'https://maven.google.com' }
内添加buildscript
,如下所示:
buildscript {
repositories {
jcenter()
google()
//or
// maven { url 'https://maven.google.com' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'net.hockeyapp.android:HockeySDK:4.1.0'
classpath 'com.google.gms:google-services:3.1.1' //use latest plugin version
}
}
然后清理并重建项目。
添加最新的Firebase依赖版本
compile "com.google.firebase:firebase-auth:16.0.1"
compile "com.google.firebase:firebase-database:16.0.1"
compile "com.google.firebase:firebase-messaging:16.0.1"
compile "com.google.firebase:firebase-storage:16.0.1"
compile "com.google.firebase:firebase-analytics:16.0.1"
compile "com.google.android.gms:play-services-base:15.0.1"
按照以下链接访问latest version的Firebase和Google Play服务,请遵循this