2012-02-08 7 views
3

同じコードベース(Lite/Proなど)の複数のバージョンが必要なAndroidプロジェクトでは作業していますが、Javaでは前処理指令は許可されません。 Googleでの検索では、Prebopプリプロセッサについてこのthisチュートリアルがスローされます。問題は、このチュートリアルはAndroid用ではないことと、特定のバージョンを指定してコンパイルした後にapkを生成する方法がわからないことです。私は、Android上で複数のAPIのと開発は非常にイライラさせられるので、誰かが私に指示を与えることができることを望むAntを使用してPrebopでAndroid APKを生成する方法

<?xml version="1.0"?> 
<project name="Hello" default="compile" basedir="."> 
    <property file="local.properties" /> 
    <property file="ant.properties" /> 
    <loadproperties srcFile="project.properties" /> 
    <property name="android-home" value="../android-sdks" /> 
    <property name="android-version" value="3" /> 
    <property name="android-platform-specific" value="${android-home}/platforms/android-${android-version}" /> 
    <property name="android-jar" value="${android-platform-specific}/android.jar" /> 
    <property name="android-tools" value="${android-home}/platform-tools" /> 
    <property name="resource-folder" value="res" /> 
    <property name="gen-folder" value="gen" /> 

    <property name="src" location="src" /> 

    <property name="tmpfolder" value="/tmp/Hello" /> 
    <property name="src_lite" value="${tmpfolder}/src_lite"/> 
    <property name="src_pro" value="${tmpfolder}/src_pro"/> 

    <property name="build" location="bin" /> 
    <property name="build_lite" value="${build}/lite"/> 
    <property name="build_pro" value="${build}/pro"/> 

    <property name="out-folder" value="${build_lite}" /> 
    <property name="dex-file" value="classes.dex" /> 
    <property name="intermediate-dex" value="${out-folder}/${dex-file}" /> 
    <property name="external-libs-folder" value="bin/lite" /> 
    <property name="out-classes" value="${out-folder}/classes" /> 
    <property name="out-classes-location" value="./${out-classes}"/> 

    <target name="clean"> 
     <delete dir="${tmpfolder}" /> 
     <delete dir="${build}" /> 
    </target> 

    <target name="makedir"> 
     <mkdir dir="${src_lite}" /> 
     <mkdir dir="${src_pro}" /> 
     <mkdir dir="${build_lite}" /> 
     <mkdir dir="${build_pro}" /> 
    </target> 

    <target name="resource-src" depends="makedir"> 
     <echo>Generating R.java/Manifest.java from the resources...</echo> 
     <exec executable="${android-tools}/aapt.exe" failonerror="true"> 
      <arg value="package" /> 
      <arg value="-m" /> 
      <arg value="-J" /> 
      <arg path="${gen-folder}" /> 
      <arg value="-M" /> 
      <arg path="AndroidManifest.xml" /> 
      <arg value="-S" /> 
      <arg path="${resource-folder}" /> 
      <arg value="-I" /> 
      <arg path="${android-jar}" /> 
      <arg value="--custom-package" /> 
      <arg value="com.pack.name" /> 
     </exec> 
    </target> 

    <target name="copysource"> 
     <copy todir="${src_lite}"><fileset dir="src" /></copy> 
     <copy todir="${src_pro}"><fileset dir="src" /></copy> 
    </target> 

    <target name="splitsource" description="preprocessor"> 
     <preprocess indir="${src}" outdir="${src_lite}" out="replace"> 
      <var name="pro" value="false"/> 
      <filetype commentend="*/" commentbegin="/*" extensions="java"/> 
     </preprocess> 
     <preprocess indir="${src}" outdir="${src_pro}" out="replace"> 
      <var name="pro" value="true"/> 
      <filetype commentend="*/" commentbegin="/*" extensions="java"/> 
     </preprocess> 
    </target> 

    <target name="compile" depends="makedir, copysource"> 
     <javac srcdir="${src_lite}" destdir="${build_lite}" includeantruntime="false"> 
      <classpath> 
       <path id="application" location="${android-jar}"/> 
       <path id="application" location="src" /> 
       <path id="application" location="res" /> 
      </classpath> 
     </javac> 
     <javac srcdir="${src_pro}" destdir="${build_pro}" includeantruntime="false"> 
      <classpath> 
       <path id="application" location="${android-jar}"/> 
       <path id="application" location="src" /> 
       <path id="application" location="res" /> 
      </classpath> 
     </javac> 
    </target> 
    <import file="${sdk.dir}/tools/ant/build.xml" /> 
</project> 

:これはアリのコードです。

答えて

-1

アンドロイドをコマンドラインでビルドするには、以下の手順に従ってください。

まずAndroidプロジェクトを作成します。

PATH_TO_SDK/android create project -n NAME -p PATH -k PACKAGE -a ACTIVITY -t TARGET_ID 

NAME:プロジェクト名
PATH:プロジェクトパス
PACKAGE:あなたのプロジェクトパッケージ(例えばcom.example)
活動:あなたの主な活動
TARGET_ID:あなたのターゲットSDKのID

次に、以下のようにantでビルドすることができます。

ant release 

または

​​

(注:あなたがbuild.xmlのに必要な構成を行うことができます)

プロジェクトがエラーを持っていない場合、あなたのプロジェクトが正常にビルドされなければなりません。

ここで、debug/apkファイルはbin /ディレクトリにあります。

リリースビルドを行う場合は、jarsignerを使用して以下のようにプロジェクトに署名する必要があります。

jarsigner -verbose -storepass PASS -keypass KEY_PASS -keystore KEY_STORE_PATH PROJECT_PATH/bin/PROJECT_NAME-release-unsigned.apk YOUR_KEY_STORE_FILE 

次に、.apkファイルを確認します。

jarsigner -verbose -verify PROJECT_PATH/bin/PROJECT_NAME-release-unsigned.apk 

最後に、最終リリースapkファイルを作成することができます。

ANDROID_SDK_PATH/zipalign 4 PROJECT_PATH/bin/PROJECT_NAME-release-unsigned.apk PROJECT_PATH/bin/PROJECT_NAME-release.apk 

あなたのapkはここから解放されます。

PROJECT_PATH/binに/ PROJECT_NAME-release.apk

2

あなたは(少なくとも) "splitsource" "コンパイル" に依存ターゲットの代わりに "copysource" を追加する必要があり、そのクラスファイルは、前処理されたJavaで生成され、もの。

関連する問題