1.Unable to determine application id: com.android.tools.idea.run.ApkProvisionException: No outputs for the main artifact of variant: debug

遇到这个问题很多时候都是gradle和AS的版本不匹配所导致的

解决方法:

方法1:从哪来到哪去,重新下载之前的AS版本替换把。附上链接:AS下载1AS下载2

方法2:不想替换的就升级gradle版本把,下载方式很多,自行百度。

方法3:如下图所示增加gradle task时第一行选择项目,第二行输入installDebug,保存即可。

android 对异常不处理 android相关问题_android 对异常不处理

2.Expecting 'android:screenOrientation="unspecified"' or '"fullSensor"' for this activity so the user can use the application in any orientation and provide a great experience on Chrome OS devices.

这个问题主要是告诉大家不要限制方向。

解决方法:

打开setting -->搜索Inspections-->在Chrome OS下把两个Activity is locked to an orientation勾去掉即可。

3.Activity class {} does not exist  Error while Launching activity

运行的时候出现这个神奇的问题,新建项目是好的,有些项目也是好的,我的项目在没升级之前都是好好的,所以比较纳闷,网上也找了很多方法

方法:检查module中的applicationId和AndroidManifest中的包名是否一致,adb uninstall 包名,clean+Rebuild套餐,删除项目和module的build文件,重启AS,当然这些对于我来说都没有用。

最后我升级了gradle版本,App就能正常运行了,如果还不行,就试试上面的第一个问题的方法3。

4.Program type already present:

这个问题主要是添加了重复依赖

解决方法:

仔细查看自己的报错,是否存在依赖重复了,我是因为引用的一个lib下的aar单独写了引用,后来我直接在build.gradle的repositories添加

flatDir {
    dirs 'libs'
}
dependencies下直接用
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])

解决了。

有时候按照上面这些操作后还会出现依赖重复问题,我的解决方案是删除lib文件夹下没引用到包,然后再把主module的build.gradle下屏蔽的引用代码删除,在删掉build文件重新sync一下,即可成功解决问题。

5.

android 对异常不处理 android相关问题_so库_02

遇到类似的问题是因为Android 6.0不再支持 Apache HTTP client, 建议使用 HttpURLConnection 代替。如果还是要继续使用 Apache HTTP client解决方法如下

解决方法:

在AndroidManifest的application节点下,添加


<uses-library android:name="org.apache.http.legacy" android:required="false"/>即可


6.快速查看本应用对应的MD5和SHA1值

解决方法:

1.gradle

android 对异常不处理 android相关问题_解决方法_03

2.代码查看


public static String sHA1(Context context) { try { PackageInfo info = context.getPackageManager().getPackageInfo( context.getPackageName(), PackageManager.GET_SIGNATURES); byte[] cert = info.signatures[0].toByteArray(); MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] publicKey = md.digest(cert); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < publicKey.length; i++) { String appendString = Integer.toHexString(0xFF & publicKey[i]) .toUpperCase(Locale.US); if (appendString.length() == 1) hexString.append("0"); hexString.append(appendString); hexString.append(":"); } String result = hexString.toString(); Log.v("TAG", result.substring(0, result.length() - 1)); return result.substring(0, result.length() - 1); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; }


7.Android 10 无法读取本地文件 FileNotFoundException: Permission denied 解决办法

解决方法:

AndroidManifest的application根目录添加


android:requestLegacyExternalStorage="true"


顺便检查是否手动赋权了,是否适配了FileProvider。

8.AS 打release包失败,debug包正常,报错如下:

A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade

java.util.zip.ZipException:invalid code lengths set

解决方法:

按照网上的方法试了都不行,最后还是修改了gradle的插件版本,降低升高实测都有效,有效后再改回原来的版本也会有效,感觉是软件本身的问题。

9.Android java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

分析:

一般是由于.so文件没找到导致的

问题分析和解决

1.查看so库是不是已经在编译的过程中打包到apk里。

方法:
找到项目的这个目录app\build\outputs\apk,然后用压缩软件打开app-debug.apk这个文件,去libs里找有没有报错的libxxxxxx.so文件。
解决:
如果有就把有的包里的so库复制一份放在没有的包里即可解决,没有就检查自己是不是把libxxxxxx.so文件没有放在正确的位置,然后重新打包。

2.查看项目是不是加载了so库

方法&解决:

如果so库文件是放在libs文件夹下的,必须找到项目app的build.gradle文件,添加如下写法:

android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

也可以在src/main下新建jniLibs放入对应架构的so库文件。

3.查看NDK是不是排除了你的设备架构

方法:

android {
    defaultConfig {
        ........//此处省略其他设置
        ndk {
            abiFilters  "armeabi"
        }
    }
}
如上图,这个设置就是只加载armabi架构(目录下)的so库,如果是别的架构,就会找不到。
解决:
我们可以添加自己需要的架构,这样做的好处是apk体积可以变小代码如下:

android {
    defaultConfig {
        ........//此处省略其他设置
        ndk {
            abiFilters  "armeabi","x86"
        }
    }
}
这样我们就又引入了x86架构,一定要注意每一个目录下放的so库一定要是相应架构下的目录。

4.查看是否是armeabi和armeabi-v7a都有so库

方法&解决:
我们可以引入armeabi-v7a这个架构,然后把armeabi里的文件复制一份进anmeabi-v7a目录下,然后重新编译。armeabi和armeabi-v7a文件不一致也有可能导致程序异常。

10.Installed Build Tools revision XXXX is corrupted. Remove and install again using the SDK Manager:

该问题主要描述AS原先下载的SDK对应的API版本损坏,按照指示卸载对应版本的版本和tools仍不起作用

解决方法:

网查可知对应的31缺少dx.bat和dx.jar

将androidSdk\build-tools\30.0.0\dx.bat 拷贝一份到 androidSdk\build-tools\31.0.0\dx.bat 将androidSdk\build-tools\30.0.0\lib\dx.jar 拷贝一份到 androidSdk\build-tools\31.0.0\lib\dx.jar

引用:解决方法