我在应用程序商店中的一个应用程序与Android 5.0完美配合,但从今天起我的设备升级到6.0我得到了奇怪的错误.我把它缩小到碎片过渡动画.
ftrans.setCustomAnimations(inAnim, outAnim, inAnim, outAnim);
Run Code Online (Sandbox Code Playgroud)
没有这一行,我的应用程序也可以在6.0上正常工作,我得到这个错误:
10-14 14:36:51.016 23750-23820/? A/libc: Fatal signal 7 (SIGBUS), code 1, fault addr 0xb1 in tid 23820 (hwuiTask1)
10-14 14:36:51.118 200-200/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-14 14:36:51.118 200-200/? A/DEBUG: Build fingerprint: 'google/hammerhead/hammerhead:6.0/MRA58K/2256973:user/release-keys'
10-14 14:36:51.118 200-200/? A/DEBUG: Revision: '0'
10-14 14:36:51.118 200-200/? A/DEBUG: ABI: 'arm'
10-14 14:36:51.118 200-200/? A/DEBUG: pid: 23750, tid: 23820, name: hwuiTask1  >>> com.xxx.xxx <<<
10-14 14:36:51.118 200-200/? A/DEBUG: …Run Code Online (Sandbox Code Playgroud) 我刚刚将一个应用程序从Firebase 9.0.0更新到Firebase 9.0.2.我使用短信+广告.
compile 'com.google.firebase:firebase-messaging:9.0.2' 
compile "com.google.firebase:firebase-ads:9.0.2"
Run Code Online (Sandbox Code Playgroud)
现在已经出现了许多不必要的许可
android:name="android.permission.READ_PHONE_STATE"
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
Run Code Online (Sandbox Code Playgroud)
我没有在任何地方添加这些权限,因此它们必须来自Firebase.我知道我的客户不喜欢这些权限,所以我删除了它们
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:node="remove" />
<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE"
    tools:node="remove" />
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
我的应用程序仍然有效,消息和广告仍然有效,但我仍然怀疑我的怀疑.
为什么Firebase会添加这些权限,是否可以像我一样删除它们?
我试图进入C#泛型并创建了一个状态模式的状态机,现在我尝试重构.
我有一个状态,它引用了它正在处理的对象.
public abstract class AbstractState<T> where T : StatefulObject {
    protected T statefulObject;
    public AbstractState(T statefulObject) {
        this.statefulObject = statefulObject;
    }
}
Run Code Online (Sandbox Code Playgroud)
我有一个有状态的对象,这应该引用它的当前状态.
public abstract class StatefulObject<T> : MonoBehaviour where T : AbstractState<StatefulObject<T>> {
    public T state;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用("类型不能用作泛型类型或方法中的类型参数't').
我想要实现的是这样的:
public class Monster : StatefulObject<MonsterState> {
}
public abstract class MonsterState : AbstractState<Monster> {
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果不是这样,还有另一个吗?谢谢.
我创建了一个名为"UtilsLib"的新项目.在这个项目中,我创建了几个模块,所有库模块,其中一个称为'utils'.
为了测试lib,我创建了一个名为"Test1"的新项目.我通过添加将'UtilsLib'项目的'utils'模块添加到'Test1'
include ':utils'
project(':utils').projectDir = new File('/Users/xyz/AndroidStudioProjects/UtilsLib/utils')
Run Code Online (Sandbox Code Playgroud)
到'Test1'的'settings.gradle'文件.
我还在我的应用程序模块中添加了对'utils'的依赖.
compile project(path: ':utils')
Run Code Online (Sandbox Code Playgroud)
从我的util模块导入类'MarketNames'工作,IDE没有显示任何错误,但当我尝试编译时,我总是得到
:app:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
/Users/xyz/AndroidStudioProjects/test2/app/src/main/java/de/xyz/test2/MainActivity.java
Error:(17, 31) error: cannot find symbol variable MarketNames
:app:compileDebugJavaWithJavac FAILED
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Run Code Online (Sandbox Code Playgroud)
为什么Java找不到我的类MarketNames?我在调试模式下运行,没有Proguard.
编辑:我的lib项目中的类结构是这样的:
public class Market {
    public enum MarketNames {
       GOOGLE, AMAZON
    }  
}
Run Code Online (Sandbox Code Playgroud)
我在我的测试项目中使用它,如下所示:
import de.xyz.utilslib.market.Market;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d("Test", Market.MarketNames.GOOGLE.name()); …Run Code Online (Sandbox Code Playgroud) 今天我再次遇到了一个"机器人"时刻,这让我完全无能为力.
我有一个应用程序,它包含一个DrawerLayout,它包含一个RelativeLayout作为SurfaceView(surfaceViewContainer)的容器,另一个ViewGroup(RelativeLayout的子类)作为导航.
当应用程序启动时,在onCreate中我膨胀布局并将SurfaceView添加到surfaceViewContainer.
在带有4.1.2的三星S2和带有4.3的S3上一切正常,我可以看到SurfaceView绘制,我可以通过滑动手势或主页按钮打开和关闭抽屉.然后我在Android 4.4上使用Nexus 5和Nexus 10进行了测试,在这两个设备上抽屉都不会出现.即使按下主页按钮也不会做任何事情.
更奇怪的是:我可以在添加SurfaceView之前打开抽屉,当我这样做时,即使在添加SurfaceView之后我也可以与抽屉进行交互,即使在Android 4.4上,所以打开/关闭也可以.
所以我的问题是:任何人之前都经历过这样的事情或者有一些建议或知道从Android 4.3到4.4可能有什么变化?
ps:我已经在其他应用程序中成功使用了DrawerLayout,只是没有使用SurfaceView,所以我认为问题就在那里.
谢谢
android surfaceview drawerlayout android-4.3-jelly-bean android-4.4-kitkat
我刚刚切换到FlexJson,我已经遇到了问题.
http://flexjson.sourceforge.net/上的文档章节Controlling JSON naming with @JSON说明:
对象序列化时,JSON对象上的属性名称由Java属性的名称确定.这意味着使用了getter方法的名称或字段名称.但是,有时JSON输出与Java对象使用的名称不匹配.您可以使用@JSON注释来控制它.例如:
    public class Species {
        @JSON(jsonName = "genus")
        private String type;
        private String name;
        @JSON(jsonName="species")
        public String getName() {
           return name;
        }
    }
Run Code Online (Sandbox Code Playgroud)
除了它不起作用.然后他们说:
定义@JSON.jsonName用于序列化和反序列化.
现在,当我查看http://flexjson.sourceforge.net/javadoc/index.html上的javadoc时,我可以看到有4个可选元素属于@JSON注释,这些是
包含名称objectFactory转换器
没有jsonName,就像在例子中一样.
那么我如何让这个注释工作,所以我可以有不同的java和json名称?如何定义此注释元素或使用预定义的元素name
为了澄清,我可以注释@JSON和自动完成推荐@JSON(include),但后来include无法解决...
我正在使用FlexJson 2.1,我导入了flexjson.JSON;
顺便说一下,我知道这个答案/sf/answers/621573151/,但这不是我想要的.我想使用注释.
我刚刚将我的GCM实施更新到Firebase.
我开始创建一个FCM项目并添加了我的一个应用程序.当我进入第二个应用程序时,我创建了一个新的FCM项目,但后来发现我可以将多个应用程序链接到一个项目,所以我将第二个应用程序链接到我的第一个项目.
现在我将所有应用程序链接到一个项目并且运行良好,我仍然想知道这是否是最好的(最明智的!?)方式.因为现在我每次下载"google-services.json"时都会为我所有链接的应用程序配置内容,即使我现在的应用程序中不需要它(我不确定是否可以删除多余的东西) (我可以吗?)).
只有一个项目还有其他任何后果,还是一件好事?
android ×4
firebase ×2
java ×2
admob ×1
animation ×1
annotations ×1
c# ×1
drawerlayout ×1
flexjson ×1
generics ×1
permissions ×1
surfaceview ×1