Son zamanlarda Android geliştirmeye başladım, bu yüzden hala alıştım. Bir Android uygulamasında kullanmak istediğim bir API buldum. Dış jarumu libs
klasörüne ekledim ve kitaplık olarak ekledim ve build.gradle
dosyasında derledim. Ben Uygulamayı çalıştırmak için gittiğimde gradle inşa sırasında bir hata alıyorum:Android Uygulaması için 65K'den fazla yöntemle harici bir JAR ekleme
Error:Execution failed for task ':app:preDexDebug'.
> com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Program
Files\Java\jdk1.7.0_51\bin\java.exe'' finished with non-zero exit value 1
online etrafında arandı ve benim dış kavanoz çok büyüktü ve 65K yöntemleri sınırdan daha fazla içerdiği bu keşfetti. İnternette bulduğum birçok farklı çözüm yapmayı denedim. Multidexing'i denedim ve resmi Android web sitesindeki tüm talimatları takip ettim. İşte benim build.gradle
geçerli: Ayrıca
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
...
multiDexEnabled true
}
buildTypes {
...
}
}
dependencies {
testCompile 'junit:junit:4.12'
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile files('libs/my-external-jar.jar')
}
Ve AndroidManifest.xml
değiştirildi: Ben Uygulama sınıfını kullanarak, ancak MainActivity değildi çünkü
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.app" >
...
<application
...
android:name="android.support.multidex.MultiDexApplication">
<activity
...
</activity>
</application>
</manifest>
Ben MultiDexApplication uzatmak için başvurum java dosyaları değişmedi. Her neyse, işe yaramadı ve aynı hatayı aldım. Daha sonra, kullanılmayan tüm sınıfların ve yöntemlerin sorun oluşturmayacak şekilde (0,) jar'umu daraltması gerektiğini öğrendim (en azından bunu anladım, yanılıyorsam beni düzelt). Bu yüzden, Android web sitesinde de belirtildiği gibi ProGuard
'u da yapılandırdım. ben kullanmayı planladığınız tüm sınıfları tutar böylece
apply plugin: 'com.android.application'
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
...
}
Ben de proguard-rules.pro
dosyayı düzenleyen: İşte benim build.gradle
olduğunu
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\Users\neelz_000\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
-keep public class com.myexternalapi.Class1
-keep public class com.myexternalapi.Class2
-keep public class com.myexternalapi.Class3
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
Bu
da işe yaramadı ve ben aynı hata mesajı var .Proguard
veya MultiDex
'u kurarken bir şeyleri yanlış yapmış olmalıyım gibi hissediyorum. Eğer yanlış bir şey yapsam ya da bir şeyi unutursam, birisi bunu düzeltmek için ne yapmam gerektiğini açıklayabilir mi? Değilse, 65 K'den fazla yönteme sahip olsa da API'yi kullanabileceğim başka yollar var mı? Teşekkürler: D
için şu siteyi kontrol edin? Burada sağlanan –
ayrıntılar bu bağımlılıkları denemek – USKMobility
multidex http://developer.android.com/tools/building/multidex.html yapılandırmak için { derleme 'com.android.support:multidex:1.0.1' } –