2013-11-04 26 views
8
şöyle

Benim dizin yapısı şöyledir:Android projesi

Project 
--libraries 
----volley 
--myapplication 
----libs 
------android-support-v4.jar 
------etc.jar 

Volley bir ithal kütüphane projesi. Her şey uygulama ile iyi çalışır, ancak kurulduğunda, aynı uygulama ve simgeyle android uygulama listesinde 2 farklı uygulama görünür. beklendiği gibi Bunlardan biri çalışır ve diğer hata ile ifa edilmesi üzerine bazı boş aktivite ve çökmeleri gibi görünüyor: boşuna,

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.myapplication/com.libs.volley.ACTIVITY_ENTRY_NAME}: java.lang.ClassNotFoundException: Didn't find class "com.libs.volley.ACTIVITY_ENTRY_NAME" on path: /data/app/com.example.myapplication-1.apk 

denedim temizleme ve yeniden inşa ve cihazın kendisinden kaldırma. Tek yapmak istediğim bu ekstra uygulamadan kurtulmak.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.myapplication" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="11" 
    android:targetSdkVersion="18" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/app_icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.myapplication.MainActivity" 
     android:label="@string/app_name" > 


     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
    android:name=".AppConfigActivity" 
     android:windowSoftInputMode="stateHidden" 
     android:label="Application configuration"/> 
    <activity 
     android:name=".BoothSelectActivity" 
     android:label="Booth Select"/> 
    <activity 
     android:name=".InactiveActivity" 
     android:label="Inactive Activity"/> 
    <activity 
     android:name=".QRReaderActivity" 
     android:windowSoftInputMode="stateHidden" 
     android:label="QR Reader Activity"/> 
    <activity 
     android:name=".ProductsActivity" 
     android:windowSoftInputMode="stateHidden" 
     android:label="Products Activity"/> 

</application> 

Herhangi bir yardım çok takdir edilecektir.

Benim build.gradle dosyası

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.6.+' 
    } 
} 
apply plugin: 'android' 

repositories { 
    mavenCentral() 
} 

android { 
    compileSdkVersion 18 
    buildToolsVersion "18.1.1" 

    defaultConfig { 
     minSdkVersion 7 
     targetSdkVersion 18 
    } 
} 

dependencies { 
    compile 'com.android.support:appcompat-v7:+' 
    compile files('libs/commons-codec-1.4.jar') 
    compile files('libs/android-async-http-1.4.3.jar') 
    compile files('libs/gson-2.2.4.jar') 
    compile files('libs/zbar.jar') 
    compile project(':libraries:volley') 
} 

task copyNativeLibs(type: Copy) { 
    from(new File('src/main/libs')) { include '**' } 
    into new File(buildDir, 'native-libs') 
} 

tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs } 

clean.dependsOn 'cleanCopyNativeLibs' 

tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> 
    pkgTask.jniDir new File(buildDir, 'native-libs') 
} 

dosya Proje/.idea/modules.xml My settings.gradle

include ':myapplicationname', ':libraries:volley' 
+4

Kitaplık projesi için kaynak kodunuz var mı? Kütüphane projesinin tezahüründe tanımlanan kendi 'başlatıcısı' olması muhtemeldir. –

+0

Teşekkürler Siddharth, sen haklıydın. – kylarsturn

cevap

6

bir ithal kütüphanesi de bir başlatıcısı içeren bir Aktivite varsa, başka bir uygulama yaratacaktır. Bunu önlemek için, her bir projenin AndroidManifest'inde başka hiçbir Faaliyetin aşağıdaki işaretlere sahip olmadığından emin olun.

<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
+0

teşekkürler. Bu doğru ... –

+0

Benim durumumda, ben \ build \ intermediates \ exploded-aar 'içine gitmek ve o kütüphanenin AndroidManifest (bir demo uygulaması vardı) düzenlemek zorunda kaldı. Tüm 'niyet-filtre' etiketini kaldırdım, ancak 'etkinlik' etiketini tuttum. Bu hile yaptı. – toddmo

0

Kontrol ve istemediğiniz ikinci modülü kaldırmak ortaya çıkmak.

Dosya böyle görünmelidir.

<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ProjectModuleManager"> <modules> <module fileurl="file://$PROJECT_DIR$/module2.iml" filepath="$PROJECT_DIR$/module2.iml" /> <module fileurl="file://$PROJECT_DIR$/module1.iml" filepath="$PROJECT_DIR$/module1.iml" /> </modules> </component> </project>

İlgili konular