Articles of android studio

Android测试:与Mockito一起淘汰Retrofit

在我的MainActivity我有一个名为getAPI的方法,它返回一个OTBServiceWrapper 。 这用于设置用于调用API的改进。 在我的MainActivityTest文件中,我试图找出getApi方法正在进行的new OTBService().getService()调用,这样我就可以返回一个MockedOTBService ,它将客户端更改为返回json的自定义客户端。 MockedOTBService如果我不得不在MockedOTBService放置一个记录器而且它也会MockedOTBService并调用真正的api,那么当前的实现将是MockedOTBService ,这在测试中不是我想要的。 我试图使用Mockito存根Retrofit API调用并返回json 。 我似乎无法理解为什么存根被调用尚未存在问题的方法。 笔记: 我正在使用ActivityInstrumentationTestCase2 我只运行一次测试 如果我添加一个verify(mockedOTBService, atLeastOnce()).getService(); 据说它从未被称为。 如果我改变了when…thenReturn使用mMainActivity = spy(getActivity())则没有变化,并且调用了真正的API。 Logcat输出 Logger﹕ MockedOTBService was called // Mock is called Logger﹕ Real OTBService was called // Real API is called Logger﹕ MainActivity getAPI method class is “$Proxy1” // Mock is shown in MainActivity Logger﹕ RealAPIResponse […]

Android multidex,UnsatisfiedLinkError – 找不到.so文件

我正在尝试在android studio中为我的multidex项目添加一些lib(.jar和.so)。 当我只为项目添加几个jar子时一切正常。 如果我添加越来越多的jar子(其他库)我收到此错误: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/data/app/com.test.digital.ocrtest-2/base.apk”],nativeLibraryDirectories=[/data/app/com.test.digital.ocrtest-2/lib/arm, /data/app/com.test.digital.ocrtest-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]] couldn’t find “libScanovatePassportAndIDLSDK_CPP.so” 任何想法如何告诉编译器生成jar等同样的dex?

更新到0.6.0版后的Android Studio Gradle问题

自从我将Android Studio更新到版本0.6.0后,我面临Gradle Sync的以下问题: 关于Google+和Google adt-dev小组的讨论表明,新的Manifest Merger会自动启用此问题。 讨论和解决方案在两个平台上都不太清楚,尽管我确实尝试添加android { useOldManifestMerger true; } 如build.gradle中所示,但我仍然收到此错误。 PS:我们正在使用RoboGuice并怀疑它可能是兼容性问题。 这是日志: 2014-06-09 11:07:35,927 [ 171888] WARN – nal.AbstractExternalSystemTask – Cause: com.android.builder.BuilderConstants com.intellij.openapi.externalSystem.model.ExternalSystemException: Cause: com.android.builder.BuilderConstants at org.jetbrains.plugins.gradle.service.project.AbstractProjectImportErrorHandler.createUserFriendlyError(AbstractProjectImportErrorHandler.java:106) at org.jetbrains.plugins.gradle.service.project.BaseProjectImportErrorHandler.getUserFriendlyError(BaseProjectImportErrorHandler.java:153) at org.jetbrains.plugins.gradle.service.project.BaseGradleProjectResolverExtension.getUserFriendlyError(BaseGradleProjectResolverExtension.java:352) at com.android.tools.idea.gradle.project.AndroidGradleProjectResolver.getUserFriendlyError(AndroidGradleProjectResolver.java:334) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:364) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:330) at org.jetbrains.plugins.gradle.service.project.GradleExecutionHelper.execute(GradleExecutionHelper.java:203) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:116) at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:64) at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:41) at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl$1.produce(RemoteExternalSystemProjectResolverImpl.java:37) at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:59) at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:37) at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:49) […]

尝试使用Glide包构建Android项目,抛出“Unable to merge dex”错误

