我正在创建一个新的android项目,并决定将新的AndroidX替换为支持库,有关支持的文档,请参见:https : //developer.android.com/jetpack/androidx/migrate。
我按照字母的步骤进行操作,并在同步gradle之后,可以访问androidx名称空间和其中包含的各种类。但是,在创建我的应用程序类时,我想从中继承androidx.multidex.MultiDexApplication(可以在上面的链接的表中看到)。但是,整个multidex软件包不存在。
有人解决了这个问题吗?有指针吗?
我正在使用Dagger 2.21,而当我尝试这样做时
@Module
internal abstract class FragmentModule {
@ContributesAndroidInjector
internal abstract fun loginFragment() : LoginFragment
}
Run Code Online (Sandbox Code Playgroud)
和
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, AppModule::class, ActivityModule::class, ViewModelBuilder::class, ViewModelModule::class, RepositoriesModule::class, ApiModule::class, FragmentModule::class])
interface AppComponent : AndroidInjector<PhotocoApplication> {
@Component.Builder
abstract class Builder : AndroidInjector.Builder<PhotocoApplication>()
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
/app/build/generation/source/kapt/debug/com/photoco/app/injection/module/FragmentModule_LoginFragment$app_debug.java:18:错误:不兼容的类型:类LoginFragment无法转换为类扩展Fragment
我一直在搜索,发现使用2.21并将其设置为可以正常工作,但还没有运气
android.useAndroidX = true; android.enableJetifier = true
LoginFragment扩展:
dagger.android.support.DaggerFragment()
由于所有这些设置无法构建,我在这里缺少什么吗?我可以使用DaggerActivity使其与Activity一起使用,但不能与Fragments一起使用。
PhotocoApplication扩展了dagger.android.support.DaggerApplication
谢谢!
如果添加以下行,则在创建新的Android Studio项目(“空活动”类型)后:
// Lifecycle/View Models
def lifecycleVersion = '2.0.0'
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion"
annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycleVersion"
// Core testing
def coreTestingVersion = '2.0.1'
testImplementation "androidx.arch.core:core-testing:$coreTestingVersion"
androidTestImplementation "androidx.arch.core:core-testing:$coreTestingVersion"
Run Code Online (Sandbox Code Playgroud)
对于应用程序的build.gradle文件,当您尝试运行connectedCheck项目任务时会看到错误。查看输出:
Zachs-MBP:CoreTestingVersionExample Zach$ ./gradlew connectedCheck
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':app:preDebugAndroidTestBuild'.
> Could not resolve all task dependencies for configuration ':app:debugAndroidTestRuntimeClasspath'.
> Could not resolve androidx.arch.core:core-common:2.0.0.
Required by:
project :app
> Cannot find a version of 'androidx.arch.core:core-common' that satisfies the …Run Code Online (Sandbox Code Playgroud) 我已经将React Native更新为0.60-RC2,使用Android Studio折射器迁移到AndroidX并使用了此处提到的喷射器:https : //github.com/react-native-community/discussions-and-proposals/issues/129
完成此操作后,我library "libjsc.so" not found在运行时收到错误消息react-native run-android。运行发行版APK时出现相同错误。
stacktrace是:
06-24 15:55:01.823 8579 8656 E SoLoader: Error when loading lib: dlopen failed: library "libjsc.so" not found lib hash: 83f1717c1dc187d9f252a9f1fc66d430 search path is /data/app/com.jtv.testapp-4hvCKbqEmbyyOPykuQhm4Q==/lib/arm
06-24 15:55:01.823 8579 8656 E SoLoader: couldn't find DSO to load: libjscexecutor.so caused by: dlopen failed: library "libjsc.so" not found
06-24 15:55:01.825 8579 8656 E AndroidRuntime: FATAL EXCEPTION: create_react_context
06-24 15:55:01.825 8579 8656 E AndroidRuntime: Process: com.jtv.testapp, PID: 8579
06-24 15:55:01.825 …Run Code Online (Sandbox Code Playgroud) 我最近迁移了我的项目以使用AndroidX,并使用以下文档在gradle上为我的espresso测试配置了测试编排器:
https://developer.android.com/training/testing/junit-runner#using-android-test-orchestrator
我有依赖:
androidTestUtil 'androidx.test:orchestrator:1.1.0-beta01'
Run Code Online (Sandbox Code Playgroud)
但是,我没有执行任何测试,看起来他们在运行gradle时失败运行以下adb shell命令,即:
adb shell 'CLASSPATH=$(pm path android.support.test.services) app_process / \
android.support.test.services.shellexecutor.ShellMain am instrument -w -e \
targetInstrumentation com.example.test/androidx.test.runner.AndroidJUnitRunner \
android.support.test.orchestrator/.AndroidTestOrchestrator'
Run Code Online (Sandbox Code Playgroud)
从上面看:似乎它试图用android支持版本而不是androidx版本执行此命令.
似乎没有记录什么用于androidx.
android android-testing android-espresso androidx androidx-test
我在一个组中创建了几个静态芯片。我正在使用此链接 ( https://material.io/design/components/chips.html# ) 作为参考。代码如下:
<RelativeLayout
android:id="@+id/inputLayout"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:gravity="bottom"
android:paddingStart="8dp"
android:paddingTop="8dp"
android:paddingEnd="8dp"
android:paddingBottom="9dp">
<ImageView
android:id="@+id/sendBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:paddingTop="4dp"
app:srcCompat="@drawable/chatbot_send_btn" />
<EditText
android:id="@+id/queryEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_toStartOf="@+id/sendBtn"
android:imeOptions="actionSend"
android:inputType="text"
android:paddingTop="4dp"
android:textSize="18sp" />
<com.google.android.material.chip.ChipGroup
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_above="@id/queryEditText">
<com.google.android.material.chip.Chip
style="@style/Widget.MaterialComponents.Chip.Choice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wsfdsd" />
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wsfdsd"
style="@style/Widget.MaterialComponents.Chip.Choice"/>
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wsfdsd"
style="@style/Widget.MaterialComponents.Chip.Choice"/>
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wsfdsd"
style="@style/Widget.MaterialComponents.Chip.Choice"/>
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wsfdsd"
style="@style/Widget.MaterialComponents.Chip.Choice"/>
<com.google.android.material.chip.Chip
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wsfdsd" />
</com.google.android.material.chip.ChipGroup>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这不会显示所有芯片,它只显示 1 个芯片。如何添加水平滚动?我是否需要动态显示筹码以便我可以添加水平滚动?
在 flutter 项目上运行包含 simple_permissions 的代码时出现错误。
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
C:\Users\ria\Downloads\flutter_windows_v1.2.1-stable\flutter\.pub-cache\hosted\pub.dartlang.org\simple_permissions-0.1.9\android\src\main\java\com\ethras\simplepermissions\SimplePermissionsPlugin.java:9: error: cannot find symbol
import android.support.v4.app.ActivityCompat;
^
symbol: class ActivityCompat
location: package android.support.v4.app
C:\Users\ria\Downloads\flutter_windows_v1.2.1-stable\flutter\.pub-cache\hosted\pub.dartlang.org\simple_permissions-0.1.9\android\src\main\java\com\ethras\simplepermissions\SimplePermissionsPlugin.java:10: error: package android.support.v4.content does not exist
import android.support.v4.content.ContextCompat;
^
C:\Users\ria\Downloads\flutter_windows_v1.2.1-stable\flutter\.pub-cache\hosted\pub.dartlang.org\simple_permissions-0.1.9\android\src\main\java\com\ethras\simplepermissions\SimplePermissionsPlugin.java:156: error: cannot find symbol
ActivityCompat.requestPermissions(activity, perm, 0);
^
symbol: variable ActivityCompat
location: class SimplePermissionsPlugin
C:\Users\ria\Downloads\flutter_windows_v1.2.1-stable\flutter\.pub-cache\hosted\pub.dartlang.org\simple_permissions-0.1.9\android\src\main\java\com\ethras\simplepermissions\SimplePermissionsPlugin.java:163: error: cannot find symbol
return PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(activity, permission);
^
symbol: variable ContextCompat
location: class SimplePermissionsPlugin
C:\Users\ria\Downloads\flutter_windows_v1.2.1-stable\flutter\.pub-cache\hosted\pub.dartlang.org\simple_permissions-0.1.9\android\src\main\java\com\ethras\simplepermissions\SimplePermissionsPlugin.java:171: error: cannot find symbol
if (ActivityCompat.shouldShowRequestPermissionRationale(registrar.activity(), permission)) {
^
symbol: …Run Code Online (Sandbox Code Playgroud) 迁移到AndroidX后,我在启动时遇到以下异常:
LoadedApk: Unable to instantiate appComponentFactory
java.lang.ClassNotFoundException: Didn't find class "androidx.core.app.CoreComponentFactory" on path: DexPathList[[],nativeLibraryDirectories=[/data/app/com.apps.entertainmentsolutions.offhole-yUKw5A4ysDVrPyO-DpnhKg==/lib/arm64, /system/lib64, /system/vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.app.LoadedApk.createAppFactory(LoadedApk.java:217)
at android.app.LoadedApk.updateApplicationInfo(LoadedApk.java:329)
at android.app.ActivityThread.handleDispatchPackageBroadcast(ActivityThread.java:5410)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1743)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at com.android.server.SystemServer.run(SystemServer.java:460)
at com.android.server.SystemServer.main(SystemServer.java:300)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:838)
Run Code Online (Sandbox Code Playgroud)
我正在Windows 10中使用Android Studio 3.4.1。
我尝试了所有可以找到的解决方案,但问题仍然存在:
关于appComponentFactory的AndroidX构建在发布模式下失败
我添加了-keep类androidx.core.app.CoreComponentFactory {*; }到proguard-rules.pro,我在gradle.properties中添加了android.useAndroidX = true和android.enableJetifier = true ...清理,重建,使chach无效并重新启动...
也禁用即时运行...
另一个奇怪的事实是,我可以从其他类中导入没有问题的类(导入androidx.core.app.CoreComponentFactory;)。
我的gradle文件。项目gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { …Run Code Online (Sandbox Code Playgroud) 当我将 WorkManager 从“2.2.0”升级到“2.3.0-rc01”时,出现以下新错误
当我导出 APK 时发生错误。
C:\app: Error: Remove androidx.work.impl.WorkManagerInitializer from your AndroidManifest.xml when using on-demand initialization. [RemoveWorkManagerInitializer]
Explanation for issues of type "RemoveWorkManagerInitializer":
If an android.app.Application implements
androidx.work.Configuration.Provider,
the default androidx.work.impl.WorkManagerInitializer needs to be removed
from the
AndroidManifest.xml file.
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我在 2.2.0 中没有收到这样的错误,因为从 2.1.0 开始引入了“按需初始化”。
我不确定将以下内容包含在我的AndroidManifest.xml.
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
目前,以下是我的Application班级。
public class MyApplication extends MultiDexApplication implements Configuration.Provider {
private static MyApplication me;
@Override
public void onCreate() {
super.onCreate();
me = …Run Code Online (Sandbox Code Playgroud) ActivityResultLauncher<Intent> launcherImportFileSelection = requireActivity().registerForActivityResult(...
Run Code Online (Sandbox Code Playgroud)
如果上面的代码放在onCreate(Bundle savingInstanceState)中,会抛出以下异常:
Exception: LifecycleOwner MyActivity@868498a is attempting to register while current state is RESUMED. LifecycleOwners must call register before they are STARTED.
Run Code Online (Sandbox Code Playgroud)
如果将其放置在构造函数中或作为声明,则 requireActivity() 会抛出以下异常:
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
2021-04-17 15:15:41.948 27930-27930/net.biyee.onvifer E/AndroidRuntime: at androidx.fragment.app.Fragment.instantiate(Fragment.java:613)
... 42 more
Caused by: java.lang.IllegalStateException: Fragment MyFragment{fba6d22} (e0d1f006-996d-4051-9839-4575a92e33dd) not attached to an activity.
at androidx.fragment.app.Fragment.requireActivity(Fragment.java:928)
Run Code Online (Sandbox Code Playgroud)
我在 build.gradle 中有以下内容:
implementation 'androidx.fragment:fragment:1.3.2'
Run Code Online (Sandbox Code Playgroud)
有人可以提供这方面的建议吗?
更新:
问题已经解决了。请参阅我与@CommmonsWare 的交流。