我已经在多个设备上测试了我的应用
Jelly bean,Kitkat,Lollipop,Marshmallow
直接从我的应用程序调试,也可以从一部手机分享到另一部手机。
它在所有手机中都可以完全正常工作(不包括一个)
我有一个 kitkat(4.4.4) Moto G手机应用程序在其他设备上工作正常但是当我分享此应用并运行时,应用崩溃< / strong>在它打开之前。
不知道该怎么办,因为我无法知道错误是什么,因为使用 usb调试运行正常。
我的Gradle Build
android {
compileSdkVersion 24
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.abc.xyz"
minSdkVersion 16
targetSdkVersion 24
}
buildTypes {
debug {
minifyEnabled true
}
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
答案 0 :(得分:1)
我也遇到过这个问题,我能找到的唯一可行解决方案是从android studio中的设置中禁用instant run
。然后执行干净的构建并生成新的app-debug.apk
。与多个设备分享此apk
答案 1 :(得分:0)
这不是直接的解决方案,但是它可以帮助您找到应用崩溃的解决方案。
添加CustomExceptionHandler类,该类将为应用程序中的任何崩溃写入日志
public class CustomExceptionHandler implements UncaughtExceptionHandler {
private UncaughtExceptionHandler defaultUEH;
private String localPath;
private String url;
/*
* if any of the parameters is null, the respective functionality
* will not be used
*/
public CustomExceptionHandler(String localPath) {
this.localPath = localPath;
this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
}
public void uncaughtException(Thread t, Throwable e) {
String timestamp = TimestampFormatter.getInstance().getTimestamp();
final Writer result = new StringWriter();
final PrintWriter printWriter = new PrintWriter(result);
e.printStackTrace(printWriter);
String stacktrace = result.toString();
printWriter.close();
String filename = timestamp + ".stacktrace";
if (localPath != null) {
writeToFile(stacktrace, filename);
}
defaultUEH.uncaughtException(t, e);
}
private void writeToFile(String stacktrace, String filename) {
try {
BufferedWriter bos = new BufferedWriter(new FileWriter(
localPath + "/" + filename));
bos.write(stacktrace);
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
并在mainActivity中添加此代码
if(!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) {
Thread.setDefaultUncaughtExceptionHandler(new CustomExceptionHandler(
"/sdcard/<desired_local_path>"));
}
希望这会对你有帮助......!