java - تطبيق Hello Hello العالمي الذي يحتوي على عدد قليل من الملفات ، ولا يوجد IDE ، ومحرر النصوص فقط




android windows (4)

ما هو أقل عدد من ملفات Java / مصدر مشروع الحد الأدنى لملفات Java لإنتاج تطبيق .apk Android؟

هذه الملفات 2 فقط هي المطلوبة لإنشاء فئات ملف Apk على نظامي classes.dex و AndroidManifest.xml ، راجع AndroidManifest.xml المدونة هذه للحصول على معلومات كاملة.

أصغر حجم apk مصنوع حتى الآن هو 678 بايت. تحقق من هذا repo

في جميع اللغات التي استخدمتها تقريبًا (Python و C و C ++ وغيرها) ، من الممكن كتابة تطبيق "hello world" مع محرر نصوص فقط وتشغيله من سطر الأوامر (لغات مترجمة) أو الترجمة / الإنشاء من سطر الأوامر (اللغات المترجمة) ، على سبيل المثال cl.exe helloworld1.cpp .

من ناحية أخرى ، في كل مرة أقوم فيها بتطبيق Android ، أحتاج إلى استخدام Android Studio (الذي يكون بطيئًا في الجهاز) ، وإنشاء مشروع جديد باستخدام IDE ، إلخ.

السؤال: ما هو أقل عدد من ملفات Java / مصدر مشروع الحد الأدنى لإنشاء ملفات .apk Android؟ كيفية بنائه من سطر الأوامر؟ (وليس من الضروري أبدا فتح IDE)

ملحوظة: لقد قرأت العديد من برامج hello العالمية لنظام أندرويد ، لكن جميعها تتضمن استخدام IDE.

NB2: أنا أبحث عن التطبيقات القياسية المكتوبة بلغة جافا ، وليس الحلول مثل Kivy ، إلخ.

NB3: حتى إذا كان IDE ربما أكثر ملاءمة لبرمجة تطبيق Android ، لا أرى أي سبب تقني يتطلب تجميع / بناء عدد من الملفات IDE / برمجة مع واجهة المستخدم الرسومية. يفضل بعض الأشخاص (مثلي) محرر سطر الأوامر والنص فقط ، وسيكون مثل هذا الحل الخالي من IDE مفيدًا.

NB4: أنا أعمل على نظام Windows الأساسي ، لقد بدأت " g Hello" ، "Hello World without IDE" repo هنا بناءً على هذه الإجابة ، لكن لدي بعض المشاكل مثل هذه المشكلة. من ناحية أخرى ، يبدو أن الطريقة المستخدمة هناك مهملة ...


إذا كنت تجد تطوير أندرويد معقدًا جدًا وتريد حلاً أبسط - أقترح تجربة الرفرفة.

يمكنك كتابة تطبيقات أسهل في الفهم وسيتم تشغيلها على Android أو IPhone. ويستخدم لغة دارت التي لديها العديد من أوجه التشابه مع جافا.

فيما يلي برنامج تعليمي hello world يستخدم IDE وسطر الأوامر في windows لإنشاء تطبيق Android.

https://www.youtube.com/watch?v=CEPCGXQ7IQg


نعم يمكنك بسهولة القيام بكل شيء من سطر الأوامر (لا يوجد IDE المعنية ، أعدك بذلك).
وهذا يستخدم المؤمن القديم اباتشي النملة . لا يستخدم Gradle ، الذي يتطلب المزيد من العمل.

كي تختصر

ما تكتبه هو ( فقط سطرين لإنتاج apk):

    android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj 

(ينتج عن هذا ملف بناء Apache Ant يسمى ملف build.xml والذي يشبه ملف build.gradle . الآن اكتب بعض التعليمات البرمجية ولكن TestActivity.java موجود بالفعل وسيتم تجميعه)

    ant debug

اقامة

( ملاحظة : تم إهمال أمر " android.bat " منذ إنشاء أدوات الإصدار 26 ، لذا استخدم أمرًا قديمًا (انظر الرابط أدناه) ، يعني الإهمال في هذه الحالة إزالته بالكامل ! { غير مطيع جوجل }).

  1. قم بتثبيت Java JDK إذا لم يكن مثبتًا بالفعل (يمكنك استخدام jdk-8u151-windows-x64.exe على سبيل المثال) ، وتأكد من تعريف متغير البيئة JAVA_HOME على سبيل المثال:

    JAVA_HOME = C: \ Program Files \ Java \ jdk1.8.0_112
    JAVA_PATH = C: \ Program Files \ Java \ jre1.8.0_112 \ bin

