我尝试将我的 Android 项目更新为 Kotlin 1.4.0
,因为它现在正式稳定,更新后我遇到了问题。我不会在这里发布整个堆栈,因为它很长,但它的顶部看起来像这样:
...
> Task :app:transformClassesWithFirebasePerformancePluginForDebug
java.lang.ClassNotFoundException: javax.mail.internet.MimeBodyPart
> Task :app:mergeDebugJavaResource
> Task :app:dexBuilderDebug FAILED
org.gradle.workers.WorkerExecutionException: There was a failure while executing work items
...
Run Code Online (Sandbox Code Playgroud)
在堆栈中寻找原因,我发现了这个:
...
Caused by: org.gradle.tooling.BuildException: Failed to process:
/bitrise/src/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/0,
/bitrise/src/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/1,
/bitrise/src/app/build/intermediates/transforms/FirebasePerformancePlugin/debug/2
...
Run Code Online (Sandbox Code Playgroud)
这使我得出结论,Firebase 性能库无法正确构建。我正在使用 Firebase Performance 版本19.0.8
和 gradle classpath plugin version 1.3.1
。我有一段时间没有更改它,恢复到早期版本并不能解决问题。在堆栈上注册的最后一个错误是这样的:
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
at com.android.builder.dexing.D8DexArchiveBuilder.getExceptionToRethrow(D8DexArchiveBuilder.java:151)
at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:118)
at com.android.build.gradle.internal.dexing.DexWorkActionKt.process(DexWorkAction.kt:194)
... 33 more
Caused by: java.lang.IllegalStateException: Unexpected non-class file: META-INF/versions/9/kotlin/reflect/jvm/internal/impl/serialization/deserialization/builtins/BuiltInsResourceLoader.class
Run Code Online (Sandbox Code Playgroud)
我已经确定,删除 Firebase Performance 库并恢复到 …
我正在尝试使用Dokka插件为Android Kotlin应用程序生成Javadoc.我将插件添加到我的gradle中:
classpath "org.jetbrains.dokka:dokka-gradle-plugin:0.9.15"
Run Code Online (Sandbox Code Playgroud)
然后我按照项目说明进行了基本配置:
dokka {
outputFormat = 'javadoc'
outputDirectory = "$rootDir/docs"
skipEmptyPackages = true
noStdlibLink = true
}
Run Code Online (Sandbox Code Playgroud)
我使用基本的gradle命令生成文档:
[user@linux AppDir]$ bash gradlew dokka
Run Code Online (Sandbox Code Playgroud)
输出很好,但它包括我添加到项目中的android或插件的多个目录,例如:
android.R
android.support
com.google
com.crashlytics
.
.
.
etc.
Run Code Online (Sandbox Code Playgroud)
我如何跳过这些包裹?有没有办法只为我的/ app/scr/java文件夹和我创建的文件生成dock?任何帮助表示赞赏.
我正在使用带有嵌套路由器的 Flutter Navigator 2.0 - 有一个通过调用创建的主路由器,MaterialApp.router()
以及使用适当的 RouterDelegates 创建为小部件的子路由器Router()
(子路由器用作底部导航的页面)。
在当前的用例中,我想使用深层链接打开嵌套路由器内的页面之一,因此我按照说明进行配置:
RouteInformationParser
将其解析为我自己的模型PlatformRouteInformationProvider
通知所有嵌套路由器有关路由更改的信息当应用程序位于前台时(在启动屏幕上),一切正常 - 我收到一个 PushRoute 事件,并且根和嵌套Router
小部件正确处理深层链接。但是,当应用程序未启动时,我没有收到设置为我的深层链接的初始路由,并且我得到默认值,空RouteInformation
即空。为什么会发生这种情况?这是我的代码示例:
Android Manifest 中的FlutterMainActivity
配置:
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:windowSoftInputMode="adjustResize">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" />
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- For deeplinking -->
<meta-data
android:name="flutter_deeplinking_enabled"
android:value="true" />
<!-- Accepts links in format myapp://*.myapp.com/ -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Android 应用程序,我决定使用可扩展的列表视图。我有我需要的一切,列表工作正常,但是当我填充它时,组的顺序似乎与它们应该的顺序不同,这是一个例子:
如您所见,子值很好,只有父值以随机顺序出现。这是我拥有的完整代码:
我的片段代码:
public class BuildingsFragment extends Fragment {
public BuildingsFragment() {
// Required empty public constructor
}
public static BuildingsFragment newInstance(Context context) {
BuildingsFragment fragment = new BuildingsFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_buildings, container, false);
final ExpandableListView expandableListView = (ExpandableListView) view.findViewById(R.id.expandableListViewBuildings);
HashMap<String, List<String>> expandableListDetail = ExpandableListDataPump.getData();
List<String> expandableListTitle = new …
Run Code Online (Sandbox Code Playgroud)