【发布时间】:2016-09-27 14:51:57
【问题描述】:
我在我的应用中使用 ABI 拆分
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
universalApk true
}
}
如果我使用 x86_64 模拟器然后切换到设备 (armeabi-v7a)(以及其他),android studio 将 app-x86_64-debug.apk 发送到设备
09/27 17:17:49: Launching app
$ adb push SampleFolder\app\build\outputs\apk\app-x86_64-debug.apk /data/local/tmp/sample.package
$ adb shell pm install -r "/data/local/tmp/sample.package"
pkg: /data/local/tmp/sample.package
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
编辑:我遇到这个问题的方式
- 我关闭了 x86_64 模拟器
- 连接真实测试设备
- 后续运行 - 编辑配置 - 目标(打开选择部署目标对话框)
- 选择了连接的测试设备
Android Studio 2.2.1
发布 2.2.1 后,我玩了一些拆分发行版,然后一切看起来都不错。不幸的是,同样的问题再次发生在我身上。为了清楚起见,我创建了新的 android 项目并导入了领域数据库(具有本机库),然后,
将拆分部分添加到 gradle
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips'
}
}
创建的应用程序类
public class SampleApp extends Application {
@Override
public void onCreate() {
initRealm();
}
private void initRealm(){
Realm.init(getApplicationContext());
RealmConfiguration.Builder builder = new RealmConfiguration.Builder();
builder.deleteRealmIfMigrationNeeded();
RealmConfiguration configuration = builder.build();
Realm.setDefaultConfiguration(configuration);
}
}
选择了我的设备
应用工作正常,因此工作室向设备发送了适当的 apk(app-armeabi-v7a-debug.apk)
$ adb push /home/blackkara/projects/Sample/app/build/outputs/apk/app-armeabi-v7a-debug.apk /data/local/tmp/com.blackkara.sample
毕竟我改了代码
public class SampleApp extends Application {
@Override
public void onCreate() {
initRealm();
// The added code
Realm realm = Realm.getDefaultInstance();
}
private void initRealm(){
Realm.init(getApplicationContext());
RealmConfiguration.Builder builder = new RealmConfiguration.Builder();
builder.deleteRealmIfMigrationNeeded();
RealmConfiguration configuration = builder.build();
Realm.setDefaultConfiguration(configuration);
}
}
然后再次运行应用,但这次工作室向设备发送了错误的 apk(app-armeabi-debug.apk)
$ adb push /home/blackkara/projects/Sample/app/build/outputs/apk/app-armeabi-debug.apk /data/local/tmp/com.blackkara.sample
【问题讨论】:
-
为了清楚起见,底部代码格式的 sn-p 显示的是 Android Studio 的输出?
-
是的,我只是将包名更改为 sample.package
-
您如何切换到设备?从 IDE 运行应用程序时,您只是选择设备吗?
-
编辑了答案。
-
这里是你可以做到的stackoverflow.com/a/39470840/2444099。除非您是 NDK 代码的作者,否则就足够了。