2016-12-22 22 views
0

AndroidプロジェクトはAndroid-support-v7-AppCompatとGoogle-Play-Services_libライブラリを追加してアップグレードする必要があります。 我々はAntスクリプトにそれらを追加しました:AntプロジェクトにAppCompatライブラリとGooglePlayServicesライブラリを追加

<property name="android-support-v7-appcompat-folder" value="../android-support-v7-appcompat"/> 
<property name="android-support-v7-appcompat-src-folder" value="${android-support-v7-appcompat-folder}/src"/> 
<property name="android-support-v7-appcompat-resource-folder" value="${android-support-v7-appcompat-folder}/res"/> 
<property name="android-support-v7-appcompat-libs-folder" value="${android-support-v7-appcompat-folder}/libs"/> 

<property name="google-play-services-folder" value="../google-play-services_lib"/> 
<property name="google-play-services-src-folder" value="${google-play-services-folder}/src"/> 
<property name="google-play-services-resource-folder" value="${google-play-services-folder}/res"/> 
<property name="google-play-services-libs-folder" value="${google-play-services-folder}/libs"/> 

<target name="compile" depends="resource-src, aidl"> 
     <path id="project.javac.classpath"> 
      <path refid="project.all.jars.path" /> 
      <path refid="tested.project.classpath" /> 
     </path> 
    <javac encoding="ascii" target="1.7" source="1.7" 
      debug="true" extdirs="" includeantruntime="false" 
      destdir="${out-classes}" 
      bootclasspath="${android.jar}"> 
     <src path="${source-folder}" /> 
     <src path="${kxml-folder}" /> 
     <src path="${jzlib-folder}" /> 
     <src path="${bouncycastle-folder}" /> 
     <src path="${gen-folder}" /> 
     <src path="${android-support-v7-appcompat-src-folder}" /> 
     <src path="${google-play-services-src-folder}" /> 
     <classpath> 
      <fileset dir="${android-support-v7-appcompat-libs-folder}" includes="*.jar"/> 
      <fileset dir="${google-play-services-libs-folder}" includes="*.jar"/> 
      <fileset dir="${external-libs-folder}" includes="*.jar"/> 
      <fileset dir="${native-libs-folder}" includes="**/*.jar"/> 
      <pathelement path="${main-out-classes}"/> 
     </classpath> 
    </javac> 
</target> 

<target name="dex" depends="compile"> 
    <apply executable="${sdk.buildTools.dir}\dx.bat" failonerror="true" parallel="true"> 
     <arg value="--dex" /> 
     <arg value="--output=${intermediate-dex-location}" /> 
     <arg path="${out-classes-location}" /> 
     <fileset dir="${android-support-v7-appcompat-libs-folder}" includes="*.jar"/> 
     <fileset dir="${google-play-services-libs-folder}" includes="*.jar"/> 
     <fileset dir="${external-libs-folder}" includes="*.jar"/> 
     <fileset dir="${native-libs-folder}" includes="**/*.jar"/> 
    </apply> 
</target> 

とプロジェクトをEclipseに。 Eclipseを使用して問題なくアプリケーションをインストールして実行できます。しかし、私たちがインストールすることができるAntによって作られた.apk。後、我々はlogcatで例外で直面インストールされたアプリケーションを開こう:

java.lang.RuntimeException: のjava:活動 ComponentInfo {com.my.android/com.my.android.Program}を開始できません。 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)android.app.ActivityThread.access $ 800から で android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) (ActivityThread.javaでlang.NullPointerException :135) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196) android.os.Handler。のディスパッチメッセージ(Handler.java:102)android.os.Looper.loop(Looper.java:136) android.app.ActivityThread.main(ActivityThread.java:5001)at java.lang.reflect.Method invokeNative(ネイティブメソッド)at java.lang.reflect.Method.invoke(Method.java:515)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android android.support.v7.appでjava.lang.NullPointerExceptionが: dalvik.system.NativeStart.main(ネイティブメソッド)に起因

で.internal.os.ZygoteInit.main(ZygoteInit.java:601)。 AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:457) でandroid.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279) でandroid.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:244) android.support.v7ました。 app.AppCompatActivity.setContentView(AppCompatActivity.java:114) com.my.android.Program.onCreate(Program.java:180)at android.app.Activity.performCreate(Activity.java:5231)at アンドロイド。 app.Instrumentation.callActivityOnCreate android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)で(Instrumentation.java:1087)

指定された行で

を呼び出すと、setContentView(スプラッシュ)が呼び出されます。 イメージファイルがアサートされ、BitmapとImageViewが正しく初期化されていることを確認しました。

ImageView splash = new ImageView(this); 
splash.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT)); 

splash.setBackgroundColor(Color.BLACK); 
String splashUri = getSplashScreenUri(); 
Bitmap splashBitmap = ImageUtils.getImage(splashUri); 
splash.setImageBitmap(splashBitmap); 
splash.setScaleType(ScaleType.FIT_XY); 

DebugLog.log("splashUri is " + splashUri); //correct path 
DebugLog.log("splashBitmap is null " + (null == splashBitmap)); //false 
DebugLog.log("splashBitmap height " + splashBitmap.getHeight()); //correct height 

setContentView(splash); //line 180 

Antスクリプトでは何が欠けていましたか?

答えて

0

このblogをチェックして、何か不足していないかどうかを確認することができます。

プレイライブラリーは、それが含まれる必要があるリソースを持っているので、android.library.reference.1=../google-play-services_lib のようなファイルあなたのproject.propertiesに含まれています。しかし、GoogleではPlayライブラリ用にbuild.xmlを提供していないため、Antはビルドに失敗します。android update lib-project --path <playlib_path>を実行すると、Playライブラリにbuild.xmlを生成できます。

通常、あなたの誤差が前の活動のonCreate()メソッド内super.onCreate()を呼び出すにgetWindow().getDecorView()への呼び出しを追加することによって固定することができます。これはhereとこれまでに報告されたfixed bugで確認できます。

+0

bu参照パスだけでなく、リソースからR、Manifest.javaファイルを生成してaapt.exeを実行することで、google-play-services_libとandroid-support-v7-appcompatのリソースも既に含まれています。したがって、これらの2つのプロジェクトに対してbuild.xmlを生成する必要はありません。私はあなたの2番目の提案に従おうとしましたが、私はまだ同じエラーで直面しています:( – user809808

関連する問題