为一个开源项目创建dummy Fabric Api键

我正在开发一个开源项目(Kotlin,Toothpick,Clean Architecture – 时下的炒作主题,但这不是问题:)。 我正在使用Fabric的Crashlytics,所以我根据官方文档 (以下是一些细节 )将API和密钥隐藏到fabric.properties , 问题是什么是为合作者提供一些虚拟键而不需要解决这个属性文件中的合并冲突的最好方法? 如果我在没有这个文件的情况下发布这个项目,它会在构建时崩溃,因为Fabric将找不到所需的密钥。 我看到的选项: 将fabric.properties附加到不是来自实际应用程序仪表板的预定义API和密钥中,因此如果有人(有意或无意)制动分析或其他东西,它们的数据将位于单独的仪表板中。 什么都不做,所以如果有人感兴趣,他们必须手动。 提供回购的真正关键(我不认为这是一个好主意,但如果你有其他经验,请分享它) 也许,Fabric有一些虚拟键只是没有失败的构建没有他们(我还没有find他们)? 别的东西?

groupValues只返回重复模式的最后一次出现

println(Regex(“(A|B)+”).matchEntire(“AB”)!!.groupValues) 打印[AB, B]但我希望结果是[AB, A, B] 。 这是行为吗? 有没有办法获得[AB, A, B] ?

X和Y轴标签不显示使用Android小部件

我想使用androidplot来显示一个android小部件内的情节。 实际上,小部件的主要内容应该是显示情节。 我的问题是我根本看不到x和y标签。 (虽然我可以设置和看到整体范围的标签,如“温度°C”)。 这里是相关的代码部分(实际上在Kotlin中,而不是在Java中): val plot = XYPlot(context, “Historyplot”) plot.setRangeLabel(“Temp. in Grad”) plot.setDomainLabel(“Zeit”) plot.title.labelPaint.textSize = 20f plot.rangeTitle.labelPaint.textSize = 20f plot.domainTitle.labelPaint.textSize = 20f plot.legend.isVisible = false plot.setBackgroundColor(Color.TRANSPARENT) val h = appWidgetManager.getAppWidgetOptions(appWidgetId).getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT) val w = appWidgetManager.getAppWidgetOptions(appWidgetId).getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH) plot.setPlotMargins(10f, 10f, 10f, 10f) plot.layout(0, 0, w, h) val history = mutableListOf() for (dataPoint in sensorHist) { history.add(dataPoint.value ?: Double.NaN) […]

IllegalArgumentException:savedInstanceState指定为非空为空

当我启动MainActivity时出现一个奇怪的错误: 06-16 16:01:05.193 2083-2083/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.android.example.github, PID: 2083 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.example.github/com.android.example.github.ui.MainActivity}: java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6121) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) Caused by: java.lang.IllegalArgumentException: Parameter specified […]

JNI getObjectClass使VM崩溃