JDK هو Java Development Kit.
JRE هي JRE تشغيل جافا.

  1. قم بتثبيت Android SDK Tools (مثل installer_r24.4.1-windows.exe ، راجع هذه الإجابة ) إذا لم يكن قد تم بالفعل ، ثم في SDK Manager GUI ، قم بإلغاء تحديد كل شيء واختر "Android SDK Build-Tools" (مثل Android SDK Build-Tools 19.1 ) + Android 4.1.2 (API 16) JELLY_BEAN واحد (أو العديد) (مثل Android 4.1.2 (API 16) JELLY_BEAN ). لإثبات أنك لست بحاجة إلى Android Studio ، لن تقوم بتنزيله! (فقط SDK).

  2. قم بتنزيل Apache Ant (على سبيل المثال apache-ant-1.9.9-bin.zip )

التفاصيل

لإنشاء مشروع من سطر الأوامر باستخدام Android SDK :

حدد مكانًا لوضع مشروعك:

cd c:\android
mkdir antTest
cd antTest

قم بتشغيل الأمر:

C:\Android\sdk1\tools\android create project --target "android-16" --path basj --activity TestActivity --package com.android.basj 
              ^
              |
--------------+ (here's where I keep an old version of tools (version 25 in my case)

فيما يلي بنية الدليل التي تم إنشاؤها (وجميع الملفات التي تحتاج إلى إنشاء):

C:.
+---basj
    +---bin
    +---libs
    +---res
    ¦   +---drawable-hdpi
    ¦   +---drawable-ldpi
    ¦   +---drawable-mdpi
    ¦   +---drawable-xhdpi
    ¦   +---layout
    ¦   +---values
    +---src
        +---com
            +---android
                +---basj

الإخراج التفصيلي لإنشاء المشروع:

Created project directory: C:\Android\antTest\basj
Created directory C:\Android\antTest\basj\src\com\android\basj
Added file C:\Android\antTest\basj\src\com\android\basj\TestActivity.java
Created directory C:\Android\antTest\basj\res
Created directory C:\Android\antTest\basj\bin
Created directory C:\Android\antTest\basj\libs
Created directory C:\Android\antTest\basj\res\values
Added file C:\Android\antTest\basj\res\values\strings.xml
Created directory C:\Android\antTest\basj\res\layout
Added file C:\Android\antTest\basj\res\layout\main.xml
Created directory C:\Android\antTest\basj\res\drawable-xhdpi
Created directory C:\Android\antTest\basj\res\drawable-hdpi
Created directory C:\Android\antTest\basj\res\drawable-mdpi
Created directory C:\Android\antTest\basj\res\drawable-ldpi
Added file C:\Android\antTest\basj\AndroidManifest.xml
Added file C:\Android\antTest\basj\build.xml
Added file C:\Android\antTest\basj\proguard-project.txt

قم بتنزيل Apache Ant من http://ant.apache.org/ .

انظر هذا البرنامج التعليمي للإعداد: http://www.vogella.com/tutorials/ApacheAnt/article.html

انظر أيضًا هذا البرنامج التعليمي: http://blog.vogella.com/2011/03/16/creating-android-applications-via-the-command-line-ant/

اكتب الكود (مرحبًا بالعالم).

قم بتشغيل هذا الأمر وستحصل على Android Apk خارج الجانب الآخر (يُطلق عليه TestActivity-debug.apk):

ant debug

يا المعزوفة ، حصلت على apk الروبوت!
مع الهيكل الجديد المضافة:

C:.
├───bin
   ├───classes
      └───com
          └───android
              └───basj
   ├───dexedLibs
   └───res
       ├───drawable-hdpi
       ├───drawable-ldpi
       ├───drawable-mdpi
       └───drawable-xhdpi
├───gen
   └───com
       └───android
           └───basj

لبناء النهائي:

ant release

إذا كنت مهتمًا بمثال أكثر شمولًا لملفات Ant build.xml أو DEX ، والعمليات الأعمق لنظام Android تبدو here

كيفية توقيع apk المترجمة بالفعل

تعرف على كيفية توقيع apk المترجمة بالفعل this أيضا
من إجابة بواسطة @ for3st ، يوجد جزء مناسب من هذا المنشور:

عملية يدوية:

الخطوة 1: إنشاء Keystore (مرة واحدة فقط)

تحتاج إلى إنشاء مفتاح ضغط مرة واحدة واستخدامه للتوقيع على apk unsigned . استخدم أداة keytool التي يوفرها JDK الموجود في %JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

الخطوة 2 أو 4: Zipalign

zipalign إحدى الأدوات التي يوفرها Android SDK والموجودة على سبيل المثال %ANDROID_HOME%/sdk/build-tools/24.0.2/ وهي خطوة تحسين إلزامية إذا كنت تريد تحميل apk إلى Play Store.

zipalign -p 4 my.apk my-aligned.apk

ملاحظة: عند استخدام jarsigner القديم ، تحتاج إلى zipalign بعد التوقيع. عند استخدام طريقة apksigner الجديدة ، يمكنك القيام بذلك قبل التوقيع (مربكة ، وأنا أعلم). يعمل استدعاء zipalign قبل apksigner بشكل جيد لأن apksigner يحافظ على محاذاة وضغط APK (على عكس jarsigner ).

يمكنك التحقق من المحاذاة مع:

zipalign -c 4 my-aligned.apk

الخطوة 3: التوقيع والتحقق

باستخدام أدوات البناء 24.0.2 وما فوق

استخدم jarsigner الذي ، مثل مجموعة أدوات المفاتيح ، يأتي مع توزيع JDK الموجود في %JAVA_HOME%/bin/ واستخدامه كما يلي:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

ويمكن التحقق منها مع

jarsigner -verify -verbose my_application.apk

باستخدام أدوات البناء 24.0.3 وأحدث

Android 7.0 تطبيق APK Signature Scheme v2 ، وهو نظام جديد لتوقيع التطبيقات يوفر أوقات تثبيت أسرع للتطبيقات والمزيد من الحماية ضد التعديلات غير المصرح بها لملفات APK (انظر here here لمزيد من التفاصيل). لذلك ، طبقت Google apk الخاص بها والمسمى: apksigner (duh!) يمكن العثور على ملف البرنامج النصي في %ANDROID_HOME%/sdk/build-tools/24.0.3/ (.jar موجود في المجلد الفرعي /lib ). استخدمه مثل هذا:

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

ويمكن التحقق منها باستخدام:

apksigner verify my-app.apk

هذه طريقة جاهزة للاستخدام لإنشاء تطبيق Android دون الحاجة إلى تثبيت / فتح Android Studio ولو مرة واحدة (إنه عبارة عن بيئة تطوير متكاملة رائعة ، ولكن بعض الأشخاص مثلي يفضلون فقط محرر نصوص + سطر أوامر). ستحصل على APK موقعة / متوافقة تمامًا في النهاية ، جاهزة للدخول على متجر Google Play.

الفضل الكامل في answer JonGoodwin ، لقد لخصته هنا فقط مع مجموعة createproject.bat واحدة createproject.bat كل شيء.

المتطلبات الأساسية (راجع answer للحصول على مزيد من التفاصيل عنها): تحتاج إلى تثبيت هذه الأدوات:

  • جافا JDK

  • أدوات SDK Android

  • اباتشي النملة

الآن فقط قم بتعديل الأسطر الأولى من هذا createproject.bat لتعيين APPNAME الخاص بك ، VENDORNAME ، وتغيير مسار adb.exe ، keytool.exe ، وما إلى ذلك وفقًا لنظامك.

ثم قم بتشغيل createproject.bat . سيخلق helloworld مجلد جديد. ستجد بعض الملفات .bat التي ستقوم بإنشاء تطبيقك!

createproject.bat

@echo off
SET APPNAME=helloworld
SET VENDORNAME=demo
SET SIGNKEYPASSWORD=abcdef12
SET ANTBATPATH="..\..\apache-ant-1.9.9-bin\bin\ant.bat"
SET ADBPATH="C:\Users\User\AppData\Local\Android\android-sdk\platform-tools\adb.exe"
SET KEYTOOLPATH="C:\Program Files\Java\jdk1.8.0_151\bin\keytool.exe"
SET JARSIGNERPATH="C:\Program Files\Java\jdk1.8.0_151\bin\jarsigner.exe"
SET ZIPALIGNPATH="C:\Users\User\AppData\Local\Android\android-sdk\build-tools\19.1.0\zipalign.exe"
SET ANDROIDBATPATH="C:\Users\User\AppData\Local\Android\android-sdk\tools\android.bat"

call %ANDROIDBATPATH% create project --target "android-16" --path %APPNAME% --activity %APPNAME% --package com.%VENDORNAME%.%APPNAME%

(
echo call %ANTBATPATH% debug
echo copy bin\*debug.apk .
) > %APPNAME%\1makedebug.bat


echo %ADBPATH% logcat > %APPNAME%\2adb_logcat.bat
echo %ADBPATH% devices > %APPNAME%\2adb_devices.bat
echo %ADBPATH% install -r %APPNAME%-debug.apk > %APPNAME%\2adb_install.bat
echo %ADBPATH% shell > %APPNAME%\2adb_shell.bat

(
echo call %ANTBATPATH% release
echo %JARSIGNERPATH% -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore "bin\%APPNAME%-release-unsigned.apk" app -storepass %SIGNKEYPASSWORD%
echo %ZIPALIGNPATH% 4 "bin\%APPNAME%-release-unsigned.apk" "%APPNAME%-release.apk"
echo pause
) > %APPNAME%\3makerelease_signed.bat

%KEYTOOLPATH% -genkey -keystore %APPNAME%\my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app -dname "cn=Unknown, ou=Unknown, o=Unknown, c=Unknown" -storepass %SIGNKEYPASSWORD% -keypass %SIGNKEYPASSWORD%

echo Finished.
pause




android-gradle