小编baj*_*sko的帖子

Crashlytics发现了一个无效的API密钥 - AndroidStudio构建

我看到了所有其他问题,但没有一个可接受的答案对我有用.

通过以下https://dev.twitter.com/twitter-kit/android/integrate中的集成步骤,我在模块根目录中创建了crashlytics.properties文件.文件中填充了在我新创建的twitter应用程序中找到的apiKey和apiSecret值.

项目构建时出错.我正在使用AndroidStudio 1.0

这是我的错误:

ERROR - Crashlytics Developer Tools error.
java.lang.IllegalArgumentException: Crashlytics found an invalid API key: REAL_APIKEY_VALUE. 
Check the Crashlytics plugin to make sure that the application has been added successfully! 
Contact support@fabric.io for assistance.
Run Code Online (Sandbox Code Playgroud)

android crashlytics android-studio

43
推荐指数
6
解决办法
4万
查看次数

ConstraintLayout GONE视图占用空间

ViewHolder在顶部有一个标题,并且标题在特定情况下变得可见.在大多数其他情况下,标头设置为GONE.问题是当标题设置为GONE时,仍然会计算其高度,而其他视图则spread不同(两者之间的空间更大).

这是一个布局蓝图: 蓝图

蓝图说明:

  1. 标题被约束为top,leftright.
  2. 下面两个视图中packed chain,约束到上一个标头top,ImageViewright和父的leftbottom.

以下是布局检查器的截图,其中突出显示的标题视图设置为GONE: 在此输入图像描述

根据文档,标题视图,当设置为GONE应该缩小到指向其他视图仍然应用于它的约束时,但标题不应占用布局空间并影响ConstraintLayout其设置的高度wrap_content.

在这个检查员截图中,目前尚不清楚实际发生了什么.标题不可见,底部视图显然约束到父顶部,但标题仍在检查器中显示为具有指定高度的全宽.

我不确定这是不是一个错误,或者我应该强制ConstraintLayout重新测量自己.

XML更新:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


    <TextView
        android:id="@+id/list_item_step_conversion_tv_header"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@color/gray_very_light"
        android:padding="@dimen/activity_vertical_margin"
        android:text="@string/favorites"
        android:textColor="@android:color/black"
        android:textSize="@dimen/default_text_size"
        android:textStyle="bold"
        android:visibility="gone"
        tools:visibility="visible"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <TextView
        android:id="@+id/list_item_step_conversion_tv_title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:ellipsize="end" …
Run Code Online (Sandbox Code Playgroud)

android android-constraintlayout constraint-layout-chains

9
推荐指数
1
解决办法
3922
查看次数

从辅助功能获得空根节点 - UiAutomator

从可访问性获取 Got null根节点 - 重试... 来自的消息UiAutomator,我不知道为什么.

不久:

我们正在对我们的应用程序执行E2E测试,每个测试都从启动活动开始.第一次测试成功运行.当第二次测试开始时,在我们开始寻找UiObject之前一切正常.在那次通话中,我们收到了错误.

详细:

第一次测试开始StartActivity并通过入门导航到MainScreen.

开始屏幕开始:

val intent = Intent(appContext, StartActivity::class.java)
appContext.startActivity(intent)
Run Code Online (Sandbox Code Playgroud)

我也尝试过这样:

