Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash within RushCore.initialize() in Android 6.0.1 #110

Open
abhinavc opened this issue May 6, 2016 · 8 comments
Open

Crash within RushCore.initialize() in Android 6.0.1 #110

abhinavc opened this issue May 6, 2016 · 8 comments

Comments

@abhinavc
Copy link

abhinavc commented May 6, 2016

Hi Stuart,

Love Rush-ORM. But am getting a crash within RushCore.initialize() in Android 6.0.1.
This didn't happen in the earlier versions (4.2+).

The call to RushCore.initialize() is within the onCreate() method - like so

public class App extends Application {
@OverRide
public void onCreate() {
.......
AndroidInitializeConfig config = new AndroidInitializeConfig( this.getApplicationContext() ) ;
RushCore.initialize(config) ; // <--- crashes here
}
}

** Below is the stack-trace from Android Studio. **

05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at java.lang.Class.classForName!(Native method)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at java.lang.Class.forName(Class.java:324)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at co.uk.rushorm.android.AndroidRushClassFinder.getRushClass(AndroidRushClassFinder.java:58)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at co.uk.rushorm.android.AndroidRushClassFinder.getRushClasses(AndroidRushClassFinder.java:45)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at co.uk.rushorm.android.AndroidRushClassFinder.findClasses(AndroidRushClassFinder.java:36)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at co.uk.rushorm.core.RushCore.loadAnnotationCache(RushCore.java:462)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at co.uk.rushorm.core.RushCore.initialize(RushCore.java:122)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at co.uk.rushorm.core.RushCore.initialize(RushCore.java:80)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at com.gradians.prepwell.Prepwell.onCreate(Prepwell.java:36)
05-06 08:30:34.603 5779-5779/com.gradians.prepwell A/art: art/runtime/runtime.cc:399] at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1036)

@dporem
Copy link

dporem commented May 13, 2016

I have the same problem.

@ghost
Copy link

ghost commented May 17, 2016

Hi,

Very sorry for the late replay!!

Have a look here:

http://www.rushorm.com/advanced.html#Troubleshooting

Directly setting your Rush classes should resolve this. The plan for the future is define your model package in the manifest to resolve this.

Thanks

@dporem
Copy link

dporem commented May 17, 2016

Then, i have other question for you.

I have my classes like
public class Item implements Parcelable extends RushObject

And, then, following that link i have
List<Class<? extends Rush>> classes = new ArrayList<>(); // Add classes classes.add(Item.class);

This gives me an error saying that Item should extend Rush.
How should this be done?

@ghost
Copy link

ghost commented May 17, 2016

Hi,

I that works for me when I copy it. Other than changing Item to

public class Item extends RushObject implements Parcelable {}

Could you have imported the wrong 'Item' class?

Thanks

@dporem
Copy link

dporem commented May 17, 2016

Hi,
No, now works, but i had the impression that on the other day was causing
problems :S
Anyway, to me this works! :)

stuart-apadmi [email protected] escreveu no dia terça, 17/05/2016
às 14:48:

Hi,

I that works for me when I copy it. Other than changing Item to

public class Item extends RushObject implements Parcelable {}

Could you have imported the wrong 'Item' class?

Thanks


You are receiving this because you commented.
Reply to this email directly or view it on GitHub
#110 (comment)

@gutenberg
Copy link

Hi Stuart,

I have not been as lucky with my testing on 6.0.1.

I followed your suggestion and modified the code to be as below

    List<Class<? extends Rush>> dbClasses = new ArrayList<Class<? extends Rush>>() ;

    dbClasses.add(Parcel.class) ;
    dbClasses.add(Riddle.class) ;
    dbClasses.add(Skill.class) ;
    dbClasses.add(Usage.class) ;
    dbClasses.add(User.class) ;
    dbClasses.add(Zip.class) ;

    AndroidInitializeConfig config = new AndroidInitializeConfig(mContext) ;

    config.setClasses(dbClasses) ;
    RushCore.initialize(config) ;

Then I did a fresh build (clean + make) of my project.
Got the following error messages in the first run.

05-18 23:28:41.671 2312-2740/com.gradians.prepwell E/AndroidRuntime: FATAL EXCEPTION: Thread-1664
Process: com.gradians.prepwell, PID: 2312
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String co.uk.rushorm.core.AnnotationCache.getTableName()' on a null object reference
at co.uk.rushorm.core.implementation.ReflectionTableStatementGenerator.generateStatements(ReflectionTableStatementGenerator.java:50)
at co.uk.rushorm.core.RushCore.createTables(RushCore.java:470)
at co.uk.rushorm.core.RushCore.access$200(RushCore.java:39)
at co.uk.rushorm.core.RushCore$1.run(RushCore.java:130)
at java.lang.Thread.run(Thread.java:818)
05-18 23:28:47.665 2312-2739/com.gradians.prepwell E/GAv4: Successfully bound to service but never got onServiceConnected callback

*Compiled again (no clean, just make) and re-launched *
_The app launches but crashes when it is time to save the first User record _ (error messages below)

The said class (User) class is declared as follows
public class User extends RushObject implements IUpload

05-18 23:36:20.457 8333-8333/com.gradians.prepwell E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.gradians.prepwell, PID: 8333
co.uk.rushorm.core.exceptions.RushClassNotFoundException: Rush class User was not found. Please make sure that if you are using setClasses on RushInitializeConfig you include this class.
at co.uk.rushorm.core.implementation.Insert.ReflectionSaveStatementGenerator.joinFromField(ReflectionSaveStatementGenerator.java:175)
at co.uk.rushorm.core.implementation.Insert.ReflectionSaveStatementGenerator.generateSaveOrUpdate(ReflectionSaveStatementGenerator.java:95)
at co.uk.rushorm.core.implementation.Insert.ReflectionSaveStatementGenerator.generateSaveOrUpdate(ReflectionSaveStatementGenerator.java:54)
at co.uk.rushorm.core.RushCore.save(RushCore.java:511)
at co.uk.rushorm.core.RushCore.save(RushCore.java:177)
at co.uk.rushorm.core.RushCore.save(RushCore.java:172)
at co.uk.rushorm.core.RushObject.save(RushObject.java:12)
at com.gradians.prepwell.activity.Launch.onConnected(Launch.java:242)

@gutenberg
Copy link

The problem seems to be limited to the User class. Commenting all references to User out lets me go ahead. But in terms of declaration,

public class User extends RushObject implements SomeInterface

it is quite like the other classes that were passed to RushInitialize(). So, I am flummoxed.

The only difference between User and other classes is that

  • there is only one User record in the whole User table
  • the first record is created in response to a Google+ API request. Basically, I get the name / email etc. from Google and store it locally on the phone

Is it possible that the User table is not ready when response from Google+ is got back?
I mean, is RushInitialize() an asynchronous operation?

@Pascal66
Copy link

HAve you resolved the problem 3 years after ?
I experiencing the same result

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants