Move Android specific files of each projects to a subfolder `android`. This includes the `res` folder with custom resources and icons, as well as the `libs` folder storing Android libraries (jar files). It is a followup to the iOS support where platform specific icons are stored in the subfolder `ios`.
Also remove the quiet option (`-q`) from the call to ant, because it often hid error messages. Besides, the call to ndk-build is already very verbose, so a longer output from ant is not that bad. In the future, for a cleaner output, we could try to replace ant with gradle.
Pull-Request: #1952
Reviewed-by: Jean Privat <jean@pryen.org>
# Android
android: bin/asteronits.apk
-bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit android) ${NITC} res/drawable-hdpi/icon.png pre-build
+bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit android) ${NITC} android/res/ pre-build
${NITC} src/android.nit -m android -o $@
-android-release: $(shell ${NITLS} -M src/asteronits.nit android) ${NITC} res/drawable-hdpi/icon.png pre-build
+android-release: $(shell ${NITLS} -M src/asteronits.nit android) ${NITC} android/res/ pre-build
${NITC} src/android.nit -m android -o bin/asteronits.apk --release
-res/drawable-hdpi/icon.png: art/icon.svg
+android/res/: art/icon.svg
make -C ../inkscape_tools/
- ../inkscape_tools/bin/svg_to_icons --out res --android art/icon.svg
+ ../inkscape_tools/bin/svg_to_icons --out android/res --android art/icon.svg
-icon.png
src/drawing.nit
assets/images/
+android/
../../bin/nitc -o bin/moles src/moles_linux.nit
android: bin/moles.apk
-bin/moles.apk: android-icons $(shell ../../bin/nitls -M src/moles_android.nit) assets/images/drawing.png
+bin/moles.apk: android/res/ $(shell ../../bin/nitls -M src/moles_android.nit) assets/images/drawing.png
mkdir -p bin
../../bin/nitc -o bin/moles.apk src/moles_android.nit
-android-release: android-icons $(shell ../../bin/nitls -M src/moles_android.nit) assets/images/drawing.png
+android-release: android/res/ $(shell ../../bin/nitls -M src/moles_android.nit) assets/images/drawing.png
mkdir -p bin
../../bin/nitc -o bin/moles.apk src/moles_android.nit --release
$(SVG2ICONS):
$(MAKE) -C ../inkscape_tools
-android-icons: $(SVG2ICONS) art/icon.svg
- mkdir -p res
- $(SVG2ICONS) art/icon.svg --android --out res/
+android/res/: $(SVG2ICONS) art/icon.svg
+ mkdir -p android/res
+ $(SVG2ICONS) art/icon.svg --android --out android/res/
android-install: bin/moles.apk
adb install -rf bin/moles.apk
../../misc/jenkins/check_android.sh bin/moles.apk
clean:
- rm -rf bin res
+ rm -rf bin android
mkdir -p bin
../../bin/nitc -o bin/friendz src/friendz_linux.nit
-android: res/drawable-hdpi/icon.png
+android: android/res/drawable-hdpi/icon.png
mkdir -p bin
../../bin/nitc -o bin/friendz.apk src/friendz_android.nit
-android-release: res/drawable-hdpi/icon.png
+android-release: android/res/drawable-hdpi/icon.png
mkdir -p bin
../../bin/nitc -o bin/friendz.apk src/friendz_android.nit --release
-res/drawable-hdpi/icon.png: art/icon.svg
- mkdir -p res
- ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out res/
+android/res/drawable-hdpi/icon.png: art/icon.svg
+ mkdir -p android/res
+ ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
doc:
mkdir -p doc
../../bin/nitdoc -d doc/ src/friendz.nit src/friendz_linux.nit
clean:
- rm -rf bin/ doc/ res/
+ rm -rf bin/ doc/ android/
assets/images/
-res/
+android/
src/drawing.nit
mkdir -p assets/images/
../inkscape_tools/bin/svg_to_png_and_nit art/drawing.svg -a assets/ -s src/ -x 4
-res/drawable-ldpi/icon.png: art/icon.svg
- mkdir -p res/
- ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out res/
+android/res/: art/icon.svg
+ mkdir -p android/res/
+ ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
android: bin/memory.apk
-bin/memory.apk: assets/images/drawing.png src/*.nit res/drawable-ldpi/icon.png
+bin/memory.apk: assets/images/drawing.png src/*.nit android/res/
mkdir -p bin
../../bin/nitc -o bin/memory.apk src/memory.nit -m ../../lib/mnit/android/android.nit -m ../../lib/android/landscape.nit
-android-release: assets/images/drawing.png src/*.nit res/drawable-ldpi/icon.png
+android-release: assets/images/drawing.png src/*.nit android/res/
mkdir -p bin
../../bin/nitc -o bin/memory.apk src/memory.nit -m ../../lib/mnit/android/android.nit -m ../../lib/android/landscape.nit --release
# Android
android: bin/model_viewer.apk
-bin/model_viewer.apk: $(shell ${NITLS} -M src/model_viewer.nit android) ${NITC} res/drawable-hdpi/icon.png
+bin/model_viewer.apk: $(shell ${NITLS} -M src/model_viewer.nit android) ${NITC} android/res/
${NITC} src/model_viewer.nit -m android -o $@
-android-release: $(shell ${NITLS} -M src/model_viewer.nit android) ${NITC} res/drawable-hdpi/icon.png
+android-release: $(shell ${NITLS} -M src/model_viewer.nit android) ${NITC} android/res/
${NITC} src/model_viewer.nit -m android -o bin/model_viewer.apk --release
-res/drawable-hdpi/icon.png: art/icon.png
+android/res/: art/icon.png
make -C ../inkscape_tools/
- mkdir -p res/drawable-ldpi/ res/drawable-mdpi/ res/drawable-hdpi/ \
- res/drawable-xhdpi/ res/drawable-xxhdpi/ res/drawable-xxxhdpi/
- convert -resize 36x36 art/icon.png res/drawable-ldpi/icon.png
- convert -resize 48x48 art/icon.png res/drawable-mdpi/icon.png
- convert -resize 72x72 art/icon.png res/drawable-hdpi/icon.png
- convert -resize 96x96 art/icon.png res/drawable-xhdpi/icon.png
- convert -resize 144x144 art/icon.png res/drawable-xxhdpi/icon.png
- convert -resize 192x192 art/icon.png res/drawable-xxxhdpi/icon.png
-
-bin/model_viewer_vr.apk: $(shell ${NITLS} -M src/model_viewer.nit android) ${NITC} res/drawable-hdpi/icon.png libs/cardboard.jar
+ mkdir -p android/res/drawable-ldpi/ android/res/drawable-mdpi/ android/res/drawable-hdpi/ \
+ android/res/drawable-xhdpi/ android/res/drawable-xxhdpi/ android/res/drawable-xxxhdpi/
+ convert -resize 36x36 art/icon.png android/res/drawable-ldpi/icon.png
+ convert -resize 48x48 art/icon.png android/res/drawable-mdpi/icon.png
+ convert -resize 72x72 art/icon.png android/res/drawable-hdpi/icon.png
+ convert -resize 96x96 art/icon.png android/res/drawable-xhdpi/icon.png
+ convert -resize 144x144 art/icon.png android/res/drawable-xxhdpi/icon.png
+ convert -resize 192x192 art/icon.png android/res/drawable-xxxhdpi/icon.png
+
+bin/model_viewer_vr.apk: $(shell ${NITLS} -M src/model_viewer.nit android) ${NITC} android/res/ android/libs/cardboard.jar
${NITC} src/model_viewer.nit -m android -m ../../lib/gamnit/depth/vr.nit -o $@
-libs/cardboard.jar:
+android/libs/cardboard.jar:
+ mkdir -p android/libs
curl --progress-bar -o libs/cardboard.jar \
https://raw.githubusercontent.com/googlesamples/cardboard-java/master/CardboardSample/libs/cardboard.jar
# Android
android: bin/tinks.apk
-bin/tinks.apk: assets/images/drawing.png res/drawable-ldpi/icon.png $(shell ../../bin/nitls -M src/client/android_client.nit)
+bin/tinks.apk: assets/images/drawing.png android/res/ $(shell ../../bin/nitls -M src/client/android_client.nit)
../../bin/nitserial -o src/client/client_serialize.nit src/client/client.nit
../../bin/nitc -o bin/tinks.apk src/client/android_client.nit -m src/client/client_serialize.nit
-android-release: assets/images/drawing.png res/drawable-ldpi/icon.png $(shell ../../bin/nitls -M src/client/android_client.nit)
+android-release: assets/images/drawing.png android/res/ $(shell ../../bin/nitls -M src/client/android_client.nit)
../../bin/nitserial -o src/client/client_serialize.nit src/client/client.nit
../../bin/nitc -o bin/tinks.apk src/client/android_client.nit -m src/client/client_serialize.nit --release
-res/drawable-ldpi/icon.png: art/icon.svg
- ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out res/
+android/res/: art/icon.svg
+ ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
.PHONY: pub
# Android
android: bin/tnitter.apk
-bin/tnitter.apk: $(shell ../../bin/nitls -M src/tnitter_app_android.nit) res/drawable-ldpi/icon.png
+bin/tnitter.apk: $(shell ../../bin/nitls -M src/tnitter_app_android.nit) android/res/
mkdir -p bin/
../../bin/nitc -o bin/tnitter.apk src/tnitter_app_android.nit -D tnitter_server_uri=http://$(SERVER)
-android-release: $(shell ../../bin/nitls -M src/tnitter_app_android.nit) res/drawable-ldpi/icon.png
+android-release: $(shell ../../bin/nitls -M src/tnitter_app_android.nit) android/res/
mkdir -p bin/
../../bin/nitc -o bin/tnitter.apk src/tnitter_app_android.nit --release -D tnitter_server_uri=http://tnitter.xymus.net
-res/drawable-ldpi/icon.png: art/icon.svg
- mkdir -p res
- ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out res/
+android/res/: art/icon.svg
+ mkdir -p android
+ ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
# ---
# iOS
../../bin/nitc -o bin/ballz src/ballz_linux.nit
icon: ../../contrib/inkscape_tools/bin/svg_to_icons
- mkdir -p res
- ../../contrib/inkscape_tools/bin/svg_to_icons art/ball.svg --android --out res/
+ mkdir -p android/res
+ ../../contrib/inkscape_tools/bin/svg_to_icons art/ball.svg --android --out android/res/
clean:
- rm -rf bin res
+ rm -rf bin android
mkdir -p bin
../../bin/nitc -o bin/dino src/dino_linux.nit
-android: android-icons
+android: android/res/
mkdir -p bin
../../bin/nitc -o bin/dino.apk src/dino_android.nit
-android-release: android-icons
+android-release: android/res/
mkdir -p bin
../../bin/nitc -o bin/dino.apk src/dino_android.nit --release
../../contrib/inkscape_tools/bin/svg_to_icons:
$(MAKE) -C ../../contrib/inkscape_tools
-android-icons: ../../contrib/inkscape_tools/bin/svg_to_icons
- mkdir -p res
- ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --android --out res/
+android/res/: ../../contrib/inkscape_tools/bin/svg_to_icons
+ mkdir -p android/res/
+ ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
doc:
mkdir -p doc
end
# Is there an icon?
+ var project_root = "."
+ var mpackage = compiler.mainmodule.first_real_mmodule.mpackage
+ if mpackage != null then
+ var root = mpackage.root
+ if root != null then
+ var filepath = root.filepath
+ if filepath != null then
+ project_root = filepath
+ end
+ end
+ end
+
var resolutions = ["ldpi", "mdpi", "hdpi", "xhdpi", "xxhdpi", "xxxhdpi"]
var icon_available = false
for res in resolutions do
- var path = "res/drawable-{res}/icon.png"
+ var path = project_root / "android/res/drawable-{res}/icon.png"
if path.file_exists then
icon_available = true
break
# Copy assets, resources and libs where expected by the SDK
- var project_root = "."
- var mpackage = compiler.mainmodule.first_real_mmodule.mpackage
- if mpackage != null then
- var root = mpackage.root
- if root != null then
- var filepath = root.filepath
- if filepath != null then
- project_root = filepath
- end
- end
- end
-
# Link to assets (for mnit and others)
var assets_dir = project_root / "assets"
if assets_dir.file_exists then
end
# Copy the res folder
- var res_dir = project_root / "res"
+ var res_dir = project_root / "android/res"
if res_dir.file_exists then
# copy the res folder to the compile dir
res_dir = res_dir.realpath
end
# Copy the libs folder
- var libs_dir = project_root / "libs"
+ var libs_dir = project_root / "android/libs"
if libs_dir.file_exists then
toolcontext.exec_and_check(["cp", "-r", libs_dir, android_project_root], "Android project error")
end
toolcontext.exec_and_check(["ndk-build", "-s", "-j", "-C", android_project_root], "Android project error")
# Generate the apk
- var args = ["ant", "-q", "-f", android_project_root+"/build.xml"]
+ var args = ["ant", "-f", android_project_root+"/build.xml"]
if release then
args.add "release"
else args.add "debug"