The APK file app-debug.apk does not exist on disk.

问题详情

Android studio run app的时候报错The APK file app-debug.apk does not exist on disk.

解决方案1:Edit Configurations

android开发遇到的技术难点 android开发过程遇到的问题_解决方案

如图,点击Edit Configurations,查看你app配置中的是否有如下选项:

android开发遇到的技术难点 android开发过程遇到的问题_ide_02


如果没有则点击 号:

android开发遇到的技术难点 android开发过程遇到的问题_Android_03


然后这里置为空直接ok:

android开发遇到的技术难点 android开发过程遇到的问题_ide_04


然后点击ok重新run,如果不出意外该错误已经解决。

解决方案2:Gradle build

如果第一种方法还未解决你的问题,可以尝试:

android开发遇到的技术难点 android开发过程遇到的问题_解决方案_05


android开发遇到的技术难点 android开发过程遇到的问题_Android_06


android开发遇到的技术难点 android开发过程遇到的问题_android_07

Gradle sync failed java.lang.AssertionError Invalid libraryOrderEntry

问题详情

Android报错Gradle sync failed java.lang.AssertionError Invalid libraryOrderEntry

解决方案

File > Invalidate Caches/Restart

Can’t create handler inside thread that has not called Looper.prepare()

问题详情

在Android子线程中使用Toast时会报错:

  • 代码:
Toast.makeText(this, "", Toast.LENGTH_LONG) .show();
  • 报错:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

解决方案一

增加Looper.prepare();

Looper.prepare();
Toast.makeText(this, "", Toast.LENGTH_LONG) .show();
Looper.loop();// 进入loop中的循环,查看消息队列

解决方案二

post 给主线程去处理

mainHandler.post(new Runnable() {

 @Override
 public void run() {
    if (toast == null) {
       toast = Toast.makeText(context, "",     Toast.LENGTH_SHORT);
}
toast.setText(msg);
toast.setDuration(Toast.LENGTH_SHORT);
toast.show();
 }
});

org.gradle.api.resources.ResourceException Could not get resource

问题详情

Android Studio报错:

Caused by: org.gradle.api.resources.ResourceException: Could not get resource ‘https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.0/gradle-3.1.0.pom 7

解决方案

android开发遇到的技术难点 android开发过程遇到的问题_android_08

Session ‘app’ Error Installing

问题详情

Android studio Session ‘app’ Error Installing APK

解决方案一

Build -> Clean Project再编译

解决方案二

进行手机重新连接

解决方案三

改变Android studio的设置,去掉第一个复选框的勾,如下图:

android开发遇到的技术难点 android开发过程遇到的问题_android_09

Android Studio gradle无法下载解决方案

解决方案

打开~/.gradle/wrapper/dists,可以看到类似下图:

android开发遇到的技术难点 android开发过程遇到的问题_Android_10


然后打开:

http://services.gradle.org/distributions/

android开发遇到的技术难点 android开发过程遇到的问题_Android_11

找到你的目录下的gradle版本并点击下载

将下载到的压缩包放到类似~/.gradle/wrapper/dists/gradle-4.4-all/9br9xq1tocpiv8o6njlyu5op1目录下,不需要解压,直接把压缩包放进去就可以,然后重启as就可跳过gradle的在线下载

NDK报错:clang : error: linker command failed with exit code 1 (use -v to see invocation)

解决方案

这种错误最常见的出现形式是sync的时候没错,但是build的时候就报这个错误,解决方案:
在app的defaultConfig中的ndk节点中添加:

stl "gnustl_static"

即可

NDK报错:Tried extensions .c .C .c .cc .cpp .cxx .m .M .mm .h .hh .h .hm .hpp.hxx .in .txx

这种错误大多数情况下是因为编译器找不到对应的c文件,解决方案是在cmakelist中用全路径代替简略路径,比如:

file(GLOB SignalNative_SRC ${CMAKE_SOURCE_DIR}/src/main/cpp/Signal/*.cpp)

而不是

file(GLOB SignalNative_SRC ${src/main/cpp/Signal/*.cpp)

FragmentTransaction commit already called

问题详情

这种情况一般是因为你在全局范围实例化了一个FragmentTransaction,然后多次使用同一个实例进行fragment跳转

解决方案

将:

private FragmentManager fragmentManager;
    private FragmentTransaction fragmentTransaction;
     @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();

        .....
    }
     @Override
    public void startfragment(Fragment targetFragment, boolean addToBackStack) {

        fragmentTransaction.replace(R.id.id_fragment_layout, targetFragment, targetFragment.getClass().getName());
        if (addToBackStack) {
            fragmentTransaction.addToBackStack(null);
        } else {
            mainPresenter.initActivityData();
        }
        fragmentTransaction.commitAllowingStateLoss();
    }

改为:

private FragmentManager fragmentManager;
  private FragmentTransaction fragmentTransaction;
    @Override
    public void startfragment(Fragment targetFragment, boolean addToBackStack) {
         fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.id_fragment_layout, targetFragment, targetFragment.getClass().getName());
        if (addToBackStack) {
            fragmentTransaction.addToBackStack(null);
        } else {
            mainPresenter.initActivityData();
        }
        fragmentTransaction.commitAllowingStateLoss();
    }

Error:Execution failed for task ‘app:preDebugAndroidTestBuild’

问题详情

报错如下:

android开发遇到的技术难点 android开发过程遇到的问题_解决方案_12

解决方案

Rebuild

ERROR: Could not find com.android.tools.build:gradle:x.x.x

原因

这个错误有时候是因为你网络不能翻墙,但是大多数时候是因为你搞错了gradle插件版本和gradle版本的区别,gradle插件版本截止2019.4.21日的最新版本为3.4.1,而gradle版本的当前最新版本为5.1.1,build.gradle中的classpath 'com.android.tools.build:gradle:x.x'是gradle插件版本,而gradle-wrapper.properties中的才是gradle版本,所以很多人在build.gradle中设置了最新版本的gradle版本号,提示找不到资源,以为是自己网络的问题,事实是真的找不到…