val intent = appContext.packageManager.getLaunchIntentForPackage(appContext.originalPackageName).apply {
    addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
    addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
appContext.startActivity(intent)
Run Code Online (Sandbox Code Playgroud)

但没有区别,因为测试运行器会在测试运行后自动检查是否存在正在运行的活动,并清除它.

当第二次测试运行时,它仍然从启动,StartActivity但现在跳过启动过程,并且用户(测试运行器)被导航到包含Continue按钮的屏幕.因此,我们找到带有文本的UiObject Continue并等待它出现在屏幕上.一旦出现,我们将点击它.但是,一旦我们启动"查找继续按钮",标题中的消息就会开始出现,几秒钟后,所有内容都会崩溃: 测试运行失败:由于"进程崩溃",仪表运行失败.

片段:

val continueButton = viewByText { appContext stringOf R.string.all_continue }
continueButton.waitToBecomeVisible(1.minute)
continueButton.click()
Run Code Online (Sandbox Code Playgroud)

我猜最后的问题是,是什么导致UiAutomator丢失所有根节点?在调试方法UiDevice一样getUiAutomation,getWindowRoots与实际getRootNode()距离QueryContoller,这是记录上述消息,并没有帮助.

语法糖:

appContext

val appContext: Context get() = InstrumentationRegistry.getTargetContext() 
Run Code Online (Sandbox Code Playgroud)

viewByText:

fun viewByText(text: () …
Run Code Online (Sandbox Code Playgroud)

android automated-tests android-uiautomator

5
推荐指数
1
解决办法
691
查看次数

使用java反射设置数组的值

我使用java反射创建了通用的json解析器,但是有一个我无法解决的错误.

方法(在这个问题的底部),接收我的自定义Model类的子类.我遍历字段并从json设置值.如果子类包含某些其他类的数组属性(同样是Model的子类),我创建了小递归来填充这些对象.

例如.

class UserModel extends Model
{
    @JsonResponseParam(Name="userName")
    public String Name;

    @JsonResponseParam(Name="friends")
    public FriendModel[] Friends;
}
Run Code Online (Sandbox Code Playgroud)

最后,UserModel应该填充好友.(JsonResponseParam是自定义anotation,Name值用作从json获取值的属性)

此方法的结果是IllegalArgumentException,并且它被抛出

field.set(t, values.toArray());
Run Code Online (Sandbox Code Playgroud)

这是方法:

protected <T extends Model> T getModel(T t)
{
    Field[] fields = t.getClass().getFields();

    for (Field field : fields) {
        Annotation an = field.getAnnotation(JsonResponseParam.class);

        if(an != null){
            try 
            {               
                if(field.getType() == boolean.class)                
                    field.setBoolean(t, t.getBool(((JsonResponseParam)an).Name()));

                if(field.getType() == String.class)
                    field.set(t,  t.getString(((JsonResponseParam)an).Name()));

                if(field.getType() == int.class)
                    field.setInt(t,  t.getInt(((JsonResponseParam)an).Name()));

                if(field.getType() == Date.class)
                    field.set(t,  t.getDate(((JsonResponseParam)an).Name()));

                if(field.getType().isArray()){

                    ArrayList<Model> modelArray = t.getModelArray(((JsonResponseParam)an).Name());
                    ArrayList<Model> values = new ArrayList<Model>();

                    for …
Run Code Online (Sandbox Code Playgroud)

java arrays reflection setvalue illegalargumentexception

4
推荐指数
1
解决办法
4521
查看次数

在应用程序还原时在片段中设置侦听器实例

我创建了ErrorDialogFragment,其中包含OnDialogClickListener参数.

需要显示ErrorDialogFragment的每个其他片段或活动都通过ErrorDialogFragment中的公共方法设置OnDialogClickListener.同时,所有这些活动和片段都实现了OnDialogClickListener.

如果用户在显示ErrorDialogFragment时从应用程序退出,则会出现问题,并在一段时间后返回(应用程序从内存中删除).如果用户单击片段选项,它将强制关闭,因为未设置OnDialogClickListener.

我错误地使用了activity-listener-fragment模式,我如何解决这个问题(应用程序已经处于测试阶段..大模式更改是不可接受的.

例如:

接口:

public interface OnDialogClickListener {
    public void OnPositiveClick(int key, Object... args);
    public void OnNegativeClick(int key, Object... args);
}
Run Code Online (Sandbox Code Playgroud)

活动:

public class Home extends FragmentActivity implements TabListener, ServiceConnection, OnDialogClickListener {
    .
    .
    .
@Override
public void OnPositiveClick(int key, Object... args) {
    //some actions
}

@Override
public void OnNegativeClick(int key, Object... args) {
    //some actions
}
Run Code Online (Sandbox Code Playgroud)

分段:

public class ErrorDialogFragment extends DialogFragment implements OnClickListener {

OnDialogClickListener OnDialogClickListener = null;

    .
    .
    .

public void setDialogListener(OnDialogClickListener listener)
{ …
Run Code Online (Sandbox Code Playgroud)

android listener android-fragments

4
推荐指数
1
解决办法
7029
查看次数

致命异常:Google 地图 V2 中的 GLThread、StackOverflowError

我正在实施 Google 地图 V2,并利用从外部 GPX 文件接收的交付路线、设备路径、设备当前位置和交付点位置。问题是它在大多数情况下都有效......我得到的错误(当它不工作时)是下一个:

    03-16 20:48:37.811: I/dalvikvm(16510): threadid=30: stack overflow on call to Lmaps/t/bx;.d:FLLL
    03-16 20:48:37.811: I/dalvikvm(16510):   method requires 40+20+0=60 bytes, fp is 0x60223318 (24 left)
    03-16 20:48:37.811: I/dalvikvm(16510):   expanding stack end (0x60223300 to 0x60223000)
    03-16 20:48:37.811: I/dalvikvm(16510): Shrank stack (to 0x60223300, curFrame is 0x60226e54)
    03-16 20:48:37.821: D/gralloc(16510): unmap_buffer: Successfully unmapped 0xa5000 bytes at address 0x60416000, SharedFd=89, map_count = 3
    03-16 20:48:37.821: D/gralloc(16510): unmap_buffer: Successfully unmapped 0xa5000 bytes at address 0x604bb000, SharedFd=96, map_count = 2
    03-16 20:48:37.881: W/dalvikvm(16510): …
Run Code Online (Sandbox Code Playgroud)

android google-maps-android-api-2

2
推荐指数
1
解决办法
5868
查看次数

SQL Server:未使用非聚集索引

我已经阅读了很多关于索引和它们之间差异的内容。现在我正在我的项目中进行查询优化。我创建了非聚集索引,应该用于查询执行,但事实并非如此。详情如下:

桌子:

在此处输入图片说明

指数:

CREATE NONCLUSTERED INDEX [_IXProcedure_Deleted_Date] ON [por].[DailyAsset]
(
    [Deleted] ASC,
    [Date] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

实体框架生成的查询:

exec sp_executesql N'SELECT 
[Project1].[C1] AS [C1], 
[Project1].[AssetId] AS [AssetId], 
[Project1].[Active] AS [Active], 
[Project1].[Date] AS [Date]
FROM ( SELECT 
    [Extent1].[AssetId] AS [AssetId], 
    [Extent1].[Active] AS [Active], 
    [Extent1].[Date] AS [Date], 
    1 AS [C1]
    FROM [por].[DailyAsset] AS [Extent1]
    WHERE (0 = [Extent1].[Deleted]) AND ([Extent1].[Date] …
Run Code Online (Sandbox Code Playgroud)

sql sql-server non-clustered-index

1
推荐指数
1
解决办法
3192
查看次数

如何通过RTMP将实时视频从android流式传输到Wowza

过去7天占据我的问题是实现从Android到WowzaMediaEngine的实时视频流.

我已经开始对官方Wowza页面进行研究,我很高兴能够存在用于Android和IOS的GoCoderSDK库."小"问题是价格(第一年10k,每年2k),因为我正在为"小"客户建立申请,我尝试过其他图书馆:

  • libstreaming是好的,在我看来是丑陋的编码(没有难过的感觉),有很多错误需要修复,但是使用相当复杂的技术(做得很好).我已经在Nexus 5 marshmallow上测试了一段时间后使用MediaCodec和低视频分辨率.提高分辨率将切换到MediaRecorder,而MediaRecorder大多无法正常工作.在KitKat设备上,我根本无法启动它.经过3-4天的修复实施后,我放弃了.Lib接缝不再维护

  • 媒体广播图书馆看起来很有希望,但没有尝试过.真的很贵.在我看来,500美元/月太简单了.

  • KickFlip经过精心编码,外观漂亮,功能强大,并且已经取消了对RTMP/RTSP的支持.试图恢复支持并失败.

  • RealTimeLibs的价格是可以接受的.从PlayStore安装了广播ME(演示应用),无法启动流.演示应用程序不断崩溃.气馁,没有试图联系他们.

该怎么做,购买GoCoderSDK,重写libstreaming库(因为我有最好的结果)或编写我自己的解决方案(不知道需要多少时间).需要巨大的多媒体体验(我没有)?

android rtmp rtsp live-streaming wowza

1
推荐指数
1
解决办法
2064
查看次数