2017-03-05 127 views
2

在以下提到的指令后:https://developer.android.com/studio/build/multidex.html#mdex-gradle试图增加MultiDex支持 - 找不到符号背景和MultiDex

我得到一个错误cannot find symbolclass Contextvariable contextvariable MultiDex

package com.mycompany.mypackage; 

import android.app.Application; 
import android.util.Log; 

import com.facebook.react.ReactApplication; 
import com.slowpath.hockeyapp.RNHockeyAppModule; 
import com.slowpath.hockeyapp.RNHockeyAppPackage; 
import com.microsoft.codepush.react.CodePush; 
import com.facebook.react.ReactInstanceManager; 
import com.facebook.react.ReactNativeHost; 
import com.facebook.react.ReactPackage; 
import com.facebook.react.shell.MainReactPackage; 

import com.sbugert.rnadmob.RNAdMobPackage; 

import com.lugg.ReactNativeConfig.ReactNativeConfigPackage; 

import com.geektime.reactnativeonesignal.ReactNativeOneSignalPackage; 
import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; 

import com.reactnative.ivpusic.imagepicker.PickerPackage; 

import com.github.xinthink.rnmk.ReactMaterialKitPackage; 

import com.learnium.RNDeviceInfo.RNDeviceInfo; 

import com.burnweb.rnpermissions.RNPermissionsPackage; 

import net.zubricky.AndroidKeyboardAdjust.AndroidKeyboardAdjustPackage; 

// react-native-fbsdk 
import com.facebook.CallbackManager; 
import com.facebook.FacebookSdk; 
import com.facebook.reactnative.androidsdk.FBSDKPackage; 
import com.facebook.appevents.AppEventsLogger; 
// react-native-fbads 
import io.callstack.react.fbads.FBAdsPackage; 

import java.util.Arrays; 
import java.util.List; 

public class MainApplication extends Application implements ReactApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
    super.attachBaseContext(context); 
    MultiDex.install(this); 
    } 


    // react-native-fbsdk 
    private static CallbackManager mCallbackManager = CallbackManager.Factory.create(); 
    protected static CallbackManager getCallbackManager() { 
    return mCallbackManager; 
    } 
    @Override 
    public void onCreate() { 
    super.onCreate(); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    // If you want to use AppEventsLogger to log events. 
    AppEventsLogger.activateApp(this); 
    } 

    private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { 

    @Override 
    protected String getJSBundleFile() { 
     return CodePush.getJSBundleFile(); 
    } 

    @Override 
    protected boolean getUseDeveloperSupport() { 
     return BuildConfig.DEBUG; 
    } 

    @Override 
    protected List<ReactPackage> getPackages() { 
     return Arrays.<ReactPackage>asList(
      new MainReactPackage(), 
      new RNHockeyAppPackage(MainApplication.this), 
      new CodePush("mykey", MainApplication.this, BuildConfig.DEBUG), 
      new ReactNativeConfigPackage(), 
      new ReactNativeOneSignalPackage(), 
      new ReactNativePushNotificationPackage(), 
      new RNAdMobPackage(), 
      new PickerPackage(), 
      new ReactMaterialKitPackage(), 
      new RNDeviceInfo(), 
      new RNPermissionsPackage(), 
      new AndroidKeyboardAdjustPackage(), 
      new FBSDKPackage(mCallbackManager), 
      new FBAdsPackage() 
    ); 
    } 

    }; 

    @Override 
    public ReactNativeHost getReactNativeHost() { 
     return mReactNativeHost; 
    } 
} 

的build.gradle

dependencies { 
    compile project(':react-native-device-info') 
    compile project(':react-native-hockeyapp') 
    compile project(':react-native-code-push') 
    compile project(':react-native-image-crop-picker') 
    compile project(':react-native-vector-icons') 
    compile project(':react-native-material-kit') 
    compile project(':react-native-config') 
    compile project(':RNAdMob') 
    compile project(':react-native-onesignal') 
    compile project(':react-native-push-notification') 
    compile project(':RNPermissionsModule') 
    compile project(':react-native-android-keyboard-adjust') 
    compile project(':react-native-fbsdk') 
    compile(project(':react-native-fbads')) { 
     exclude group: "com.google.android.gms" 
    } 
    compile 'com.google.firebase:firebase-core:10.2.0' 
    compile 'com.google.firebase:firebase-crash:10.2.0' 
    compile 'com.google.firebase:firebase-ads:10.2.0' 

    compile fileTree(dir: "libs", include: ["*.jar"]) 
    compile "com.android.support:appcompat-v7:23.0.1" 
    compile "com.facebook.react:react-native:+" // From node_modules 
    compile "com.facebook.fresco:animated-gif:0.12.0" 
    compile 'com.android.support:multidex:1.0.1' 
} 

有什么事我来补充或进口,以得到这个工作?

+0

您是否将mutidex添加到您的gradle?此外,您不需要这样做 - 只需扩展MultiDexApplication而不是Application。 –

+0

@GabeSechan嗨,谢谢你的帮助。是的,我用我的build.gradle编辑了我的帖子。扩展MultiDexApplication似乎给了我更多的错误,所以我认为我必须改用MultiDex.install方法。 – kayla

+0

你是否同步gradle并完成重建?使用其他方法不会有帮助。你的问题是语法错误,而不是逻辑错误。另外,你把它们切掉了,但是你有没有适当的进口? –

回答

7

感谢@Gabe Sechan的帮助。我知道React Native/JavaScript,对Android/Java毫无头绪,所以我只是按照https://developer.android.com/studio/build/multidex.html#mdex-gradle的说明进行操作,该说明没有提及任何额外的导入。我学会了在这里查找我需要的软件包:https://developer.android.com/reference/android/support/multidex/MultiDexApplication.html。添加后:

import android.support.multidex.MultiDexApplication; 

public class MainApplication extends MultiDexApplication implements ReactApplication { 
... 

应用似乎在Android 4.4.4+设备上成功构建和运行。然而,在运行4.3的我的Samsung Galaxy S3模拟器上,我在应用程序启动时遇到了崩溃:What does WIN DEATH: android.osDeadObjectException mean?,这似乎完全是另一个问题。