gpt4 book ai didi

java - Android - 缺少应用程序子类

转载 作者:行者123 更新时间:2023-11-30 11:39:42 25 4
gpt4 key购买 nike

我对 Eclipse、ADT 和 Google Play 遇到的一个问题感到有点困惑,而且有点恼火。

我正在运行 OS X 10.8.2、Eclipse 4.2.1 和 ADT 20.0.3。

以下是导致问题的工作流程:

  • 开发人员 Alpha 负责构建用于内部/外部发布的 Android 应用。
  • 其他开发者开发应用,将更改推送到 GitHub。
  • 开发人员 Alpha 执行标准的 pull/mergetool 等操作
  • Alpha 打开 Eclipse,刷新主项目和两个库项目(ActionBarSherlock 和 FacebookSdk)
  • Alpha 运行一个项目 > Clean > All
  • 此时运行创建的应用程序可以在模拟器和硬件中正常运行,范围从 OS 2.3.3 到 4.0.1
  • Alpha 运行 Android Tools > Export Signed APK,放入 key 传递等。
  • 生成的版本通过电子邮件发送给其他人,或上传到 Google。请注意,它运行的代码与刚刚在合并后的模拟器/硬件中运行的代码完全相同。
  • 有时会发生以下情况:

跟踪:

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate application com.COMPANY.android.APPLICATION.application.APPLICATIONApplication: java.lang.ClassNotFoundException: com.COMPANY.android.APPLICATION.application.APPLICATIONApplication
at android.app.LoadedApk.makeApplication(LoadedApk.java:482)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4089)
at android.app.ActivityThread.access$1300(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4575)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.OO4usa.android.fanzlive.application.FanzliveApplication
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.Instrumentation.newApplication(Instrumentation.java:942)
at android.app.LoadedApk.makeApplication(LoadedApk.java:477)
... 11 more

现在,我的问题是,为什么 Application 子类没有被打包/可见?

更糟糕的是,我们使用的是 Acra,捕获崩溃的注释位于丢失的应用程序上,因此没有崩溃报告。

最后,我认为我们总是可以通过运行来尝试测试构建的 APK:

adb install ~/path/to/app.apk

但是,这是否可以证实与用户从 Play 商店下载后获得的二进制文件相同? Google 会完全破坏构建或其元数据吗?

编辑: list 的相关部分

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.COMPANY.android.APPLICATION"
android:versionCode="7"
android:versionName="1.3.3" >

<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="14" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-feature
android:name="android.hardware.camera"
android:required="false" />

<application
android:name=".application.APPLICATIONApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.APP_green" >

<!-- activities -->

<!-- snip -->

<!-- services -->

<!-- snip -->

</application>

</manifest>

编辑: 自动生成的 proguard.cfg

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-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.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
native <methods>;
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

最佳答案

我们的项目刚刚遇到了类似的问题。 Eclipse 中的发布版本正在左右丢弃类。

出于某种原因,当首次完成调试构建(一直到在模拟器上运行它),然后然后完成发布导出时,它开始工作.

这听起来像是 Eclipse 中的错误,因为混淆器甚至没有配置为在我们的 project.properties 文件中使用。

关于java - Android - 缺少应用程序子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13124098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com