我正在运行Android Studio 3.0。 我目前正在努力使Glide版本4.3.0工作,但与版本4.2.0有相同的问题。 我的项目运行良好,没有在我的build.gradle文件中添加Glide包依赖项,从这里下载https://github.com/bumptech/glide 。 我也按照这里的设置说明进行操作。 首先,我将jar文件添加到我的libs文件夹,然后添加了依赖项。 完整的错误是 Error:Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’. > com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 我已经研究了很多这个问题,但只find了其他软件包的解决方案,这些软件包为这些软件包提供了特定的修复程序,但是我无法find这个特定软件包的解决方案。 这是完整的gradle堆栈跟踪。 * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:app:transformClassesWithMultidexlistForDebug’. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63) at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248) […]

每次重新启动计算机时都会丢失/ dev / HAX

几周前,当我试图从Android Studio打开AVD时,一切都很好,并且它说没有安装HAX,如下所示: 我去了Android sdk的extras文件夹,并重新安装了HAX,它说已经安装了,重新安装后它会工作,如下所示: 但!! 但!! 每次我关闭我的笔记本电脑,并重新启动它,它会告诉我/ dev / HAX再次失踪! 每次。 我怎么解决这个问题? 规格:Macbook Pro 2015年初,El Cap,Android Studio 1.4 谢谢!

TextView和TextViewCompat有什么区别

我需要知道TextView和TextViewCompat之间的实际区别。 什么时候应该使用TextViewCompat ?

Androidcheckbox选中一个活动,然后按钮出现在另一个活动中

这个问题说明了一切。 想象一下,有2个活动,’活动A’和’活动B’。’活动A’保持一个checkbox,当检查按钮应显示在’活动B’时,如果未选中该按钮应该隐藏在’活动B’上 以下是主要活动 public class MainActivity extends ActionBarActivity { private BubblesManager bubblesManager; private boolean isCheckedValue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initializeBubblesManager(); final Button add = (Button) findViewById(R.id.add); add.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { addNewBubble(); add.setEnabled(false); } }); CheckBox checkBox = (CheckBox)findViewById(R.id.add_fb); checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean […]

Androind 2.2预览1 – 使用ConstraintsLayout和GuideLine应用程序崩溃

我正在尝试使用ContraintsLayout创建布局。 在我的布局中,我添加了水平GuideLine 。 但是,当我运行该应用程序时,它会崩溃,如果我删除了GuideLine它就可以运行。 我还检查了APK,并且有一个类java.awt.Rectagle StackStrace java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Rectangle; at android.support.constraint.solver.widgets.Guideline.(Guideline.java:43) at android.support.constraint.ConstraintLayout.setChildrenConstraints(ConstraintLayout.java:128) at android.support.constraint.ConstraintLayout.updateHierarchy(ConstraintLayout.java:106) at android.support.constraint.ConstraintLayout.onFinishInflate(ConstraintLayout.java:87) at android.view.LayoutInflater.rInflate(LayoutInflater.java:867) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) at android.view.LayoutInflater.inflate(LayoutInflater.java:518) at android.view.LayoutInflater.inflate(LayoutInflater.java:426) at android.view.LayoutInflater.inflate(LayoutInflater.java:377) at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.infostretch.app.MainActivity.onCreate(MainActivity.java:11) at android.app.Activity.performCreate(Activity.java:6669) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2578) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2686) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1440) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:5969) at java.lang.reflect.Method.invoke(Native […]

Android自动复制Proguard映射Android Studio

有没有办法在每次实时构建完成时将Proguard映射文件自动复制到Android Studio中的(选定)目标APK目录?

如何强制停止Android应用

如何使用Java代码强制停止应用程序? 我正在尝试构建一个内存清理器,它可以帮助清理后台进程。 强制停止的意思是确保当你转到应用程序详细信息时, FORCE STOP按钮显示为灰色。 我知道有一种方法可以杀死应用程序的进程,但是当你进入运行列表时,即使你杀了它,应用程序仍然存在。 我尝试了很多类似的内存清理应用程序,其中只有一个可以完全FORCE STOP应用程序,但它有很多无用的通知 – 非常烦人。 PS:当您转到Settings -> Apps ,您可以看到应用程序列表,单击其中一个,您可以访问它的应用程序信息。 有一个名为FORCE STOP的按钮。 通过点击它,应用程序完全被杀死。 我想在我的应用程序中执行这种操作,是否有任何代码片段可以执行此操作?