Tad*_*ust 13 android dex android-library android-gradle-plugin
我已达到魔法dex限制,因为我的应用程序使用了大量的jar(驱动器api,greendao,文本到pdf,支持..).
我目前的解决方案是,我真的创建了第二个apk,仅用于谷歌驱动器,我从主apk调用.但现在我发现android最终支持这个库.我的问题只是我不知道如何实现它(最好没有gradle).我找不到任何好的教程.
Okey我正在试图实现这个...我发现了这个:http: //blog.osom.info/2014/10/multi-dex-to-rescue-from-infamous-65536.html
我补充说:
android:name="android.support.multidex.MultiDexApplication"
Run Code Online (Sandbox Code Playgroud)
到我的清单文件和
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
Run Code Online (Sandbox Code Playgroud)
到我的mainactivity.java
还为eclipse安装了gradle插件,导出gradle以获取build.gradle文件,我改为:
apply plugin: 'android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':android-support-v7-appcompat')
compile project(':Sync')
compile project(':gdrive:google-play-services_lib')
}
android {
compileSdkVersion 14
buildToolsVersion "21.1.1"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src-gen','src']
resources.srcDirs = ['src-gen','src']
aidl.srcDirs = ['src-gen','src']
renderscript.srcDirs = ['src-gen','src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
dexOptions {
preDexLibraries = false
}
}
afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = ['--multi-dex']
} else {
dx.additionalParameters += '--multi-dex'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但错误仍然是相同的:(
dar*_*iny 19
博客是旧的解决方案.
使用Android Studio 0.9.2和Gradle Plugin 0.14.1,您只需:
添加到AndroidManifest.xml:
.
android:name="android.support.multidex.MultiDexApplication"
Run Code Online (Sandbox Code Playgroud)
要么
加
MultiDex.install(this);
Run Code Online (Sandbox Code Playgroud)
在您的自定义应用程序的attachBaseContext方法中
或您的自定义应用程序扩展 MultiDexApplication
multiDexEnabled = true你的build.gradle.
android {
defaultConfig {
...
multiDexEnabled = true
}
}
Run Code Online (Sandbox Code Playgroud)
完成.
抱歉我的英语不好
相关资源:
http://developer.android.com/tools/building/multidex.html
https://plus.google.com/+XavierDucrohet/posts/1FnzwdcBnyC
Nic*_*ler 16
你需要做的一些事情,
1-在您的gradle中,您需要指定multidex并添加支持库:
android {
defaultConfig {
...
multiDexEnabled true
...
}
}
dependencies {
...
compile 'com.android.support:multidex:1.0.0'
...
}
Run Code Online (Sandbox Code Playgroud)
2-在清单中,您必须将应用程序设置为multidex应用程序:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package.name">
<application
...
android:name="com.package.name.my_application">
...
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
3.1-在您的应用程序类中,您必须扩展MultiDexApplication:
public class my_application extends MultiDexApplication
{
...
}
Run Code Online (Sandbox Code Playgroud)
3.2-或覆盖attachBaseContext()方法:
public class my_application extends Application
{
protected void attachBaseContext(Context base)
{
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Run Code Online (Sandbox Code Playgroud)
multidex支持库的局限性
multidex支持库有一些已知的限制,您应该注意并测试它们何时将其合并到您的应用程序构建配置中:
- 在启动期间将.dex文件安装到设备的数据分区上很复杂,如果辅助dex文件很大,可能会导致应用程序无响应(ANR)错误.在这种情况下,您应该使用ProGuard的代码缩小技术来最小化dex文件的大小并删除未使用的代码部分.
- 由于Dalvik linearAlloc错误(问题22586),使用multidex的应用程序可能无法在运行早于Android 4.0(API级别14)的平台版本的设备上启动.如果您的目标API级别低于14,请确保使用这些版本的平台执行测试,因为您的应用程序在启动时或加载特定类组时会出现问题.代码缩减可以减少或可能消除这些潜在问题.
- 由于Dalvik linearAlloc限制(问题78035),使用进行大量内存分配请求的multidex配置的应用程序可能会在运行时崩溃.Android 4.0(API级别14)的分配限制有所增加,但在Android 5.0(API级别21)之前的Android版本上,应用可能仍会遇到此限制.
- 在Dalvik运行时执行时,主要dex文件中需要哪些类有复杂的要求.Android构建工具更新处理Android需求,但其他包含的库可能还有其他依赖性要求,包括使用内省或从本机代码调用Java方法.在更新multidex构建工具之前,可能无法使用某些库,以允许您指定必须包含在主dex文件中的类.
资源:http://developer.android.com/tools/building/multidex.html
| 归档时间: |
|
| 查看次数: |
39127 次 |
| 最近记录: |