
2幎ååã«ãã¡ã¢åž³ã§AndroidçšHelloWorldãäœæãåéãèµ·åããèšäºãå ¬éããŸããã 圌女ã¯éåžžã«äººæ°ããããçŽ80,000åã®èŠèŽãç²åŸããŸããã Jack ToolChainãªã©ã®æ°ããããŒã«ã®åºçŸã«ãããèšäºãåçºè¡ããã³æŽæ°ããå¿ èŠãçããŸããã
Androidã®åŠç¿ãå§ãããšããIDEã䜿çšããã«ãAndroidã¢ããªã±ãŒã·ã§ã³ãå®å šã«æåã§äœæããã³ã³ã³ãã€ã«ãããã£ãã®ã§ãã ãããããã®äœæ¥ã¯ç°¡åã§ã¯ãªããããªãæéãããããŸããã ããããçµå±ã®ãšããããã®ã¢ãããŒãã¯éåžžã«æçšã§ãããIDEãé ãå€ãã®åŸ®åŠãªç¹ãæ確ã«ããŸããã
ã¡ã¢åž³ã®ã¿ã䜿çšããŠãéåžžã«å°ããªæè²çšAndroidã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã ãããŠããããã³ã³ãã€ã«ããã¢ã»ã³ãã«ããŠãããã€ã¹äžã§å®è¡ããŸããããã¯ãã¹ãŠã³ãã³ãã©ã€ã³ã䜿çšããŠè¡ããŸãã ã«èå³ããããŸããïŒ ãé¡ãããŸãã
ãšã³ããªãŒ
ãã³ãã¬ãŒãã¢ããªã±ãŒã·ã§ã³ãAndroid Studioã§ã©ãã»ã©è€éã§æ··ä¹±ããŠãããã«é©ããããŸããã åã«ãªãœãŒã¹ãå±±ç©ã¿ãããŠããŸãã ãããŠãããã»ã©ã§ã¯ãããŸããããã³ãŒããšã¹ã¯ãªããã䜿çšããŸãã ãããªããã°ãªããªãããšã¯ãHelloWorldã衚瀺ããããšã ãã§ãïŒ ããã«ãç§ã調ã¹ãæ¬ãšããã¥ã¢ã«ã¯ããã€ã¢ãã°ããã¯ã¹ã䜿çšããŠIDEAãŸãã¯Eclipse HelloWorldãäœæããæ¹æ³ã説æããŸã-ãããŠãããã«ãã¬ãŒã·ã§ã³ãããããåºãŠããŸãã ãããŠããããŒãã®äžãã§äœãèµ·ããã-æšæž¬ããã§ããŸããã
æè²ç®çã«çæ³çãªç¬èªã®ãã³ãã¬ãŒããããžã§ã¯ããäœæããŸãã äœåãªãã®ã¯ãªããæãå¿ èŠãªãã®ã ãããããŸãã ãããŠããããã©ã®ããã«çµã¿ç«ãŠãŠAndroidããã€ã¹ã§å®è¡ãããã詳现ã«åæããŸãã èšäºã®æåŸã«ãæçµãããžã§ã¯ããšãšãã«ã¢ãŒã«ã€ããããŠã³ããŒãããããã®ãªã³ã¯ããããŸã-質åãããå Žåã¯ãããã確èªã§ããŸãã
ãããã£ãŠããããžã§ã¯ãã®æ§æãšã¢ã»ã³ããªã®ããã»ã¹ã100ïŒ èªèããç解ããããšã«ãªããŸãã ãã®ãã¹ããããžã§ã¯ãã¯ãå°ãæ¹è¯ããããã¬ãŒãã³ã°ãç®çãšããŠããŸãããå®éã®ãããžã§ã¯ãã®åŒ·åºãªåºç€ãšããŠäœ¿çšã§ããŸãã
æºåãã
éå§ããã«ã¯ãã³ãã³ãã©ã€ã³ããŒã«ãããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããå¿ èŠããããŸãã ããããããŠã³ããŒãããããã®ãªã³ã¯ã¯ãAndroid StudioããŒãžïŒ https://developer.android.com/studio/index.html ïŒã®äžéšã«ãããŸã ã

