Desidero integrare l'SDK Android di Facebook (v4.11) nella mia app per Android e il mio apk finale viene compilato tramite Flash Builder a causa delle dipendenze flex-sdk.ClassNotFoundException per com.facebook.FacebookActivity
Sfortunatamente, ricevo uno ClassNotFoundException
per com.facebook.FacebookActivity
nel mio stack-trace quando la mia app tenta di creare l'attività in questione che inizializza Facebook.
Ho incluso il classes.jar nell'estensione nativa per il mio codice sorgente Android e le dipendenze. Sul decompilazione il file classes.dex nella .apk finale utilizzando dexdump da Android SDK build-tools tramite il seguente comando:
./dexdump classes.dex | grep 'Class descriptor'
sono in grado di vedere
Class descriptor : 'Lcom/facebook/FacebookActivity;'
che indica che FacebookActivity.class ha stato pacchettizzato e compilato in .apk.
Ho anche raggruppato tutte le risorse di Facebook-sdk insieme alle risorse del mio progetto nella cartella res nella mia estensione nativa (questa è la prima volta che ho dovuto includere risorse di terze parti con le mie in un'estensione nativa).
Il mio codice onCreate()
che inizializza il Facebook-SDK:
FacebookSdk.sdkInitialize(getApplicationContext()); //throws the ClassNotFoundException
AppEventsLogger.activateApp(this);
miei AndroidManisfest.xml
voci come da Facebook-documentazione:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
mi manca qualcosa qui?
EDIT:
Sto usando la versione 4.12 ora senza alcun cambiamento nei risultati.
Inoltre, ecco la mia voce build.gradle: (Anche se questo non influisce molto sul packaging flessibile, dato che devo usare ziptree sul jd di Facebook sdk).
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile "com.android.support:support-v4:23.0.+"
compile 'com.facebook.android:facebook-android-sdk:[4,5)'
/**
* newer cardview has compatibility issues with android-sdk default styles.
**/
compile('com.android.support:cardview-v7:23.2.0') {
force = true
}
}
EDIT 2:
Ecco il mio compito Gradle personalizzato che sto usando per confezionare le dipendenze compilati e le classi di origine:
task fatJar(type: Jar) {
//external libariries - their jars containing compiled classes obtained from the .idea -> libraries -> <libName>.xml file
from (zipTree("build/intermediates/exploded-aar/com.android.support/support-v4/23.2.0/jars/classes.jar"))
from (zipTree("build/intermediates/exploded-aar/com.android.support/cardview-v7/23.2.0/jars/classes.jar"))
from ("build/intermediates/exploded-aar/com.android.support/cardview-v7/23.2.0/res")
from (zipTree("build/intermediates/exploded-aar/com.android.support/customtabs/23.4.0/jars/classes.jar"))
from ("build/intermediates/exploded-aar/com.android.support/customtabs/23.4.0/res")
from (zipTree("build/intermediates/exploded-aar/com.facebook.android/facebook-android-sdk/4.12.1/jars/classes.jar"))
// from ("build/intermediates/exploded-aar/com.facebook.android/facebook-android-sdk/4.12.0/res")
from(zipTree("/$USER_HOME/.gradle/caches/modules-2/files-2.1/com.parse.bolts/bolts-android/1.4.0/cc174c559b5177982887bf6e1b76003aebad9516/bolts-android-1.4.0.jar"))
from(zipTree("/$USER_HOME/.gradle/caches/modules-2/files-2.1/com.parse.bolts/bolts-applinks/1.4.0/8ad21bf21784dacce5f2043afb97218cc377e835/bolts-applinks-1.4.0.jar"))
from(zipTree("/$USER_HOME/.gradle/caches/modules-2/files-2.1/com.parse.bolts/bolts-tasks/1.4.0/d85884acf6810a3bbbecb587f239005cbc846dc4/bolts-tasks-1.4.0.jar"))
//soucre code
from ('build/intermediates/classes/release/') {
exclude '**/BuildConfig.class'
exclude '**/R$*.class'
exclude '**/R.class'
}
//jar name and destination directory
archiveName = "src_and_dependencies.jar"
destinationDir = file("/$USER_HOME/Ane/build/ane/Android-ARM")
}
//before running fatJar task, the old jar should be deleted and the project should be re-built
fatJar.dependsOn(clearJar, build)
Che cosa è che seconda attività Android:? Name = "com.facebook.CustomTabActivity" – Chebyr
Si tratta di una consuetudine Tab Chrome per gestire il caso d'uso in cui Google Chrome e Facebook applicazioni sono entrambi non presenti sul dispositivo. –
Stai ricevendo "funzioni oltre il limite di 65k" quando si impacchetta come una normale app per Android (non con flash)? Flash Builder utilizza attività gradle? –