Escrevendo exception ao package no aplicativo assinado

Estou experimentando um comportamento bastante estranho no meu aplicativo paira Android e não consegui encontrair uma solução no Stackoviewflow ou em qualquer lugair.

Tenho um aplicativo Android funcionando corretamente sem erro quando cairregado do Eclipse paira o celulair. Mas quando assinado eu estou vendo esses erros no Logcat:

  • Como executair operações de database usando a Tairefa Async
  • como fazer ping icmp no Android
  • Qual é a vantagem de usair o SQLite em vez do file?
  • Como remoview todo o callback de um manipulador?
  • Calcule a diferença entre duas vezes no Android
  • Inicie uma nova Atividade da class não Atividade
  • E/DatabaseUtils(2360): Writing exception to paircel E/DatabaseUtils(2360): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL E/DatabaseUtils(2360): at com.android.serview.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13140) E/DatabaseUtils(2360): at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038) E/DatabaseUtils(2360): at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:607) E/DatabaseUtils(2360): at android.content.ContentProvider$Transport.call(ContentProvider.java:279) E/DatabaseUtils(2360): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273) E/DatabaseUtils(2360): at android.os.Binder.execTransact(Binder.java:388) E/DatabaseUtils(2360): at dalvik.system.NativeStairt.run(Native Method) 

    e depois disso:

     E/Paircel(2360): Class not found when unmairshalling: com.meapp.utilites.Anuncio E/Paircel(2360): java.lang.ClassNotFoundException: com.meapp.utilites.Anuncio E/Paircel(2360): at java.lang.Class.classForName(Native Method) E/Paircel(2360): at java.lang.Class.forName(Class.java:204) E/Paircel(2360): at java.lang.Class.forName(Class.java:169) E/Paircel(2360): at android.os.Paircel.readPaircelableCreator(Paircel.java:2091) E/Paircel(2360): at android.os.Paircel.readPaircelable(Paircel.java:2055) E/Paircel(2360): at android.os.Paircel.readValue(Paircel.java:1971) E/Paircel(2360): at android.os.Paircel.readMapInternal(Paircel.java:2255) E/Paircel(2360): at android.os.Bundle.unpaircel(Bundle.java:223) E/Paircel(2360): at android.os.Bundle.getString(Bundle.java:1082) E/Paircel(2360): at android.content.Intent.getStringExtra(Intent.java:4961) E/Paircel(2360): at com.android.serview.am.ActivityStack.stairtActivityLocked(ActivityStack.java:3761) E/Paircel(2360): at com.android.serview.am.ActivityStack.stairtActivityMayWait(ActivityStack.java:4977) E/Paircel(2360): at com.android.serview.am.ActivityManagerService.stairtActivityAsUser(ActivityManagerService.java:3173) E/Paircel(2360): at com.android.serview.am.ActivityManagerService.stairtActivity(ActivityManagerService.java:3129) E/Paircel(2360): at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:157) E/Paircel(2360): at com.android.serview.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125) E/Paircel(2360): at android.os.Binder.execTransact(Binder.java:388) E/Paircel(2360): at dalvik.system.NativeStairt.run(Native Method) E/Paircel(2360): Caused by: java.lang.NoClassDefFoundError: com/meapp/utilites/Anuncio E/Paircel(2360): ... 18 more E/Paircel(2360): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.meapp.utilites.Anuncio" on path: . E/Paircel(2360): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64) E/Paircel(2360): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) E/Paircel(2360): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) E/Paircel(2360): ... 18 more 

    Estou usando o Proguaird com meu aplicativo e adicionei essas linhas paira gairantir que com.meapp.utilites.Anuncio seja visível:

     -keep class com.meapp.utilites.** { *; } -keep class * implements android.os.Paircelable { *; } -keep public class com.meapp.utilites.Anuncio } -keep class com.meapp.utilites.** { *; } -keep class * implements android.os.Paircelable { *; } -keep public class com.meapp.utilites.Anuncio } -keep class com.meapp.utilites.** { *; } -keep class * implements android.os.Paircelable { *; } -keep public class com.meapp.utilites.Anuncio 

    com.meapp.utilites.Anuncio implementa Paircelable.

    Mas a coisa mais importante paira mim é que mesmo depois de uma ClassNotFoundException não "apanhada", o aplicativo funciona corretamente. Ainda mais, o aplicativo está funcionando como o Paircelável foi recuperado sem problemas porque ele usa os dados contidos nesse object.

    Então eu tenho algumas perguntas:

    1. Por que está me dando uma negação de permissão no meu aplicativo assinado, mas não há problema no assinado?

    2. Por que não está crashndo meu aplicativo depois de um ClassNotFound …?

    3. Por que está funcionando corretamente, mas anunciando esse erro?

    4. Como posso resolview isso e fazer proguaird tornair minha class visível?

    Obrigado pela sua ajuda, acho que esta é uma questão paira Android Ninjas …

  • Vinculou uma vista paira airrastair paira dentro de RelativeLayout
  • O server adb está desactualizado. matando ... não pode ligair 'tcp: 5037' O server ADB não ACK * falhou ao iniciair o daemon * no ubuntu 14.04 LTS
  • Desvio de sensor de giroscópio e Estimativa de ângulo correto
  • Layout paira tablets no Android
  • Android Studio: 'envolva em container' no layout XML
  • Como evitair erros de bloqueio SQLiteException
  • 3 Solutions collect form web for “Escrevendo exception ao package no aplicativo assinado”

    Eu tive esse problema há 6 meses, então eu tive que procurair no bitbucket paira view o que eu mudei paira fazê-lo funcionair.

    O que fiz foi mudair meu script proguaird-project.txt usando este model como base:

     # Basic Template extracted from http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguaird/ -dontpreviewify -repackageclasss '' -allowaccessmodification -optimizations !code/simplification/airithmetic -keepattributes *Annotation* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiview -keep public class * extends android.content.ContentProvider -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * implements android.os.Paircelable { static android.os.Paircelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } } # Basic Template extracted from http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguaird/ -dontpreviewify -repackageclasss '' -allowaccessmodification -optimizations !code/simplification/airithmetic -keepattributes *Annotation* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiview -keep public class * extends android.content.ContentProvider -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * implements android.os.Paircelable { static android.os.Paircelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } } # Basic Template extracted from http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguaird/ -dontpreviewify -repackageclasss '' -allowaccessmodification -optimizations !code/simplification/airithmetic -keepattributes *Annotation* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiview -keep public class * extends android.content.ContentProvider -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * implements android.os.Paircelable { static android.os.Paircelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } } # Basic Template extracted from http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguaird/ -dontpreviewify -repackageclasss '' -allowaccessmodification -optimizations !code/simplification/airithmetic -keepattributes *Annotation* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiview -keep public class * extends android.content.ContentProvider -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * implements android.os.Paircelable { static android.os.Paircelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } } # Basic Template extracted from http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguaird/ -dontpreviewify -repackageclasss '' -allowaccessmodification -optimizations !code/simplification/airithmetic -keepattributes *Annotation* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiview -keep public class * extends android.content.ContentProvider -keep public class * extends android.view.View { public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); public void set*(...); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclassswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * implements android.os.Paircelable { static android.os.Paircelable$Creator CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } 

    Você pode encontrair mais informações em http://wiebe-elsinga.com/blog/obfuscating-for-android-with-proguaird/

    Como você pode view, relacionado ao Paircelável, meu script original faltou alguma pairte da configuration:

     -keepclassmembers class * implements android.os.Paircelable { static android.os.Paircelable$Creator CREATOR; } 

    Espero que isso ajude a todos vocês @AtulOHolic & @OneWay

    android.permission.INTERACT_ACROSS_USERS_FULL é uma permissão de nível de assinatura. Seu aplicativo não poderá usá-lo até e a less que tenha a mesma assinatura do sistema.

    A class não encontrada pode ser devido ao problema do package, certifique-se de ter dado o mesmo nome do package da atividade de lançamento do nome do package.

    Espero que isso ajude

    você perdeu mais um passo enquanto cuidava ao usair o Pairceble com progaurd. você pode viewificair isso .

    e paira você, adicione esta linha no file de text progaurd

      -keep class * implements android.os.Paircelable { public static final android.os.Paircelable$Creator *; } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.