我在崩解剂上有这个例外,并且不知道如何重现或原因可能是什么.有没有人有任何关于我应该从哪里开始寻找的指示?仅影响Android 5+.
Fatal Exception: java.lang.IllegalStateException: Unable to create layer for v
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5585)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:我想更新它不仅影响Android 5,它似乎影响Android 5+
在我的最新版本中,我的一些用户(不到0.2%)因为android.support.v7.app.AppCompatDelegateImplV23无法找到而崩溃.我无法重现这个问题,我只收到关于崩解的报道.我用apktool从我的apk中提取文件,我可以AppCompatDelegateImplV23.smali在那里看到.知道会发生什么吗?
这是我在gradle上的编译行:
compile 'com.android.support:appcompat-v7:23+'
Run Code Online (Sandbox Code Playgroud)
这是例外:
Fatal Exception: java.lang.NoClassDefFoundError: android.support.v7.app.AppCompatDelegateImplV23
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:133)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:117)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:456)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:59)
at MyActivityClass.onCreate(MyActivityClass.java:353)
at android.app.Activity.performCreate(Activity.java:6248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544)
at android.app.ActivityThread.access$900(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1394)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5845)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:117)
Run Code Online (Sandbox Code Playgroud)
编辑:这是我的主要gradle文件:
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
jcenter() // version plugin support
}
dependencies {
classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.android.tools.build:gradle:1.3.1'
}
allprojects {
repositories {
jcenter()
}
}
} …Run Code Online (Sandbox Code Playgroud) android android-appcompat android-activity android-support-library
我试图SwitchCompat在溢出菜单上使用一个小部件,android.support.v7.widget.Toolbar但我无法让它工作,它总是显示为空白.
这是我的菜单定义:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.oveflowtest.ScrollingActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
<item android:id="@+id/test"
app:actionLayout="@layout/testlayout"
app:showAsAction="never"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
这是testlayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="match_parent" android:text="test"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
此外,如果我showAsAction改为always而不是never那时它在工具栏上显示就好了,但我不想在那里,我希望它在溢出菜单上,当我按下3个点时打开.
我知道有一个选项可以使用复选标记,但我正在跟随设计要求切换.
谢谢.
android android-appcompat android-compatibility android-toolbar
我正在将我的应用程序从CastCompanionLibrary中移开,因为我需要支持更多的流媒体设备,而且我的一些用户在使用Chromecast时遇到了问题.我删除了所有不必要的代码并创建了一个应用程序,只是为了查看发现过程中发生了什么,并将其发送给其中一个用户,代码永远不会从媒体路由器获得任何回调.同时他们可以使用CastCompanionLibrary运行我的旧应用程序,它会发现Chromecast很好.
这是我发送给用户的代码,它是一个自包含的类和布局:
public class MainActivity extends AppCompatActivity {
private static SimpleDateFormat TIME_ONLY = new SimpleDateFormat("HH:mm:ss.SSS");
private static Handler handler;
protected MediaRouter.Callback mMediaRouterCallback;
boolean isRunning = false;
private TextView logView;
private MediaRouter mMediaRouter;
private MediaRouteSelector mMediaRouteSelector;
private Timer removeRoutesTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
logView = (TextView) findViewById(R.id.log);
Button sendLog = (Button)findViewById(R.id.send_log);
sendLog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent send = new Intent(Intent.ACTION_SENDTO);
String uriText = "mailto:" + Uri.encode("myemail") +
"?subject=" + Uri.encode("Logs") +
"&body=" …Run Code Online (Sandbox Code Playgroud) 我已经实现了https://code.google.com/p/android/issues/detail?id=78377上列出的众多解决方案中的一个解决此问题的4.2.2手机,但现在我已更新为支持工具23问题又回来了.如果您查看该问题报告,您会看到自更新以来有很多人遇到同样的问题.NoClassDefFoundError:android.support.v7.internal.view.menu.MenuBuilder上的解决方案也不起作用,因为它们来自https://code.google.com/p/android/issues/detail?id=78377
这是我得到的例外:
java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.i
at android.support.v7.widget.ActionMenuView.getMenu(ActionMenuView.java:643)
at android.support.v7.widget.Toolbar.ensureMenu(Toolbar.java:876)
at android.support.v7.widget.Toolbar.getMenu(Toolbar.java:847)
at android.support.v7.internal.widget.ToolbarWidgetWrapper.getMenu(ToolbarWidgetWrapper.java:702)
at android.support.v7.internal.app.ToolbarActionBar.getMenu(ToolbarActionBar.java:583)
at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:441)
at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:65)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:776)
at android.view.Choreographer.doCallbacks(Choreographer.java:579)
at android.view.Choreographer.doFrame(Choreographer.java:547)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:762)
at android.os.Handler.handleCallback(Handler.java:800)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5391)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)
我的节目有这个:
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}
Run Code Online (Sandbox Code Playgroud)
有解决方案吗 得到了很多用户的抱怨.
android proguard android-support-library android-support-design
我不确切知道bug的位置,我认为它在Play商店,但我猜它可能是Google Play服务.
基本上,手机上有帐户X和Y的用户将使用帐户X在我的应用程序上进行应用程序内购买.然后我将分阶段推出更新,并且将该应用程序安装为帐户X的用户突然将获得帐户Y的更新,应用程序将无法识别已购买的应用内商品.
我与其他开发人员讨论了类似的应用内模型,他们遇到了同样的错误.
我在哪里提交该bug?
谢谢.
android in-app-purchase google-play google-play-services android-inapp-purchase
ThumbnailUtils.extractThumbnail()使用MediaMetadataRetriever并且该方法有一个错误finalize()导致一些崩溃.所以我想知道我是否可以使用ExoPlayer来创建我的缩略图?
谢谢.
所以我的应用程序有一些触发服务和通知的远程操作.在调用startForegroundService和服务尝试启动通知的时间之间,事情可能会发生变化,因此服务会再次检查事物的状态,然后决定要做什么.
因此,如果我的服务决定它不需要运行,它将调用:
stopForeground(true);
stopSelf();
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,这似乎不起作用,因为我在进行这些调用后几乎立即得到此异常.
11-16 13:34:23.488 15099-15099/mypackage E/AndroidRuntime: FATAL EXCEPTION: main
Process: mypackage, PID: 15099
android.app.RemoteServiceException: Context.startForegroundService() did not then call Service.startForeground()
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1768)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Run Code Online (Sandbox Code Playgroud)
那我怎么解决这个问题呢?
谢谢.
编辑:
我创建了一个示例项目,它只是startForegroundService在Activity启动时调用,然后在服务上执行此操作:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG,"start");
stopForeground(true);
stopSelf();
return super.onStartCommand(intent, flags, startId);
}
Run Code Online (Sandbox Code Playgroud)
无论我是否使用,它都会崩溃stopForeground(true).
编辑:这似乎解决了它,但似乎真的很丑,必须创建一个假通知只是为了取消它.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG,"start");
String …Run Code Online (Sandbox Code Playgroud) 我已经看到一些关于此问题的答案,但它们都非常过时(就像他们谈论非常旧的 WebView 版本一样)。
我的应用程序确实使用 WebView,因为它是一个浏览器,它也有广告,而且它们通常也使用 WebView。它还使用 ExoPlayer,我认为一些广告也使用 ExoPlayer 展示。不幸的是,我没有关于这些 ANR 何时发生的任何详细信息,但我确实知道自从将广告中介切换到另一家公司以来,它们发生的次数要多得多。
我看到了禁用硬件加速的建议,但我不明白为什么或何时这样做?对我来说,感觉硬件加速是一件好事?
这是 ANR 的堆栈跟踪:
main (native): tid=1 systid=7983
#00 pc 0x7590c libc.so
#01 pc 0x795f8 libc.so
#02 pc 0xda55c libc.so
#03 pc 0x327d54 libhwui.so
#04 pc 0x30a2dc libhwui.so
at android.graphics.HardwareRenderer.nSyncAndDrawFrame(HardwareRenderer.java)
at android.graphics.HardwareRenderer.syncAndDrawFrame(HardwareRenderer.java:436)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:658)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:4664)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4375)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3585)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2340)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9057)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1040)
at android.view.Choreographer.doCallbacks(Choreographer.java:864)
at android.view.Choreographer.doFrame(Choreographer.java:791)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1025)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:255)
at android.app.ActivityThread.main(ActivityThread.java:8212)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
Run Code Online (Sandbox Code Playgroud) 我得到了别人制作的Visual Studio解决方案.它有一个使用Installshield LE的安装程序项目.安装程序构建正常,但它生成一个exe,我应该做一个msi.我知道编写该项目的人会生成msi文件,但我没有看到任何选项.这对LE有用吗?