2016-09-03 1 views
0

Составил APK и успешно протестировал его на моем устройстве, попробовал его через Google Play Store и немедленно прекратил работу. Это приложение является копией существующего приложения, так как вы не можете иметь одно и то же имя пакета дважды, я просто переименовал имя пакета в AndroidManifest.xml, скомпилировал его, протестировал его и затем загрузил в Play Store.Приложение для дублированного Play Store не создает экземпляр

Я не понимаю, почему приложение работает, когда я копирую его на устройство, но при загрузке через Play Store происходит то же самое приложение. Я создал отчет о сбое, который я просмотрел из Консоли разработчика Play Маркета. Если у кого-то есть опыт успешного дублирования приложений в Магазине, то ваша помощь будет оценена по достоинству.

java.lang.RuntimeException: Unable to instantiate application de.schildbach.wallet.artbyte.WalletApplication: java.lang.ClassNotFoundException: Didn't find class "de.schildbach.wallet.artbyte.WalletApplication" on path: DexPathList[[zip file "/data/app/de.schildbach.wallet.artbyte-1/base.apk"],nativeLibraryDirectories=[/data/app/de.schildbach.wallet.artbyte-1/lib/arm, /data/app/de.schildbach.wallet.artbyte-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]] 
at android.app.LoadedApk.makeApplication(LoadedApk.java:680) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6395) 
at android.app.ActivityThread.access$1800(ActivityThread.java:229) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:7325) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "de.schildbach.wallet.artbyte.WalletApplication" on path: DexPathList[[zip file "/data/app/de.schildbach.wallet.artbyte-1/base.apk"],nativeLibraryDirectories=[/data/app/de.schildbach.wallet.artbyte-1/lib/arm, /data/app/de.schildbach.wallet.artbyte-1/base.apk!/lib/armeabi, /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 android.app.Instrumentation.newApplication(Instrumentation.java:1005) 
at android.app.LoadedApk.makeApplication(LoadedApk.java:670) 
... 9 more 
Suppressed: java.lang.ClassNotFoundException: de.schildbach.wallet.artbyte.WalletApplication 
    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) 
    ... 12 more 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

ответ

0

Исключение говорит о том, что сборка завершилась неудачей из-за того, что класс не найден в списке путей dex. Создайте apk, очистив проект, а также перекомпилируйте собственный код с помощью команды ndk-build. Затем попробуйте на локальном устройстве, а затем загрузите в магазин.

0

Название пакета в AndroidManifest.xml часто также используется для базы кода, например. как название класса. Если вы только переименуете имя пакета, но не оставите код Java/dex неизменным, Android не сможет найти некоторые классы, как вы уже заметили.

Проверьте AndroidManifest.xml для относительных имен классов пакета (те, которые начинаются с .) и предварять старое название пакета:

Пример

Old package name: org.example.myapp 
Old activity name: <activity android:name=".MyActivity" ..> 

New package name: com.example.newappname 
New activity name: <activity android:name="org.example.myapp.MyActivity" ..>