Android SDK 24ã¯Android N ïŒ N ougat / 7ïŒã«ãããŸããã æ¡ä»¶ãåãå ¥ããã€ã³ã¹ããŒã©ãŒãããŠã³ããŒãããŠå®è¡ããŸãã ããã©ã«ãã®ãŸãŸã«ããŸãã CïŒ\ Users \ kciray \ AppData \ Local \ Android \ android-sdkãšãã圢åŒã®ãã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ãããŸãã ãã®æ¹æ³ãèŠããŠãããŠãã ãããç§ãã¡ã®äž»ãªããŒã«ã¯ããã«ãããŸãã
次ã«ãïŒ android-sdkãã©ã«ããŒããïŒSDKãããŒãžã£ãŒãèµ·åããããã©ã«ãã»ãããèšå®ããŸãã æ°ããJackã³ã³ãã€ã©ãªã©ãå¿ èŠãªãã®ã¯ãã¹ãŠæã£ãŠããŸãã JDK 8ãå¿ èŠã§ãã
ãã®èšäºãèªãåã®äž»ãªèŠä»¶ã¯ãã€ã³ã¹ããŒã«ãããŠãããœãããŠã§ã¢ã«å ããŠãEclipseãŸãã¯Android Studioã«ä»å±ã®Helloworldãæ¢ã«ããã€ã¹ã§å®è¡ã§ããããšã§ãã ã€ãŸã usbãã©ã€ããŒãæ§æããããã€ã¹ã§usbãããã°ãæå¹ã«ããå¿ èŠããããŸã...ãŸãã¯ããšãã¥ã¬ãŒã¿ãŒãäœæããŠæ§æããŸãã ãããã¯éåžžã«åºæ¬çãªãã®ã§ããããã®æ€èšã¯ãã®èšäºã®ç¯å²ãè¶ ããŠããŸã-ãããã¯ãŒã¯ã«é¢ããååãªæ å ±ããããŸãã ãšããã§ãæ¬ããããã€ãã®ç« ãèªãããšãäžå¿ èŠã§ã¯ãããŸãã-ãããã§ã¹ãããªãœãŒã¹ããããŠå®éã«ã¯Javaèšèªã®åºæ¬ãã©ã®ããã«é 眮ãããŠããããç解ããŠãã ããã ãããŠããã®èšäºã§ã¯ãã©ã®æ¬ãæ²é»ããŠãããã«ã€ããŠèª¬æããŸãã
ãããžã§ã¯ãå·ç
éå§ããã«ã¯ããããžã§ã¯ãã®ãããã©ã«ããŒãäœæããŸãã testappãšåŒã³ãŸããã ã ãã®äžã«ãããã«3ã€ã®ãã©ã«ããŒãäœæããŸã-bin ã res ã src ã
testappã§ç©ºã®ããã¹ããã¡ã€ã«ãäœæãããã®ååãAndroidManifest.xmlã«å€æŽããŸãã
以äžãè¿œå ããŸãã
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testapp"> <uses-sdk android:targetSdkVersion="24" /> <application android:label="TestApp"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
ããã§ã¯ãã¹ãŠãç°¡åã§ãã TestAppãšããã¢ããªã±ãŒã·ã§ã³ãäœæããèµ·åæã«MainActivityã¯ã©ã¹ãéå§ããŸãã ãã®å°ããªã¯ã©ã¹ãèšè¿°ããã ãã§ãã¢ããªã±ãŒã·ã§ã³ã®æºåã¯å®äºã§ãã å¿ èŠã«å¿ããŠã uses-sdk ã¿ã°ã®androidïŒtargetSdkVersionããããã£ãç·šéãã 䜿çšããŠããããŒãžã§ã³ãå ¥åããŸãã
次ã«ãæãåçŽãªãªãœãŒã¹ïŒæååHello test appïŒãäœæããŸãã å®éããã®è¡ãJavaã³ãŒãã«çŽæ¥æ¿å ¥ããããšã«ããããªãœãŒã¹ãªãã§å®è¡ã§ããŸãã ãã ããããã€ãã®ã¢ã»ã³ããªæé ã¯ãªãœãŒã¹ã§æ©èœããŸããèå³æ·±ãç¹ãèŠãããã«ãåŒãç¶ããããã䜿çšããŸãã
resãã©ã«ããŒã«valuesãã©ã«ããŒãäœæããŸãããã ãã¹ãŠã®ãªãœãŒã¹ã¯ãã©ã«ããŒã«åå²ããå¿ èŠããããŸãã 次ã«-空ã®strings.xmlãã¡ã€ã«ãäœæãããã®äžã«æžããŸãïŒ
<resources> <string name="hello">Hello test app!</string> </resources>
ãããç§ãã¡ãå¿ èŠãšãããã¹ãŠã®ãªãœãŒã¹ã§ãã ã·ã³ãã«ã§ããïŒ æ¬¡ã«ã srcå ã«comãã©ã«ããŒãäœæãããã®äžã«ãµã³ãã«ãã©ã«ããŒãäœæããããã«éå±€ã®äžäœã«ããtestappãã©ã«ããŒãäœæããŸãããããŠã MainActivity.javaã¯ã©ã¹ããããŸãã ããã«ã³ãŒããè¿œå ããŸãïŒ
package com.example.testapp; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Button button = new Button(this); button.setText("Big button"); button.setOnClickListener(v -> { new AlertDialog.Builder(MainActivity.this) .setTitle("From lambda") .setMessage(getString(R.string.hello)) .show(); }); setContentView(button); } }
ããã¯æãã·ã³ãã«ãªã¢ã¯ãã£ããã£ã§ãå šç»é¢ã«1ã€ã®ãã¿ã³ãå«ãŸããŸãã ãã®ãã¿ã³ãã¯ãªãã¯ãããšããªãœãŒã¹ã®è¡ã瀺ããã€ã¢ãã°ããã¯ã¹ã衚瀺ãããŸãã ã©ã ãã«æ³šæããŠãã ããïŒæ§ç¯v-> {...} ïŒã Jack ToolChainã䜿çšãããšãAndroidã§Java 8ã®å€ãã®æ©èœã䜿çšã§ããŸãã developer.android.comããã³source.android.comã§è©³çŽ°ãèªãããšãã§ããŸãã
ãã£ã¬ã¯ããªæ§é ã¯æ¬¡ã®ããã«ãªããŸã
â AndroidManifest.xml ââââbin ââââres â ââââvalues â strings.xml â ââââsrc ââââcom ââââexample ââââtestapp MainActivity.java
ãããŠããããå®éã«åçŽãªãããžã§ã¯ãã«å¿ èŠãªãã®ãã¹ãŠã§ãã æ¯èŒã®ããã«-
Android Studioã®HelloWorldïŒ2.1.3ïŒ
â .gitignore â build.gradle â gradle.properties â gradlew â gradlew.bat â local.properties â MyApplication2.iml â settings.gradle â ââââ.gradle â ââââ2.14.1 â ââââtaskArtifacts â cache.properties â cache.properties.lock â fileHashes.bin â fileSnapshots.bin â fileSnapshotsToTreeSnapshotsIndex.bin â taskArtifacts.bin â ââââ.idea â â .name â â compiler.xml â â encodings.xml â â gradle.xml â â misc.xml â â modules.xml â â runConfigurations.xml â â workspace.xml â â â ââââcopyright â â profiles_settings.xml â â â ââââlibraries â animated_vector_drawable_24_2_0.xml â appcompat_v7_24_2_0.xml â hamcrest_core_1_3.xml â junit_4_12.xml â support_annotations_24_2_0.xml â support_compat_24_2_0.xml â support_core_ui_24_2_0.xml â support_core_utils_24_2_0.xml â support_fragment_24_2_0.xml â support_media_compat_24_2_0.xml â support_v4_24_2_0.xml â support_vector_drawable_24_2_0.xml â ââââapp â â .gitignore â â app.iml â â build.gradle â â proguard-rules.pro â â â ââââlibs â ââââsrc â ââââandroidTest â â ââââjava â â ââââcom â â ââââexample â â ââââkciray â â ââââmyapplication â â ApplicationTest.java â â â ââââmain â â â AndroidManifest.xml â â â â â ââââjava â â â ââââcom â â â ââââexample â â â ââââkciray â â â ââââmyapplication â â â MainActivity.java â â â â â ââââres â â ââââdrawable â â ââââlayout â â â activity_main.xml â â â â â ââââmipmap-hdpi â â â ic_launcher.png â â â â â ââââmipmap-mdpi â â â ic_launcher.png â â â â â ââââmipmap-xhdpi â â â ic_launcher.png â â â â â ââââmipmap-xxhdpi â â â ic_launcher.png â â â â â ââââmipmap-xxxhdpi â â â ic_launcher.png â â â â â ââââvalues â â â colors.xml â â â dimens.xml â â â strings.xml â â â styles.xml â â â â â ââââvalues-w820dp â â dimens.xml â â â ââââtest â ââââjava â ââââcom â ââââexample â ââââkciray â ââââmyapplication â ExampleUnitTest.java â ââââbuild â ââââgenerated â mockable-android-24.jar â ââââgradle ââââwrapper gradle-wrapper.jar gradle-wrapper.properties
2幎åãããæªãèŠãã å®éãgradleã«ããèªååãgitããã³IDEã§ã®äœæ¥ã¯éåžžã«éèŠã§ãããAndroid ãåŠç¿ãã段éã§ã¯ã ããããç¡èŠããããšæããŸã ã
çµç«
ä»ãç§ãã¡ã¯æãéèŠã§å°é£ãªæ®µéã«æ¥ãŠããŸãã ã³ãã³ãã©ã€ã³ã§å€ãã®äœæ¥ãè¡ãã®ã§ãããã§æå®ãããã¹ãŠã®ã³ãã³ãã1ã€ã®ãã¡ã€ã«ã«èšè¿°ãã Compile.batãšããååãä»ããããšããå§ãããŸãã ã³ãã³ãã®åŸã®ãã¡ã€ã«ã®æåŸã«ã äžæåæ¢ãè¿œå ããŠãçµæãšãšã©ãŒïŒååšããå ŽåïŒã衚瀺ã§ããŸãã
ãã©ãã¯ã®æºå
䟿å®äžãç°¡æœã«ããããã«æåã«è¡ãããšã¯ããã¹ãæ ŒçŽããç¹å¥ãªå€æ°ãäœæããããšã§ãã ãŸããã¡ã€ã³ãã£ã¬ã¯ããªãå®çŸ©ããŸãããã JDKããã³Android SDKãžã®ãã¹ãçŸåšã®ãã®ã«çœ®ãæããå¿ èŠããããŸãã
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73 set ANDROID_HOME=C:\Users\kciray\AppData\Local\Android\android-sdk set DEV_HOME=%CD%
次-ããã°ã©ã ãžã®çŽæ¥ãã¹ã SDKã®ã«ã¿ãã°ãåç §ãããã¹ãŠãé©åã«é 眮ãããŠããããšã確èªããããšããå§ãããŸãã ãŸãããã¹ã«ååšããããŒãžã§ã³ã調æŽããŸãã
set JACK_JAR="%ANDROID_HOME%\build-tools\24.0.2\jack.jar" set AAPT_PATH="%ANDROID_HOME%\build-tools\24.0.2\aapt.exe" set ANDROID_JAR="%ANDROID_HOME%\platforms\android-24\android.jar" set ADB="%ANDROID_HOME%\platform-tools\adb.exe" set JAVAVM="%JAVA_HOME%\bin\java.exe"
ã¡ãªã¿ã«ãå€ãããŒãžã§ã³ã§ã¯ãaaptãŠãŒãã£ãªãã£ã¯platform-toolsã«ãããŸãã-ãããŠãç§ã¯ãããä»ã®èª°ããä»ã®å Žæã«å¿ã³èŸŒãããšãã§ããããšãé€å€ããŸããã ã ãã泚æããŠãã ããã ä»ãããã¹ãŠããã§ãã¯ããã°ãèšäºã®æ®ãã®éšåã¯ã¹ã ãŒãºã«é²ãã¯ãã§ãã
ãããŠãŸã -ããã€ãã®å€æ°ã§ãããã±ãŒãžãšã¯ã©ã¹ã匷å¶çµäºããŸãã ããããå€æŽããå Žå-ã³ãŒããå®è¡ããå¿ èŠã¯ãããŸãã-ãã¹ãŠã®èšå®ãæåã§ãã
set PACKAGE_PATH=com/example/testapp set PACKAGE=com.example.testapp set MAIN_CLASS=MainActivity
ã³ã³ãã€ã«æºå
ãããããäžæè°ãªã¯ã©ã¹Rãã©ã®ããã«æ©èœããã®ãçåã«æã£ãããšã¯ãããŸããïŒ å®éã圌ã¯æåã圌ã®è¶ èœåã®ããã§ç§ãåœæãããŸããã ã³ã³ãã€ã«æ®µéã§ãã¯ã©ã¹ã®ãã£ãŒã«ããä»ããŠä»ã®ãã£ã¬ã¯ããªã®XMLãã¡ã€ã«ã«ã¢ã¯ã»ã¹ããã«ã¯ã©ãããã°ããã§ããïŒ ããªã³ã³ãã€ã©ãããã§åäœããŠãããšä»®å®ããŸãã-å€æããããã«ã
å®éã«ã¯ãç¹å¥ãªãŠãŒãã£ãªãã£AAPTããããŸã-ãªãœãŒã¹ã®ãã£ã¬ã¯ããªã調ã¹ãŠ ãåãR.javaãäœæããŸãã ãã¹ãŠãéåžžã«ã·ã³ãã«ã§ããããšãããããŸãã-ããã¯åãªãã¯ã©ã¹ã§ãããæŽæ°å®æ°ãæã€ä»ã®éçãªãã¹ããããã¯ã©ã¹ã§æ§æãããŠããŸãã ããã ãã§ãïŒ æ¬¡ã®ããã«ãªããŸãã
R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */ package com.example.testapp; public final class R { public static final class attr { } public static final class string { public static final int hello=0x7f020000; } }
ããã§ã¯ããªããšäžç·ã«äœæããŸãããã ãããè¡ãã«ã¯ã次ã®ã³ãã³ãã䜿çšããŸãã
call %AAPT_PATH% package -f -m -S %DEV_HOME%\res -J %DEV_HOME%\src -M %DEV_HOME%\AndroidManifest.xml -I %ANDROID_JAR%
äœãäœã§ããããç解ããŸãããã AAPT-Android Asset Packaging Tool-æåéããAndroidããããã£ã®ããã«ãŒãã ãã®ãªãã·ã§ã³ïŒ
- ããã±ãŒãž -ãªãœãŒã¹ãããã¯ããå¿ èŠããããšèšããŸã ïŒè¿œå ãåé€ãããŸããïŒ
- -f-æ¢åã®R.javaãäžæžãããŸãïŒååšããå ŽåïŒ
- -m-R.javaã-Jã§æå®ããããã¹ã®ã«ãŒãã§ã¯ãªããé©åãªããã±ãŒãžã«é 眮ããŸã
- -S-ãã®ãªãã·ã§ã³ã®åŸããªãœãŒã¹ãå«ããã£ã¬ã¯ããªãæå®ããŸã
- -J-ãã®ãªãã·ã§ã³ã®åŸã«ãçµæã®R.javaãä¿åããå Žæãæå®ããŸã
- -I-ãã®ãªãã·ã§ã³ã®åŸãæ¥ç¶ãããã©ã€ãã©ãªãžã®ãã¹ã瀺ããŸã-android.jarããªã³ã«ããŸã
å®è¡åŸãåãR.javaãã¡ã€ã«ãsrcãã£ã¬ã¯ããªã«è¡šç€ºãããŸãã ã芧ãã ããã
ãããžã§ã¯ãã«éæ³ã¯ãããŸããããJavaå ã§ã¯å®å šã«æ§æçã«æ£ããã§ãã ãããŠä»ã楜ããéšåã§ãã javacã䜿çšããŠå€å žçãªJavaããã°ã©ã ãã³ã³ãã€ã«ããæ¹æ³ãèŠããŠããŸããïŒ ä»¥åã¯ãAndroidã¢ããªã±ãŒã·ã§ã³ã®ãã«ãã·ãŒã±ã³ã¹ã®äžéšã§ããããŸããã ãœãŒã¹ïŒ* .javaïŒãååŸããããããJVMãã€ãã³ãŒãïŒ* .classïŒãåãåããããããã®ã¿Dalvicã®ãã€ãã³ãŒãïŒ* .dexïŒãåãåããŸãã ã Jack ToolChainã®ç»å Žã«ããããã«ãã·ãŒã±ã³ã¹ã1ã¹ãããåæžãããŸããã ãœãŒã¹ïŒ* .javaïŒãããããã«Dalvic ïŒ* .dexïŒã®ãã€ãã³ãŒããååŸããŸãã
ãžã£ãã¯ã¯ã©ãã§å ¥æã§ããŸããïŒ ããã¯ã jack.jarã®åœ¢åŒã§build-toolsãã©ã«ããŒã«ãããéåžžã®Javaã¢ãŒã«ã€ããšããŠå®è¡ãããŸãã
%JAVAVM% -jar %JACK_JAR% --output-dex "%DEV_HOME%\bin" -cp %ANDROID_JAR% -D jack.java.source.version=1.8 "%DEV_HOME%\src\com\example\testapp\R.java" "%DEV_HOME%\src\com\example\testapp\MainActivity.java"
åŒæ°ã¯æ¬¡ã®ãšããã§ãã
- -jar -JVMã®æšæºãªãã·ã§ã³ãJavaã¢ãŒã«ã€ããå®è¡ããããšã瀺ããŸãã ãžã£ãã¯ãšã¯é¢ä¿ãããŸãã
- --output-dex-çµæã®dexãã¡ã€ã«ãé 眮ãããã©ã«ããŒã ãã³ã«å ¥ããŠãã ãã
- -D jack.java.source.version = 1.8- ãDãã¯ãããããã£ãèšå®ããŠããããšã瀺ããŸãã jack.java.source.versionã«ãããJava 8ã䜿çšããŠããããšã瀺ãããšãã§ããŸããããããªããšãã©ã ãã¯æ©èœããããšã©ãŒãçºçããŸãã ã³ãã³ãïŒ JAVAVMïŒ -jarïŒ JACK_JARïŒ --help-propertiesã䜿çšããŠãããããã£ã®å®å šãªãªã¹ãã衚瀺ã§ããŸãã
- [* .javaãã¡ã€ã«ã®ãªã¹ã] -ãœãŒã¹ã R.javaãšMainActivity.javaã® 2ã€ã®ãã¡ã€ã«ãããªã
ã³ãã³ãïŒ JAVAVMïŒ -jarïŒ JACK_JARïŒ --helpã䜿çšããŠãJackã®ãªãã·ã§ã³ã®å®å šãªãªã¹ãã衚瀺ã§ããŸãã
classes.dexãbinãã©ã«ããŒã«ããããšã確èªããŸãã ããã§ããªãœãŒã¹ãšäžç·ã«APKãã¡ã€ã«ã«ããã¯ããã ãã§ãã ããããã£ãŠã¿ãŸãããïŒ
call %AAPT_PATH% package -f -M %DEV_HOME%/AndroidManifest.xml -S %DEV_HOME%/res -I %ANDROID_JAR% -F %DEV_HOME%/bin/AndroidTest.unsigned.apk %DEV_HOME%/bin
ããã§ããªãã·ã§ã³ã¯R.javaãäœæãããšãã«äœ¿çšãããã®ãšäŒŒãŠããŸãã
- ããã±ãŒãž -ãªãœãŒã¹ãããã¯ããå¿ èŠããããšèšããŸã ïŒè¿œå ãåé€ãããŸããïŒ
- -f-æ¢åã®AndroidTest.unsigned.apkãäžæžãããŸãïŒååšããå ŽåïŒ
- -M-ãã®ãªãã·ã§ã³ã®åŸããããã§ã¹ããã¡ã€ã«ãžã®ãã¹ãæå®ããŸã
- -S-ãã®ãªãã·ã§ã³ã®åŸããªãœãŒã¹ãå«ããã£ã¬ã¯ããªãæå®ããŸã
- -I-ãã®ãªãã·ã§ã³ã®åŸãæ¥ç¶ãããã©ã€ãã©ãªãžã®ãã¹ã瀺ããŸã-android.jarããªã³ã«ããŸã
- -F-ãã®ãªãã·ã§ã³ã®åŸã«ãçµæã®AndroidTest.unsigned.apkãä¿åããå Žæã瀺ããŸã
- æåŸã®åŒæ°ã¯ãdexãã¡ã€ã«ããããã©ã«ããŒãžã®ãã¹ã§ã
AndroidTest.unsigned.apkãbinãã©ã«ããŒã«è¡šç€ºãããŸãã ãããŠãçç±ã®ããã«ãããåŒã³åºããŸããïŒ åœŒã«ã¯ããžã¿ã«çœ²åããããŸããã Androidã¯ã眲åã®ãªãã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ãšå®è¡ãçŠæ¢ããŠããŸãã ãããããããäœæããããšã¯äžèŠãããšæããã»ã©é£ãããããŸãã
call %JAVA_HOME%/bin/keytool -genkey -validity 10000 -dname "CN=AndroidDebug, O=Android, C=US" -keystore %DEV_HOME%/AndroidTest.keystore -storepass android -keypass android -alias androiddebugkey -keyalg RSA -v -keysize 2048 call %JAVA_HOME%/bin/jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore %DEV_HOME%/AndroidTest.keystore -storepass android -keypass android -signedjar %DEV_HOME%/bin/AndroidTest.signed.apk %DEV_HOME%/bin/AndroidTest.unsigned.apk androiddebugkey
å®éããããã®è¡ã¯Android SDKãšã¯é¢ä¿ã®ãªã2ã€ã®JavaãŠãŒãã£ãªãã£ãå®è¡ããŸããããããã¯å¿ é ã§ãã æåã¯AndroidTest.keystoreãã¡ã€ã«ãäœæãïŒååšã確èªïŒã2çªç®ã¯ãã®ãã¡ã€ã«ãAndroidTest.unsigned.apkã«æ¥ç¶ããŸãã AndroidTest.signed.apkãã¡ã€ã«ãå€æããŸãã ããããã®ãããªã¯ã€ã«ãã¯ã©ãããã¡ã€ã«ã§ãã ãã ããbatã¹ã¯ãªãããäœæãããããããå®è¡ããŸããèªåã¢ãŒãã§ããããã¹ãŠå®è¡ããŸãã
ãã®èšäºã§ã¯ããããã®ãŠãŒãã£ãªãã£ã®ãªãã·ã§ã³ã®è©³çŽ°ãªåæã«æéãè²»ããã¹ãã§ã¯ãªããšæããŸãã ãã€ã³ãããã£ããããã ãã§ã-AndroidTest.unsigned.apkãååŸãã AndroidTest.keystoreãã¡ã€ã«ã§çœ²åããŠã AndroidTest.signed.apkã«ä¿åããŸãã å¿ èŠã«å¿ããŠã ããã¥ã¡ã³ããèªãããšãã§ããŸã ã
ã èŠåïŒ-tsaãŸãã¯-tsacertãæäŸãããŠãããã ãã®jar ... ããšããèŠåã衚瀺ãããå¯èœæ§ãé«ããªããŸããã泚æã¯å¿ èŠãããŸãã ã
æã¡äžã
apkãã¡ã€ã«ãããããã³ã³ãã€ã«ãããã®ã§ãå®è¡ã§ããŸãã USBçµç±ã§ããã€ã¹ãæ¥ç¶ãããããšãã¥ã¬ãŒã¿ãŒãå®è¡ããŸãã ãããã
call %ADB% uninstall %PACKAGE% call %ADB% install %DEV_HOME%/bin/AndroidTest.signed.apk call %ADB% shell am start %PACKAGE%/%PACKAGE%.%MAIN_CLASS%
å®éãããã°ã©ã ãæ¢ã«ååšããå Žåãæåã®è¡ã¯ããã°ã©ã ãåé€ããŸãã ç¹°ãè¿ãèµ·åããå Žåã«äŸ¿å©ã§ãã 2çªç®-ããã€ã¹ãŸãã¯ãšãã¥ã¬ãŒã¿ãŒã«APKãã€ã³ã¹ããŒã«ããŸãã 3çªç®ã®ãã®ãèµ·åããŸãã 圌女ã®è°è«ã詳ããèŠãŠã¿ãŸãããã
- ã·ã§ã« -ããã€ã¹ã§ããã€ãã®ã³ãã³ããå®è¡ããã
- am-ã¢ã¯ãã£ããã£ãããŒãžã£ãŒã³ãã³ãã®å®è¡ã«äœ¿çš
- start-ã¢ã¯ãã£ããã£ãéå§ããã
- éå§ããããã±ãŒãžã®ååãšã¯ã©ã¹ã®å®å šãªååïŒããã±ãŒãžãå«ãïŒ
泚æ-ã€ã³ã¹ããŒã«äžã«ã確èªãã€ã¢ãã°ããã¯ã¹ãããã€ã¹ã«è¡šç€ºãããå ŽåããããŸãã æéå ã«æ¿èªããªãå Žåãã€ã³ã¹ããŒã«ã¯å€±æããŸã[INSTALL_FAILED_USER_RESTRICTED] ã ãŸãã質åããããããããŸãã-ãªãinstall -rã®ä»£ããã«uninstall / installãå®è¡ããŠãã ãã ã å®éšã®çŽåºŠã®ããã«ããããŸããã ãã®ã¹ã¯ãªããã¯ãã¢ã¯ãã£ããã£ã®ãã¹ãŠã®è£œåãå®å šã«åé€ããéå§ãããã³ã«ãŒãããäœæããŸãã éµããã install -rã䜿çšã§ããŸãããããŒã®åäœæãæ åœããã³ãŒããåé€ããå¿ èŠããããŸãã ããããªããšããšã©ãŒ[INSTALL_FAILED_UPDATE_INCOMPATIBLE]ãçºçããŸãã
ãã¹ãŠãããŸããã£ãå Žåã次ã®ãããªãã®ã衚瀺ãããŸãã

