Javadoc generation failed.

具体问题描述:

Execution failed for task ':UIWidget:androidJavadocs'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/Users/aria/dev/android/work_space/KeepassLib/UIWidget/build/tmp/androidJavadocs/javadoc.options'

* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output. Run with --scan to get full insights.

javadoc: ?? - ???????: /Users/aria/dev/android/sdk/docs/reference/element-list
阅读更多

Android oneDrive 集成(二)-- 单租户账号集成

Android oneDrive 集成(一)– SDK申请

Android oneDrive 集成(三)– 使用Postman测试Graph API

微软的MSAL平台有多种租户模式,本篇文章将介绍单租户的接入方式。

AzureADMyOrg:仅限应用注册的组织目录中的帐户(单租户)
AzureADMultipleOrgs:任何组织目录中的帐户(多租户)
AzureADandPersonalMicrosoftAccount:任何组织目录中的帐户 (多租户) 和个人 Microsoft 帐户 (例如,Skype、Xbox 和 Outlook.com)
PersonalMicrosoftAccount:仅个人 Microsoft 帐户

注意⚠️:本篇文章仅适用于单租户,因为MSAL对不同的租户有不同的接入方式。

阅读更多

Android oneDrive 集成(一)-- SDK申请

Android oneDrive 集成(二)– 单租户账号集成

Android oneDrive 集成(三)– 使用Postman测试Graph API

最近我的个人应用KeepassA在酷安上收到了很多私信,问我能不能集成下OneDrive,作为唯一的没有被墙的,大型的跨平台云盘服务,集成OneDrive貌似很有必要。因此研究了好几天的微软文档,遇到了很多坑,总算是搞明白了该怎么集成。
这里不得不吐槽下,微软的东西总是大而全,对新接开发者很不友好,平台那出现问题,错误信息非常不明确。

阅读更多

日常爬坑-Android Transitions动画失效

最近在我的应用KeepassA中碰到了一个诡异的过渡动画问题

API版本:29

正常状态应该如下:

normal

当我从一级设置界面,进入二级设置界面后,并从二级设置界面返回时,一级界面当回主页的过渡动画消失了!!

android_ta_error
阅读更多

日常爬坑-指纹解锁Key permanently invalidated

最近我的个人应用KeepassA在bugly上收到了一个行奇怪的问题。

错误日志:

java.lang.RuntimeException:java.lang.reflect.InvocationTargetException
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
......
Caused by:
android.security.keystore.KeyPermanentlyInvalidatedException:Key permanently invalidated
android.security.KeyStore.getInvalidKeyException(KeyStore.java:1368)
android.security.KeyStore.getInvalidKeyException(KeyStore.java:1413)

android.security.keystore.KeyStoreCryptoOperationUtils.getInvalidKeyExceptionForInit(KeyStoreCryptoOperationUtils.java:54)
android.security.keystore.KeyStoreCryptoOperationUtils.getExceptionForCipherInit(KeyStoreCryptoOperationUtils.java:89)
android.security.keystore.AndroidKeyStoreCipherSpiBase.ensureKeystoreOperationInitialized(AndroidKeyStoreCipherSpiBase.java:265)
android.security.keystore.AndroidKeyStoreCipherSpiBase.engineInit(AndroidKeyStoreCipherSpiBase.java:109)

阅读更多

日常爬坑-指纹解锁Invalid argument

最近我的个人应用KeepassA在bugly上收到了一个行奇怪的问题,在androidQ上出现了keyStore参数异常的问题。

异常日志

java.lang.RuntimeException:java.lang.reflect.InvocationTargetException
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
......
Caused by:
android.security.KeyStoreException:Invalid argument
android.security.KeyStore.getKeyStoreException(KeyStore.java:1303)
android.security.keystore.KeyStoreCryptoOperationChunkedStreamer.doFinal(KeyStoreCryptoOperationChunkedStreamer.java:224)
android.security.keystore.AndroidKeyStoreCipherSpiBase.engineDoFinal(AndroidKeyStoreCipherSpiBase.java:506)
javax.crypto.Cipher.doFinal(Cipher.java:2055)
阅读更多

日常爬坑-Fragment传参失败

最近我的个人应用KeepassA在bugly上看到一个很奇怪的问题,activity在给fragment传参时,使用了赋值的方式,如下:

val f = FragmentA()
f.b = "sss"

某些情况下,b的属性死活拿不到,导致程序出现空指针异常。

阅读更多

日常爬坑-android uri 生命周期问题

最近在写我的个人应用KeepassA时,遇到了android文件uri生命周期的问题,被文件真实路径的获取搞得有点懵逼。从android p开始,谷歌对文件访问的权限限制的更加变态了,如果想兼容大多数机型,使用谷歌提供的ASF框架是一个很好的选择。

但是该框架只能返回文件的uri,并不能返回文件路径,并且随着android的进一步升级,特别是从android Q 开始,已经完全无法从uri获取到文件真实路径了!!

阅读更多

Clang编译FFmpeg常见问题

最近闲来无事,就开始研究下和ffmpeg相关都知识,看了网上关于ndk编译ffmpeg的教程,基本上都是使用gcc来编译,而ndk从r18b开始就正式移除gcc来,因此很有必要研究下clang编译ffmpeg,在此过程中遇到了不少奇怪的问题。

系统:macos
ffmpeg版本:4.1.3
ndk版本:r19c
编译器:clang

阅读更多

android jni 动态注册

最近在研究ffmpeg这个视频库,需要使用到jni的接口,官网看了一遍jni函数注册的方法,感觉特别繁琐,每当新增一个native方法时都要手动编写一个对应的cpp函数,并且cpp函数还要有命名约束,实在不方便。
并且静态注册还有以下弊端:

  • 后期类名、文件名改动,头文件所有函数将失效,需要手动改,超级麻烦易出错
  • 代码编写不方便,由于 JNI 层函数的名字必须遵循特定的格式,且名字特别长;
  • 会导致程序员的工作量很大,因为必须为所有声明了 native 函数的 java 类编写 JNI 头文件;
  • 程序运行效率低,因为初次调用 native 函数时需要根据根据函数名在 JNI 层中搜索对应的本地函数,然后建立对应关系,这个过程比较耗时。
阅读更多