Closed iopossum closed 4 years ago
Posting the full compiler error text (not a graphic) from the terminal will help. I'm guessing it is a legitimate java error from what the graphic says. If you open the android folder in Android Studio I bet it gives you more detail. A basic web search also points to a general java syntax error https://duckduckgo.com/?q=java+error+illegal+start+of+expression&ia=web - I don't think it's a plugin problem, I think it's a local project issue in your Java files
package host.exp.exponent;
import com.facebook.react.ReactPackage;
import org.unimodules.core.interfaces.Package;
import java.util.Arrays;
import java.util.List;
import expo.loaders.provider.interfaces.AppLoaderPackagesProviderInterface;
import host.exp.exponent.generated.BasePackageList;
import okhttp3.OkHttpClient;
import com.transistorsoft.rnbackgroundgeolocation.*;
import com.transistorsoft.rnbackgroundfetch.RNBackgroundFetchPackage;
// Needed for `react-native link`
import com.facebook.react.ReactApplication;
public class MainApplication extends ExpoApplication implements AppLoaderPackagesProviderInterface<ReactPackage> {
@Override
public boolean isDebug() {
return BuildConfig.DEBUG;
}
// Needed for `react-native link`
public List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
// Add your own packages here!
// TODO: add native modules!
// Needed for `react-native link`
// new MainReactPackage()
new RNBackgroundGeolocation(),
new RNBackgroundFetchPackage()
);
}
public List<Package> getExpoPackages() {
return new BasePackageList().getPackageList();
}
@Override
public String gcmSenderId() {
return getString(R.string.gcm_defaultSenderId);
}
public static OkHttpClient.Builder okHttpClientBuilder(OkHttpClient.Builder builder) {
// Customize/override OkHttp client here
return builder;
}
}
If I will comment lines: 'new RNBackgroundGeolocation(), new RNBackgroundFetchPackage()', project will build well
more logs:
error: package com.transistorsoft.rnbackgroundfetch does not exist
import com.transistorsoft.rnbackgroundfetch.RNBackgroundFetchPackage;
package com.transistorsoft.rnbackgroundgeolocation does not exist
import com.transistorsoft.rnbackgroundgeolocation.*;
error: cannot find symbol
new RNBackgroundGeolocation(),
This is what looks like in a code block:
package host.exp.exponent;
import com.facebook.react.ReactPackage;
import org.unimodules.core.interfaces.Package;
import java.util.Arrays;
import java.util.List;
import expo.loaders.provider.interfaces.AppLoaderPackagesProviderInterface;
import host.exp.exponent.generated.BasePackageList;
import okhttp3.OkHttpClient;
import com.transistorsoft.rnbackgroundgeolocation.*;
import com.transistorsoft.rnbackgroundfetch.RNBackgroundFetchPackage;
// Needed for react-native link
import com.facebook.react.ReactApplication;
public class MainApplication extends ExpoApplication implements AppLoaderPackagesProviderInterface {
@override
public boolean isDebug() {
return BuildConfig.DEBUG;
}
// Needed for react-native link
public List getPackages() {
return Arrays.asList(
// Add your own packages here!
// TODO: add native modules!
// Needed for react-native link
// new MainReactPackage()
new RNBackgroundGeolocation(),
new RNBackgroundFetchPackage()
);
}
public List getExpoPackages() {
return new BasePackageList().getPackageList();
}
@override
public String gcmSenderId() {
return getString(R.string.gcm_defaultSenderId);
}
public static OkHttpClient.Builder okHttpClientBuilder(OkHttpClient.Builder builder) {
// Customize/override OkHttp client here
return builder;
}
}
I'm not sure there is a way to untangle this quickly but let me be clear: the plugin is fine. I'm using it in a work project, and there's an example. This is a problem with your project.
I see a location library version of 15 and 17 at the same time. How is that supposed to work? The error you paste now is different than the first one, which one are you having problems with?
Create a new sample project (npx react-native init MyTestApp
) and integrate the plugin, it will work. Ejecting from Expo, and the resulting tangle? No idea how that will work personally
RE: I see a location library version of 15 and 17 at the same time. How is that supposed to work? As I said before it is default config generated by expo eject
RE: The error you paste now is different than the first one, which one are you having problems with? I fixed first error myself. The problem was in code, I removed ', ' after new RNBackgroundFetchPackage()
I din't say react-native-background-geolocation is not working. I'm pretty sure it works well. I just asked for help how to fix my issue
As I said before it is default config generated by expo eject
I din't say react-native-background-geolocation is not working. I'm pretty sure it works well. I just asked for help how to fix my issue
I think those two statements are going to be incompatible in the end. The default config from expo eject is clearly not going to work well with other native modules, you'll have to modify it extensively. Making a new sample project and integrating this module to show it works (and how it works) will serve as a reference
In my sense this problem is in deference of versions of core. Try androidx instead.
@posmet it helped, thanks
Your Environment
react-native -v
): 0.59.8// Import gradle helpers for unimodules. apply from: '../node_modules/react-native-unimodules/gradle.groovy' include ':react-native-background-geolocation' project(':react-native-background-geolocation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-geolocation/android')
include ':react-native-background-fetch' project(':react-native-background-fetch').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-background-fetch/android') // Include unimodules. includeUnimodulesProjects( )
app/build.grandle file:
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 'mikhaylov.pharmasoft.transport' minSdkVersion safeExtGet("minSdkVersion", 21) targetSdkVersion safeExtGet("targetSdkVersion", 28) versionCode 10 versionName '1.0.8'
} 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 PROJECT_STORE_PASSWORD keyAlias PROJECT_KEY_ALIAS keyPassword PROJECT_KEY_PASSWORD } } buildTypes { debug { debuggable true ext.enableCrashlytics = false } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' consumerProguardFiles '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 {
} }
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"
Project background_geolocation = project(':react-native-background-geolocation') apply from: "${background_geolocation.projectDir}/app.gradle"
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
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.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:33.0.0'
addUnimodulesDependencies([ modulesPaths : [ '../../node_modules' ], configuration: 'api', target : 'react-native', exclude : [ // You can exclude unneeded modules here, eg. // 'unimodules-face-detector-interface', // 'expo-face-detector'
])
}
// This has to be down here for some reason apply plugin: 'com.google.gms.google-services'