我试图做一个事情,C ++通过JNI记录到Java端。 到目前为止,我有一个本地的制定者: public native void setLogger(Logger logger); 我用C ++实现的: void __stdcall Java_setLogger(JNIEnv* env, jobject, jobject loggerInstance) { logger = Logger(env, &loggerInstance); } Logger类的构造函数如下所示: Logger::Logger(JNIEnv* env, jobject* loggerInstance) { this->env = env; this->loggerInstance = *loggerInstance; } 当我尝试通过提供的记录器实例(来自Java)上的JNI调用java方法时,它会使虚拟机崩溃。 我不知道为什么,因为这是从其他stackoverflow问题拼凑在一起。 void Logger::debug(const std::string code, const std::string message) const { std::cout << "debug!" <GetObjectClass(loggerInstance); std::cout << "class retrieved" […]

Android音频捕捉静音检测

我发现这个android代码当他/她开始说话时记录用户声音,当他/她停止时停止录音。 但问题是,录制停止很快。 如果要说两个字,就只记录第一个字。 如何改变下面的代码,使录音过程对短暂的沉默不那么敏感? public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final int RECORDER_BPP = 16; int RECORDER_SAMPLERATE = 8000; int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_MONO; int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT; // Get the minimum buffer size required for the successful creation of // an AudioRecord object. int bufferSizeInBytes = AudioRecord .getMinBufferSize(RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING); // Initialize Audio Recorder. […]

Spring MVC控制器PathVariables上的Java beanvalidation

我试图让Java Beanvalidation注释在Spring MVC控制器中与路径variables和查询参数一起工作。 (环境:Spring Boot v1.3.5,Springxxx 4.2.6,Kotlin 1.0.3编程语言) 例如 @RequestMapping(value = “/{someId}” …) fun getSomething(**@SomeValidId** @PathVariable(“someId”) someId: String):… 我已经按照https://raymondhlee.wordpress.com/2015/08/29/validating-spring-mvc-request-mapping-method-parameters/中所述添加了org.springframework.validation.beanvalidation.MethodValidationPostProcessor,并且还添加了org。 springframework.validation.beanvalidation.LocalValidatorFactoryBean作为上面的validatorFactory。 @Configuration …class …. { … @Bean open fun localValidatorFactoryBean() = LocalValidatorFactoryBean() @Bean open fun methodValidationPostProcessor() : MethodValidationPostProcessor { val methodValidationPostProcessor = MethodValidationPostProcessor() methodValidationPostProcessor.setValidator(localValidatorFactoryBean()) return methodValidationPostProcessor } } 但是当我使用org.springframework.validation.annotation.Validated注解Controller类(或者它实现的接口)时,建议看起来像控制器类被代理(这似乎是预期的 – https://github.com/spring -projects / spring-security / issues […]

在WhatsApp中打开对话并填充文本

我想打开WhatsApp到一个特定的对话,并用一些字符串填充文本字段。 代码,我有,我设法打开与联系人的谈话: private void openConversationWithWhatsapp(String e164PhoneNumber){ String whatsappId = e164PhoneNumber+”@s.whatsapp.net”; Uri uri = Uri.parse(“smsto:” + whatsappId); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); intent.setPackage(“com.whatsapp”); intent.putExtra(Intent.EXTRA_TEXT, “text”); intent.putExtra(Intent.EXTRA_SUBJECT, “subject”); intent.putExtra(Intent.EXTRA_TITLE, “title”); intent.putExtra(Intent.EXTRA_EMAIL, “email”); intent.putExtra(“sms_body”, “The text goes here”); intent.putExtra(“text”,”asd”); intent.putExtra(“body”,”body”); intent.putExtra(“subject”,”subjhect”); startActivity(intent); } 文本框中没有填充内容。 我试图偷看AndroidManifest.xml文件,发现他们的对话活动的以下信息: 有人知道额外使用? 他们故意阻止这个吗? 我在他们的常见问题页面看到了iOS的API。

如何在unit testing中处理嘲讽的RxJava2可观察抛出exception

在过去的几个星期里,我一直在Kotlin使用MVP在Android上进行TDD。 事情进展顺利。 我使用Mockito来模拟类,但我似乎无法完成如何执行我想运行的测试之一。 以下是我的测试: 调用API,接收数据列表,然后显示列表。 loadAllPlacesTest() 调用API,接收空数据,然后显示列表。 loadEmptyPlacesTest() 调用API,在路上发生一些exception,然后显示错误信息。 loadExceptionPlacesTest() 我已经成功测试了#1和#2。 问题在于#3 ,我不确定如何在代码中进行测试。 RestApiInterface.kt interface RestApiInterface { @GET(RestApiManager.PLACES_URL) fun getPlacesPagedObservable( @Header(“header_access_token”) accessToken: String?, @Query(“page”) page: Int? ): Observable } RestApiManager.kt实现接口的管理器类如下所示: open class RestApiManager: RestApiInterface{ var api: RestApiInterface internal set internal var retrofit: Retrofit init { val logging = HttpLoggingInterceptor() // set your desired log level […]

错误:(2,0)无法find方法’org.gradle.api.internal.file.DefaultSourceDirectorySet

我最近升级我的android工作室到3.0.1当我尝试创建新的项目我得到下面的错误我的代码运行良好的旧版本我也升级了Gradle插件 错误 Error:(2, 0) Unable to find method ‘org.gradle.api.internal.file.DefaultSourceDirectorySet.(Ljava/lang/String;Lorg/gradle/api/internal/file/FileResolver;)V’. Possible causes for this unexpected error include:Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network)The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem. Stop […]