ãããã«
ãã¹ãŠã®ãã¡ã€ã«ãã¢ã»ã³ãã«ãããšããã£ã¬ã¯ããªããªãŒã¯æ¬¡ã®ããã«ãªããŸãã
â AndroidManifest.xml â AndroidTest.keystore â Clear.bat â Compile.bat â ââââbin â AndroidTest.signed.apk â AndroidTest.unsigned.apk â classes.dex â ââââres â ââââvalues â strings.xml â ââââsrc ââââcom ââââexample ââââtestapp MainActivity.java R.java
ããã§ãäœã¬ãã«ã§ã®Androidã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ããªãã©ã®ããã«è¡ãããããæ確ã«ç解ã§ããŸãã IDEã䜿çšããå Žå-ã¢ã»ã³ããªãçªç¶ééã£ãå ŽåïŒãããŠãããé »ç¹ã«çºçããå ŽåïŒ-ç¶æ³ãé©åã«è§£æ±ºã§ããŸãã ãŸããæçµçãªapkãã¡ã€ã«ã¯çŽ4ãããã€ãããæ¶è²»ããªãããšã«æ³šæããŠãã ããã
ãããžã§ã¯ãã¢ãŒã«ã€ããæçš¿ããŸã ã ããã«å¥ã®å°ããªã¹ã¯ãªããClear.batãè¿œå ããããšã«æ³šæããŠãã ããã ã¢ã»ã³ããªäžã«äœæããããã¹ãŠã®ãã¡ã€ã«ãåé€ããŸãã ãããŠãCompile.batã®æåã«åœŒã®ããŒã³ãã眮ããŸããã ãŸããã¬ã ã䜿çšããŠã³ã¡ã³ããè¿œå ããŸãã-ã¹ããããã€ã¹ããã
ãããã£ãŠãã¹ã¯ãªããã¯ã眲åãå«ããããžã§ã¯ãã®å®å šãªã¯ãªãŒãã³ã°ãšåæ§ç¯ãå®è¡ããããã€ã¹ã§ã®åé€ãã€ã³ã¹ããŒã«ãå®è¡ãè¡ããŸãã
ç§ã®ãªãã·ã§ã³
ããœã³ã³
OCïŒWindows 10 Pro x64
JDKïŒ1.8.0_73
Android SDKïŒ24
ã¢ãã€ã«æ©åš
ã¢ãã«ïŒMeizu MX4
AndroidïŒ5.1
OSïŒFlyme 5.6.8.9ããŒã¿