Tôi muốn xây dựng hai phiên bản của ứng dụng Android
bằng cách sử dụng tệp Apache ant
. Vấn đề là, cả hai phiên bản giống hệt nhau ngoại trừ quảng cáo trong phiên bản lite. Tôi đã đọc về cách sử dụng Configurations
với kiến tới build
các phiên bản gỡ lỗi.Android Ant Build
Lớp sau xác định một số hằng số có thể được tham chiếu trong ứng dụng.
public class Config {
// Whether or not to include logging in the app.
public final static boolean LOGGING = true;
}
Và đây là ví dụ về cách sử dụng hằng số này để xác định xem ghi nhật ký có được bật hay không.
if (Config.LOGGING) {
Log.d(TAG, "[onCreate] Success");
}
Bây giờ tôi có thể bật và tắt ghi nhật ký trong tệp thuộc tính của mình.
# Turn on or off logging.
config.logging=true
Điều này không có tác dụng, vì trước khi sử dụng cấu hình này, tôi phải tạo tệp cấu hình thứ hai và sử dụng filterset
và sao chép.
public class Config {
// Whether or not to include logging in the app.
public final static boolean LOGGING = @[email protected];
}
Điều đó khá dễ dàng, nhưng cách tôi có thể sử dụng để xây dựng hai phiên bản ứng dụng có và không có quảng cáo. Và làm thế nào tôi có thể thay đổi tên gói bằng cách sử dụng kiến, vì vậy android market
sẽ chấp nhận cả hai gói (đầy đủ và Lite).
Cảm ơn bạn đã đề xuất nhưng tôi vẫn gặp một số vấn đề.
Tôi đã viết một số mục tiêu cơ bản để dọn dẹp bản dựng và sao chép tất cả các tệp cần thiết để xây dựng ứng dụng trong hai thư mục/đầy đủ và/lite. Vì vậy, tôi có hai thư mục với cùng một nội dung. Bây giờ tôi đổi tên tất cả các trận đấu của tên gói ứng dụng trong tất cả các tệp * .java và tệp AndroidManifest (chuẩn bị đích).
Để thực sự tạo hai phiên bản khác nhau, giờ đây tôi sẽ phải bao gồm mã từ bài đăng đầu tiên của mình. Nhưng làm thế nào để tôi phải làm điều này và làm thế nào tôi có thể xây dựng cả hai phiên bản trong mục tiêu phát hành và viết các tập tin * .apk kết quả vào directoy xây dựng?
Cuối cùng ... Đó có phải là tất cả những gì tôi phải làm để xây dựng các tệp * .apks có thể được thị trường Android chấp nhận không?
<?xml version="1.0" encoding="UTF-8"?>
<project name="my.application" default="help" basedir=".">
<!-- Load the custom property files -->
<property file="build.properties" />
<property file="passwords.properties" />
<!-- Set global properties for this build -->
<property name="my.application.pkg" value="my.application"/>
<property name="my.application.pkg.full" value="my.application.full"/>
<property name="my.application.pkg.lite" value="my.application.lite"/>
<property name="my.application" location="."/>
<property name="my.application.build" location="build"/>
<property name="my.application.src" location="src"/>
<property name="my.application.res" location="res"/>
<property name="my.application.gen" location="gen"/>
<property name="my.application.full" location="full"/>
<property name="my.application.full.src" location="full/src"/>
<property name="my.application.full.res" location="full/res"/>
<property name="my.application.full.gen" location="full/gen"/>
<property name="my.application.full.build" location="full/build"/>
<property name="my.application.lite" location="lite"/>
<property name="my.application.lite.build" location="lite/build"/>
<property name="my.application.lite.src" location="lite/src"/>
<property name="my.application.lite.res" location="lite/res"/>
<property name="my.application.lite.gen" location="lite/gen"/>
<!-- Create and update the local.properties file -->
<loadproperties srcFile="local.properties" />
<!-- Load the ant.properties file -->
<property file="ant.properties" />
<!-- Load the project.properties file -->
<loadproperties srcFile="project.properties" />
<!-- Quick check on sdk.dir. -->
<fail
message="sdk.dir is missing."
unless="sdk.dir" />
<!-- Version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
<target name="release" depends="report, prepare">
<echo>Building the target!</echo>
</target>
<target name="prepare" depends="cleanup" >
<!-- Copy the Manifest.xml to the full copy -->
<copyfile src="${my.application}/AndroidManifest.xml"
dest="${my.application.full}/AndroidManifest.xml" />
<!-- Copy the source files to the full copy -->
<copy todir="${my.application.full.src}" overwrite="true">
<fileset dir="${my.application.src}" />
</copy>
<!-- Copy the resources to the full copy -->
<copy todir="${my.application.full.res}" overwrite="true">
<fileset dir="${my.application.res}" />
</copy>
<!-- Copy the generated to the full copy -->
<copy todir="${my.application.full.gen}" overwrite="true">
<fileset dir="${my.application.gen}" />
</copy>
<!-- Replace the package name in the full manifest file -->
<replaceregexp file="${my.application.full}/AndroidManifest.xml"
match='package="(.*)"'
replace='package="${my.application.pkg.full}"'
byline="false" />
<!-- Change the package name in all Java files -->
<replaceregexp flags="g" byline="false">
<regexp pattern="${my.application.pkg}" />
<substitution expression="${my.application.pkg.full}" />
<fileset dir="${my.application.full.src}" includes="**/*.java" />
</replaceregexp>
<!-- Copy the Manifest.xml to the lite copy -->
<copyfile src="${my.application}/AndroidManifest.xml"
dest="${my.application.lite}/AndroidManifest.xml" />
<!-- Copy the source files to the lite copy -->
<copy todir="${my.application.lite.src}" overwrite="true">
<fileset dir="${my.application.src}" />
</copy>
<!-- Copy the resources to the lite copy -->
<copy todir="${my.application.lite.res}" overwrite="true">
<fileset dir="${my.application.res}" />
</copy>
<!-- Copy the generated to the lite copy -->
<copy todir="${my.application.lite.gen}" overwrite="true">
<fileset dir="${my.application.gen}" />
</copy>
<!-- Replace the package name in the lite manifest file -->
<replaceregexp file="${my.application.lite}/AndroidManifest.xml"
match='package="(.*)"'
replace='package="${my.application.pkg.lite}"'
byline="false" />
<!-- Change the package name in all Java files -->
<replaceregexp flags="g" byline="false">
<regexp pattern="${my.application.pkg}" />
<substitution expression="${my.application.pkg.lite}" />
<fileset dir="${my.application.lite.src}" includes="**/*.java" />
</replaceregexp>
</target>
<!-- Deletes all directories, not needed anymore after compiling the source files -->
<target name="cleanup">
<!-- Delete the full version build dir -->
<delete dir="${my.application.full}"/>
<!-- Delete the lite version build dir -->
<delete dir="${my.application.lite}"/>
<!-- Delete the *.apk file -->
<delete file="my.application.full.apk"/>
<!-- Delete the *.apk file -->
<delete file="my.application.lite.apk"/>
</target>
</project>
Bạn có tìm thấy giải pháp nào không? Tôi bị mắc kẹt trên cùng một vấn đề. Bạn vui lòng chia sẻ nếu bạn sửa lỗi này? – Mac
Không thực sự. Tôi đã triển khai chương trình mà không cần phiên bản nhẹ. Nhưng tôi rất sẵn lòng tìm ra giải pháp làm việc. – Phidelux